最小生成树matlab代码Kruskal算法,用于二维网络生成

一、Kruskal算法

        克鲁斯卡尔算法(Kruskal)是一种使用贪婪方法的最小生成树算法。 该算法初始将图视为森林,图中的每一个顶点视为一棵单独的树。 一棵树只与它的邻接顶点中权值最小且不违反最小生成树属性(不构成环)的树之间建立连边。

二、具体效果

最小生成树matlab代码Kruskal算法,用于二维网络生成_第1张图片

 

最小生成树法生成网络

三、代码

clc
clear
close all
P=[20,100;3,31;83,44;93,19;77,14;85,44;18,35;84,39;18,49;37,46;9,86;46,85;68,40;9,5;45,15;23,89;5,40;44,61;72,50;46,68];
%计算距离矩阵
D=inf*ones(size(P,1),size(P,1));
for i=1:size(P,1)-1
    for j=i+1:size(P,1)
            D(i,j)=norm(P(i,:)-P(j,:));
    end
end
plot(P(:,1),P(:,2),'.k','MarkerSize',20)
hold on
%Kruskal算法
temp=[];   %已经选择的节点
while size(unique(temp),1)

你可能感兴趣的:(matlab代码,算法,matlab,图论)