Floyd-Warshall算法如何工作以及什么是K?

时间:2011-11-23 13:48:45

标签: algorithm graph floyd-warshall

我很难理解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 

kij是迭代的变量,并且迭代到n值,我猜 它是一个嵌套循环,然后它查看每个节点,然后找到最短路径?

2 个答案:

答案 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]。