圖論01—最短路矩陣(FLOYD)演算法
阿新 • • 發佈:2019-01-03
%========================================================
%最短路矩陣演算法,FLOYD演算法
%針對性:方案預算,能求出所有點之間的最短路(最小費用等)%========================================================
function D=zuiduanjulijuzhen(quanzhijuzhen)
n=length(quanzhijuzhen);D=quanzhijuzhen;
m=1;
while m<=n
for i=1:n
for j=1:n
if D(i,j)>D(i,m)+D(m,j)
D(i,j)=D(i,m)+D(m,j);
end
end
end
m=m+1;
end
D;
%========================================================
%評價:矩陣最短路演算法,可以求所有點對點的最短距離,但有其缺點,
%就是沒有給出具體路徑,程式中D是最短距離矩陣
%========================================================
例:求下圖中各個點之間的最短距離。
解:(1)寫權值矩陣
quanzhijuzhen =[ 0 2 8 1 Inf Inf Inf Inf
2 0 6 Inf 1 Inf Inf Inf8 6 0 7 5 1 2 Inf
1 Inf 7 0 Inf Inf 9 Inf
Inf 1 5 Inf 0 3 Inf 8
Inf Inf 1 Inf 3 0 4 6
Inf Inf 2 9 Inf 4 0 3
Inf Inf Inf Inf 8 6 3 0]
(2)帶入程式
>> D=zuiduanjulijuzhen(quanzhijuzhen)
說明:第1行表示點1與其他點的距離,同理i=2-8行表示i點與其他點的距離。