码迷,mamicode.com
首页 > 其他好文 > 详细

floyd三重循环最外层为什么一定是K

时间:2020-02-10 22:36:18      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:img   就会   ima   mic   情况下   question   png   info   算法   

Floyd算法为什么把k放在最外层? - 知乎 https://www.zhihu.com/question/30955032
高票答案:

技术图片

 

 

简单地总结一下:K没放在最外面一定是错的,但是在某些数据比较水的情况下可能会AC
floyd的本质是DP,K表示的是的DP的阶段,经过这个点松弛或者不经过这个点,如果你把K放在最里面,有可能某些点没有松弛到,所求的边就不会是最优解

如下例子说明:

技术图片

 

 

from to cost

   1   2    4
   2   3    5
   3   4    3
   4   5    2
   1   5    1

如果以i,j,k的顺序去遍历,那么就会出现如下情况:
假设运行到i=1 j=3
k=1,1->3=inf
k=2,1->3=9
k=3, 1->3:9
k=4,还是不变 ,本来正常情况下不是可以通过4去松弛1->3的距离吗
但最优解是1->5->4->3=6
为什么会这样呢,因为在计算1->3的距离时,我们并没有去松弛 1->4的距离,造成无法通过4去松弛1->3

 

floyd三重循环最外层为什么一定是K

标签:img   就会   ima   mic   情况下   question   png   info   算法   

原文地址:https://www.cnblogs.com/simaomao/p/12292903.html

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