You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Floyd-Warshall算法路径追踪的更新规则正确性探讨

Floyd-Warshall算法路径追踪的更新规则疑问

维基百科给出了Floyd-Warshall算法带路径追踪的伪代码,但我对其中的更新规则存在疑问:原逻辑使用dist[i][k] + dist[k][j]更新dist[i][j],是否应替换为graph[i][k] + dist[k][j](其中graph[i][k]为边(i,k)的权重)?若i到k的路径长于一条边,原路径追踪逻辑可能无法正确工作。此外,若修正规则成立,该版本还可用于追踪路径跳数,比如寻找不超过N跳的最短路径。

procedure FloydWarshallWithPathReconstruction() is
    对每条边 (u, v) 执行:
        dist[u][v] = w(u, v)  // 边(u, v)的权重
        prev[u][v] = u
    对每个顶点 v 执行:
        dist[v][v] = 0
        prev[v][v] = v
    对 k 从 1 到 |V| 执行:// 标准Floyd-Warshall实现
        对 i 从 1 到 |V| 执行:
            对 j 从 1 到 |V| 执行:
                如果 dist[i][j] > dist[i][k] + dist[k][j] 则  // 是不是应该改成 dist[i][j] > graph[i][k] + dist[k][j]???
                    dist[i][j] = dist[i][k] + dist[k][j]  // 是不是应该改成 dist[i][j] = graph[i][k] + dist[k][j]???
                    prev[u][v] = prev[k][j]

procedure Path(u, v) is
    如果 prev[u][v] = null 则
        返回 []
    path = [v]
    当 u ≠ v 时:
        v = prev[u][v]
        path.prepend(v)
    返回 path

内容的提问来源于stack exchange,提问作者RomanGirin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:01:00