码迷,mamicode.com
首页 > 编程语言 > 详细

图论之最短路01——最短路矩阵(FLOYD)算法

时间:2015-08-21 13:45:46      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:矩阵算法 floyd算法 matlab   图论   

%========================================================

%最短路矩阵算法,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点与其他点的距离。


版权声明:博主文章可以被非商用转载,但请务必注明出处,因水平有限,难免出错,在此免责。

图论之最短路01——最短路矩阵(FLOYD)算法

标签:矩阵算法 floyd算法 matlab   图论   

原文地址:http://blog.csdn.net/lzx19901012/article/details/47830467

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!