資源簡介
利用matlab實現了網絡最短路徑的搜索算法,通過輸入鄰接矩陣和需要輸出最短路徑的始節點和終節點,即可得到這連點間可行的最短路。
代碼片段和文件信息
function?[dindex1]=mydijkstra2(asb);
%從起點出發,尋找遍歷所有點的最短路徑
%?輸入:a—鄰接矩陣,a(i,j)是指i到j之間的距離,可以是有向的
%?sb—起點的標號
%?輸出:d—從起點開始便利所有標號的最短路距離?index1—從起點開始便利所有標號的最短路路徑
%pb用來存放P標號信息?index1為標號頂點順序?index2標號頂點索引
a(a==0)=inf;
pb(1:length(a))=0;pb(sb)=1;index1=sb;index2=ones(1length(a));
%d用來存放最短通路的值
d(1:length(a))=inf;d(sb)=0;
temp=sb;%最新的P標號的起點
while?sum(pb) ????tb=find(pb==0);
????d(tb)=min(d(tb)d(temp)+a(temptb));
????tmpb=find(d(tb)==min(d(tb)));
????temp=tb(tmpb(1));%可能有多個點同時達到最小值,只取其中一個
????pb(temp)=1;
????index1=[index1temp];
????temp2=find(d(index1)==d(temp)-a(tempindex1));
????index2(temp)=index1(temp2(1));
end
end
????
????????tle>鏈皢瀵硅薄寮曠敤璁劇疆鍒板璞$殑瀹炰緥銆?/title>
????????ta?name=“viewport“?content=“width=device-width“?/>
??
- 上一篇:坐標輪換法求最優解
- 下一篇:遺傳算法求解VRP問題matlab
評論
共有 條評論