algorithm - Floyd-Warshall 算法 - 为什么这个顺序?

标签 algorithm loops

在算法中,最短 [u,v,x] 有 3 个循环 x 从 1 - n, 你从 1 - n, v 从 1 - n。

为什么循环来自 x,u,v 而不是 x,v,u 或 u,v,x?

最佳答案

假设(u,v)是顶点的索引,x表示索引,以便我们找到顶点之间的最短距离 u和顶点 v只有中间的那些顶点编号为 <= x .

因此 dist[u,v,x] 的重复出现使用 dist[u,v,x-1] , dist[u,x,x-1]dist[x,v,x-1] .

由于在 u,v,x 的计算中涉及三个顶点 ( dist[u,v,x] ) , 所以我们应该已经计算出 dist计算前所有三对的 dist[u,v,x] .

因此,x 的循环必须是最外层的循环。内部循环可以是 v,uu,v因为两者都是顶点。

关于algorithm - Floyd-Warshall 算法 - 为什么这个顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32926291/

相关文章:

C++ 创建一个函数来读取 .txt 文件并检查以确保文件存在,但我的循环不工作

algorithm - 字符串切割的动态规划练习

algorithm - 算法设计手册中的乐透彩票覆盖范围?

java - Java 函数中的 Continue 语句

c++ - 在 map 中迭代 map

c# - 在for循环中为对象赋值

c - C中数组的和

java - 我的 Warshall 算法缺少什么?

algorithm - Every-case 时间复杂度的概念

json - SWIFT 2 : Loop through JSON array