【问题标题】:How does Floyd-Warshall algorthm work and what is K?Floyd-Warshall 算法是如何工作的,K 是什么?
【发布时间】:2012-01-04 19:25:31
【问题描述】:

我很难理解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 值,我猜 它是一个嵌套循环,然后它查看每个节点的次数少于它找到最短路径吗?

【问题讨论】:

  • cstheory 是针对研究级 CS 的,所以问题属于这里。也就是说,OP 需要处理这 0 个赞成票和 0 个接受的答案
  • 你的算法错了——应该是 Dik + Dkj

标签: algorithm graph floyd-warshall


【解决方案1】:

在 Floyd-Warshall 中,k 的一个非常简化的含义是图中的“路点”。最后两行可以解释如下:“如果你可以从 i 到 k,然后从 k 到 j,通过你迄今为止找到的任何路径,比从 i 到 j 更快,那么从 i 到 j 到 k 的路径变为新的最短路径”。

【讨论】:

    【解决方案2】:

    K 表示中间顶点。所以,外循环基本上说让第 K 个顶点作为中间停止点。内部的两个循环然后检查邻接矩阵中的每个项目,并检查使用 K 的距离(使用 K 作为中间顶点)是否小于从顶点 i 到 j 的距离(位置 i,j 在邻接矩阵 )。如果距离更小,则更新 d[i,j]。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 2015-01-31
      • 2018-11-11
      • 1970-01-01
      • 2011-02-10
      • 2014-06-28
      • 2012-06-02
      相关资源
      最近更新 更多