参考论文:https://wenku.baidu.com/view/1ea4660ec1c708a1294a449e.html
求最短路:
a=zeros(53); a(50,1 )=6.0;a(50,53)=12.9;a(50,38)=11.5;a(50,2)=9.2;a(50,48)=19.8;a(50,51)=10.1;a(1,36)=10.3; a(1,37)=5.9;a(1,38)=11.2; a(2,3)=4.8;a(2,5)=8.3;a(3,38)=7.9;a(3,39)=8.2;a(4,39)=12.7;a(4,8)=20.4;a(5,48)=11.4;a(5,39)=11.3;a(5,6)=9.7; a(6,48)=9.5;a(6,7)=7.3;a(6,47)=11.8;a(7,39)=15.1;a(7,40)=7.2;a(7,47)=14.5;a(8,40)=8.0; a(9,40)=7.8;a(9,41)=5.6;a(10,41)=10.8;a(11,45)=13.2;a(11,40)=14.2;a(11,42)=6.8; a(12,42)=7.8;a(12,41)=12.2;a(12,43)=10.2;a(13,44)=16.4;a(13,45)=9.8;a(13,42)=8.6;a(13,14)=8.6; a(14,15)=15;a(14,43)=9.9;a(15,44)=8.8;a(16,17)=6.8;a(16,44)=11.8;a(17,22)=6.7;a(17,46)=9.8; a(18,46)=9.2;a(18,45)=8.2;a(18,44)=8.2;a(19,20)=93;a(19,47)=7.2;a(19,45)=8.1; a(20,21)=7.9;a(20,25)=6.5;a(20,47)=5.5;a(21,23)=9.1;a(21,25)=6.5;a(21,46)=4.1; a(22,23)=10.0;a(22,46)=10.1;a(23,24)=8.9;a(23,49)=7.9;a(24,27)=18.8;a(24,49)=13.2;a(25,49)=8.8;a(25,48)=12.0; a(26,27)=7.8;a(26,51)=10.5;a(26,49)=10.5;a(27,28)=7.9;a(28,52)=8.3;a(28,51)=12.1; a(29,52)=7.2;a(29,53)=7.9;a(29,51)=15.2;a(30,32)=10.3;a(30,52)=7.7; a(31,32)=8.1;a(31,33)=7.3; a(31,53)=9.2;a(32,33)=19;a(32,35)=14.9;a(33,36)=7.4; a(34,35)=8.2;a(34,36)=11.5;a(34,13)=17.6;a(37,38)=12.2;a(36,53)=8.8;a(37,38)=11.0;a(44,45)=15.8;a(48,49)=14.2; a=a+a'; d=[]; [b,c]=find(a>0); for i=1:length(b) d=[d;a(b(i),c(i))]; end DG=sparse(b,c,d); UG=tril(DG); bg=biograph(UG,[],'ShowArrows','off','ShowWeights','on'); set(bg.nodes,'shape','circle'); view(bg) [dist,path,pred]=graphshortestpath(DG,1,'directed',false)
求最小生成树:
clc;clear; a=zeros(53); a(50,1 )=6.0;a(50,53)=12.9;a(50,38)=11.5;a(50,2)=9.2;a(50,48)=19.8;a(50,51)=10.1;a(1,36)=10.3; a(1,37)=5.9;a(1,38)=11.2; a(2,3)=4.8;a(2,5)=8.3;a(3,38)=7.9;a(3,39)=8.2;a(4,39)=12.7;a(4,8)=20.4;a(5,48)=11.4;a(5,39)=11.3;a(5,6)=9.7; a(6,48)=9.5;a(6,7)=7.3;a(6,47)=11.8;a(7,39)=15.1;a(7,40)=7.2;a(7,47)=14.5;a(8,40)=8.0; a(9,40)=7.8;a(9,41)=5.6;a(10,41)=10.8;a(11,45)=13.2;a(11,40)=14.2;a(11,42)=6.8; a(12,42)=7.8;a(12,41)=12.2;a(12,43)=10.2;a(13,44)=16.4;a(13,45)=9.8;a(13,42)=8.6;a(13,14)=8.6; a(14,15)=15;a(14,43)=9.9;a(15,44)=8.8;a(16,17)=6.8;a(16,44)=11.8;a(17,22)=6.7;a(17,46)=9.8; a(18,46)=9.2;a(18,45)=8.2;a(18,44)=8.2;a(19,20)=93;a(19,47)=7.2;a(19,45)=8.1; a(20,21)=7.9;a(20,25)=6.5;a(20,47)=5.5;a(21,23)=9.1;a(21,25)=6.5;a(21,46)=4.1; a(22,23)=10.0;a(22,46)=10.1;a(23,24)=8.9;a(23,49)=7.9;a(24,27)=18.8;a(24,49)=13.2;a(25,49)=8.8;a(25,48)=12.0; a(26,27)=7.8;a(26,51)=10.5;a(26,49)=10.5;a(27,28)=7.9;a(28,52)=8.3;a(28,51)=12.1; a(29,52)=7.2;a(29,53)=7.9;a(29,51)=15.2;a(30,32)=10.3;a(30,52)=7.7; a(31,32)=8.1;a(31,33)=7.3; a(31,53)=9.2;a(32,33)=19;a(32,35)=14.9;a(33,36)=7.4; a(34,35)=8.2;a(34,36)=11.5;a(34,13)=17.6;a(37,38)=12.2;a(36,53)=8.8;a(37,38)=11.0;a(44,45)=15.8;a(48,49)=14.2; a=a+a'; result=[];p=1;tb=2:length(a); while (length(result)~=length(a)-1) % ~=表示不等于 temp=a(p,tb);temp=temp(:); d=min(temp); [jb,kb]=find(a(p,tb)==d); j=p(jb(1));k=tb(kb(1)); result=[result,[j;k;d]]; p=[p,k]; tb(find(tb==k))=[]; end result;