求最小生成树matlab源程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%用prim算法求最小生成树
clc;clear;
a=xlsread('shuju.xls');%输入数据,A-Z依次用36-53表示
a(find(a==0))=inf;%构造权矩阵a
result=[];%用于存放最小生成树的顶点和权,d的初值为[]
p=1;tb=2:length(a);%从顶点v1出发
while length(result)~=length(a)-1
temp=a(p,tb);temp=temp(:);
d=min(temp);%找最小边
[jb,kb]=find(a(p,tb)==d);%找出该最小边的顶点存入jb,jk中
j=p(jb(1));k=tb(kb(1));
result=[result,[j;k;d]];%j,k:分别表示生成树边的起点和终点,d:表示权
p=[p,k];tb(find(tb==k))=[];
end
result
s=sum(result(3,:)) %求最小生成树的权之和

相关文档
最新文档