请教一道图论题目3
清华大学出的一本书上求克鲁斯卡尔的算法为:
type edgenode=record
fromvex,endvex:1..n;
weight:integer;
edgeset=array[1..n] of edgenode
Procedure kruskal(ge:edgeset;var c:edgeset);
var s:set of 1..n;
i,j,k,m1,m2:integer;
begin
for i:=1 to n do s[i]:=[i];
i:=1;j:=1;
while (i<=n-1)do
begin
for k:=1 to n do
if (ge[j].fromvex in s[k]) then m1:=k;
if (ge[j].endvex in s[k]) then m2:=k;
if (m1<>m2) then
c[i]:=ge[j];
i:=i+1;
s[m1]:s[m1]+s[m2];
s[m2]:=[ ];
end;
j:=j+1;
end
总感觉这个程序不对,按照克鲁斯的算法是从最小权开始,可这个程序没有比较,我的看法对吗?如果对,正确的算法是什么?