所有结点对最短路径

计算带权有向图中每对顶点之间的最短路径权重,可用动态规划、矩阵乘法或组合单源算法求解

定义

形式化定义

输入: 带权有向图 ,权重函数 ,以权重矩阵 表示

  • ,则 为边 的权重
  • ,则
  • 对所有

输出: 一个 矩阵 ,其中 为从顶点 到顶点 的最短路径权重

  • 若从 不存在路径,则
  • 若存在从 可达的负权环,则

核心性质

性质描述
朴素方法对每个顶点运行单源算法:Bellman-Ford ,Dijkstra
Floyd-Warshall,动态规划,适合稠密图
Johnson算法,组合Bellman-Ford + Dijkstra,适合稀疏图
矩阵乘法(慢速),逐步扩展路径边数
矩阵乘法(快速),重复平方技术
Strassen优化,理论意义

关系网络

graph LR
    A["所有结点对最短路径"] --> B["Floyd-Warshall算法"]
    A --> C["Johnson算法"]
    A --> D["矩阵乘法方法"]
    D --> E["SLOW-APSP"]
    D --> F["FASTER-APSP"]
    A --> G["单源最短路径"]
    G --> H["Bellman-Ford算法"]
    G --> I["Dijkstra算法"]
    C --> H
    C --> I

章节扩展

第23章:所有结点对的最短路径

CLRS第23章介绍了三种解决APSP问题的方法:

1. 矩阵乘法方法(23.1节):

  • 定义 为从 的最多 条边的最短路径权重
  • 递推:,等价于 半环上的矩阵乘法
  • 慢速版本:;快速版本(重复平方):
  • 理论价值:揭示APSP与矩阵乘法的代数联系,可用Strassen算法突破立方复杂度

2. Floyd-Warshall算法(23.2节):

  • 定义 为中间顶点编号不超过 的最短路径权重
  • 递推:
  • 时间 ,空间 (就地更新),代码极其简洁

3. Johnson算法(23.3节):

  • 用Bellman-Ford计算势函数 ,重赋权 使所有边权非负
  • 对重赋权后的图运行 次 Dijkstra
  • 总时间 ,稀疏图上优于Floyd-Warshall

补充

补充说明

  • 半环(热带半环)上的矩阵乘法不仅用于最短路径,还广泛应用于调度问题、自动机理论、图像处理等领域
  • 重复平方技术是一种通用加速方法,与快速幂思想一致:利用结合律将线性次数迭代压缩为对数次数
  • APSP问题的下界为 (需要输出 个值),但目前未知的下界是否更高

参见