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

最短路径之floyd算法

时间:2015-08-04 22:21:18      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

今天继续加上最短路径的算法学习------floyd算法

2.floyd算法,(罗伯特·弗洛伊德)-----各个顶点间的最短路径

求的是在一个图中,各个顶点间的最短路径。

 

 

算法描述

1)算法思想

各个顶点间的最短路径的情况,不外乎,两种情况。一是,点点相连,另一是,通过若干个中间点相连。因此,对于每个顶点来说,就直接点,判断在点u,v之间,如果插入k会不会使路径更短,如果是,就把值传递过去。不是,就不变。对于每个点都这么的去判断每两个点间的插入情况就行了。

2)算法步骤

a.初始化,首先把,数组矩阵建立好,点到自己的赋值0,不能到的赋值MAX,能到的根据输入值。

b.使用三个for循环,第一个for控制的是插入点,第二个for和第三个for控制的是u,v。然后判断(假设数组S),S[u][v]>S[u][k]+S[k][v] (赋值为MAX就是在这里考虑的)   是否成立。

3)算法心得

看了很多人的一些自己感悟,看了挺多,然后自己参悟。其中有一点,最让我无语的就是那个图了,干嘛那么说,让人绕了一大圈。那张图,说把第K行第K列和对角线划掉,在这上面的的值是不会变的,其他的值会变,会变的就是变成了更短的路径了。其实那个K就在那个时候的插入点,来判断如果在u和v之间,加入K会不会更短。而第K行,第K列,都有K自身,上面初始化的时候,把点到自己的赋值为0,就是这个考虑,直接S[k][v]>0+S[k][v],这就是原来的,所以不变。

最短路径之floyd算法

标签:

原文地址:http://www.cnblogs.com/psurge/p/4703258.html

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