%========================================================
%最短路矩阵算法,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 Inf
8 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点与其他点的距离。
版权声明:博主文章可以被非商用转载,但请务必注明出处,因水平有限,难免出错,在此免责。