2023年8月1日发(作者:)
matlab实现kruskalmatlab 实现kruskal算法function [T,v,c] =kruskal(b)m=size(b,1);%图中的边数 后⾯的参数1是指所求矩阵维度的维数 ,1 2 3 维,n = max(b(1:2*m));%图中的点数[B,index]=sortrows(b,3);%对b进⾏排序B=B'%转置t = 1:n;k=0;T =[];c =0;for i=1:m if t(B(1,i))~=t(B(2,i))%判断第i条边是否与树中的边形成圈 k=k+1; T(1:2,k)=B(1:2,i); c=c+B(3,i); tmin=min(B(1,i),B(2,1)); tmax=max(B(1,i),B(2,i)); for j=1:n%将该边的两点标记, if t(j)==tmax t(j)=min(tmin,t(tmin)); end end end if k==n-1 break; endendv = zeros(n);k=size(T,2);for i=1:k v(T(2*i-1),T(2*i))=1; v(T(2*i),T(2*i-1))=1;end
2023年8月1日发(作者:)
matlab实现kruskalmatlab 实现kruskal算法function [T,v,c] =kruskal(b)m=size(b,1);%图中的边数 后⾯的参数1是指所求矩阵维度的维数 ,1 2 3 维,n = max(b(1:2*m));%图中的点数[B,index]=sortrows(b,3);%对b进⾏排序B=B'%转置t = 1:n;k=0;T =[];c =0;for i=1:m if t(B(1,i))~=t(B(2,i))%判断第i条边是否与树中的边形成圈 k=k+1; T(1:2,k)=B(1:2,i); c=c+B(3,i); tmin=min(B(1,i),B(2,1)); tmax=max(B(1,i),B(2,i)); for j=1:n%将该边的两点标记, if t(j)==tmax t(j)=min(tmin,t(tmin)); end end end if k==n-1 break; endendv = zeros(n);k=size(T,2);for i=1:k v(T(2*i-1),T(2*i))=1; v(T(2*i),T(2*i-1))=1;end
发布评论