資源描述:
《Dijstra 求解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Dijstra求解clcclearalla=[110008250;9185500;1445560;7270570;3735670;2620995;100801435;100252280;71602525;138452680;119353050;78503545;65854185;76305200;134055325;21255975;153657045;141657385;88258075;58558165;7808355;127708560;22008835;147659055;77909330;44359525;108609635;1038510500;5659765;2
2、5809865;15659955;939510100;1483510365;125010900;728011065;1530511375;1239011415;641011510;1391511610;951012050;834512300;493013650;1326514145;1418014215;303015060;1091514235;233014500;773514550;88514880;1157515160;801015325];%a是各個(gè)點(diǎn)的坐標(biāo)fori=1:51forj=1:51t=a(i,:)-a(j,:);c(i,j)=sqrt(t(1)^2+t(2)
3、^2);%兩點(diǎn)之間的直線距離endenda=[[13;18;220;24;38;34;42;515;52;61;718;71;812;914;910;1018;107;1112;1213;1225;1215;1318;1319;1311;1418;1416;1417;1421;1522;1525;1623;1723;1831;1924;2022;2126;2136;2117;2230;2317;2431;2541;2519;2529;2731;2833;2922;3028;3041;3126;3134;3235;3223;3346;3328;3440;3538;3645;36
4、27;3740;3836;3927;4034;4045;4144;4137;4146;4243;4249;4338;4448;4450;4550;4542;4648;4740;4844;4950;4942;5040;018;021;026];%通路表b=zeros(51);fori=1:83b(a(i,1)+1,a(i,2)+1)=1;b(a(i,2)+1,a(i,1)+1)=1;enda=b.*c;fori=1:51forj=1:51ifa(i,j)==0a(i,j)=inf;endifi==ja(i,j)=0;endendendw=a;forp=1:51n=size(w,
5、1);w1=w(p,:);fori=1:nl(i)=w1(i);z(i)=1;ends=[];s(1)=1;u=s(1);k=1;whilekl(u)+w(u,i)l(i)=l(u)+w(u,i);z(i)=u;endendendendll=l;fori=1:nforj=1:kifi~=s(j)ll(i)=ll(i);elsell(i)=inf;endendendlv=inf;fori=1:nifll(i)6、1a=l;t=z;elsea=[a;l];t=[t;z];endendfori=1:51a(i,i)=inf;%把相同的點(diǎn)賦值為無窮大endsavew.txta-ascii;%保存最小距離savet.txtt-ascii;%保存最小路徑經(jīng)過的點(diǎn)問題一的求解clearallclcformatshortw=[…………];p1=7;p2=10;sum=0;w(:,1)=inf;w(:,p1)=inf;w(:,p2)=inf;w(13,16)=inf;w(16,13)=inf;x1=[1,p1];x2=[p2,1];fori=1:15[s1,t1]=min(w(p1,:));[s2,
7、t2]=min(w(p2,:));sum=sum+s1+s2;w(:,t1)=inf;w(:,t2)=inf;p1=t1;p2=t2;ift1==9
8、t2==9disp('到達(dá)24時(shí)所走的距離')disp(sum)T=sum/1000/24+3*i/60;disp('到24所用的時(shí)間')disp(T)endift1==t2x1=[x1,t1];x=[x1,x2];break;endx1=[x1,t1];x2=[t2,x2];x=[x1,x2];enddisp('順序?yàn)椋?)disp(x)disp('總的