我很难理解Floyd-Warshall algorithm。我知道它是如何工作的 就像在我知道如何手工完成它,但我需要通过计算机来理解它 感知。
FOR k <-- 1 TO N DO
FOR i <-- 1 TO N DO
FOR j <-- TO N DO
IF Djk + Dkj < DiJ THEN
Dij <-- djk + dkj
k
,i
和j
是迭代的变量,并且迭代到n
值,我猜
它是一个嵌套循环,然后它查看每个节点,然后找到最短路径?
答案 0 :(得分:4)
Floyd-Warshall中k的大致简化含义是图中的“路径点”。最后两行可以解释如下:“如果你可以从i到k然后从k到j比从i到j通过你到目前为止找到的任何路径更快,那么从i到j到k的路径变为新的最短路径“。
答案 1 :(得分:1)
K表示中间顶点。因此,外环基本上是说让第K个顶点成为中间停止点。然后内部两个循环检查邻接矩阵中的每个项目,并检查使用K(使用K作为中间顶点)的距离是否小于从顶点i到j的距离(邻接位置i,j中的数字)矩阵)。如果距离较小,则更新d [i,j]。