floyed一个总是讲不清楚的算法

2021-03-19 00:27

阅读:525

标签:过程   不清楚   一个   代码   修改   jpg   顺序   http   讲解   

技术图片
在上述讲解中,举例所有点先经过1号点,再经过2号点,得到一个经过1、2号点的最短路,比如4-3最短路是10。
那么问题来了,讲解中,经过1、2、3...n号点是按照顺序经过的,那么如果先枚举所有点经过2号点,再经过1号点,得到的最短路和上述方式结果一样么?
技术图片
比如是这样的。
我们可以模拟这个过程,那么将得到先通过1号点修改了2-3的最短路,在代码第一行。然后求4-3最短路时,经过2号点,而2-3在经过1号点时已经被修改成了当前最优。因此经过的点的顺序是没有影响的。

只经过1号点
**f[2][3] = min(f[2][1] + f[1][3], f[2][3]) = 5**
f[2][4] = min(f[2][1] + f[1][4], f[2][4]) = ∞
f[3][2] = min(f[3][1] + f[1][4], f[3][2]) = ∞
f[3][4] = min(f[3][1] + f[1][4], f[3][4]) = 1 
f[4][2] = min(f[4][1] + f[1][2], f[4][2]) = 5
f[4][3] = min(f[4][1] + f[1][3], f[4][3]) = ∞

再累计经过号点求最短
f[1][3] = min(f[1][2] + f[2][3], f[1][3]) = 3
f[1][4] = min(f[1][2] + f[2][4], f[1][4]) = ∞
f[3][1] = min(f[3][2] + f[2][1], f[3][1]) = ∞
f[3][4] = min(f[3][2] + f[2][4], f[3][4]) = 1
f[4][1] = min(f[4][2] + f[2][1], f[4][1]) = 7
**f[4][3] = min(f[4][2] + f[2][3], f[4][3]) = 5 + 5**

floyed一个总是讲不清楚的算法

标签:过程   不清楚   一个   代码   修改   jpg   顺序   http   讲解   

原文地址:https://www.cnblogs.com/caterpillor/p/13765029.html


评论


亲,登录后才可以留言!