相关笔记

概览

本节系统证明单源最短路径问题中的五个基础引理,这些引理构成了所有最短路径算法(Bellman-Ford、Dijkstra、DAG 最短路径等)正确性的理论基础。核心引理包括:三角不等式(Triangle Inequality)、上界性质(Upper-Bound Property)、收敛性质(Convergence Property)、路径松弛性质(Path-Relaxation Property)和前驱子图性质(Predecessor-Subgraph Property)。

要点列表:

  • 三角不等式是最短路径的基本性质,所有最短路径算法都依赖它
  • 上界性质保证松弛操作只会使估计值单调递减
  • 收敛性质说明一旦某顶点估计值达到最优,将永远保持
  • 路径松弛性质是 Bellman-Ford 和 DAG 最短路径算法正确性的核心
  • 前驱子图性质保证最终的前驱子图构成一棵最短路径树

知识结构总览

flowchart TD
    A["22.5 最短路径性质的证明"] --> B["三角不等式"]
    A --> C["上界性质"]
    A --> D["收敛性质"]
    A --> E["路径松弛性质"]
    A --> F["前驱子图性质"]

    B --> B1["δ(s,v) ≤ δ(s,u) + w(u,v)"]
    B --> B2["反证法证明"]
    B --> B3["所有算法的基础"]

    C --> C1["d[v] ≥ δ(s,v)"]
    C --> C2["前提: 无负权环"]
    C --> C3["对松弛次数归纳"]

    D --> D1["s⇝u→v 是最短路径"]
    D --> D2["d[u]=δ(s,u) ⟹ d[v]=δ(s,v)"]
    D --> D3["上界 + 松弛"]

    E --> E1["最短路径边按序松弛"]
    E --> E2["d[v_k] = δ(s, v_k)"]
    E --> E3["对路径长度归纳"]

    F --> F1["G_π 是最短路径树"]
    F --> F2["收敛 + 路径松弛"]
    F --> F3["唯一源点、无环、连通"]

    B --> D
    C --> D
    D --> E
    E --> F

核心思想

核心思路

本节的五个引理形成了一条严密的逻辑链:三角不等式是最短路径的基本数学性质;上界性质保证松弛操作的正确方向(只会逼近而不会越过最优值);收敛性质说明松弛操作能”锁定”最优值;路径松弛性质将单条边的松弛效果推广到整条路径;前驱子图性质最终保证算法输出的前驱关系构成一棵合法的最短路径树。理解这条逻辑链是掌握所有最短路径算法正确性证明的关键。

2.1 松弛操作回顾

在开始证明之前,先回顾松弛操作的定义。

松弛操作(Relaxation)

给定有向边 和权函数 ,松弛操作如下:

松弛操作的直觉:如果从源点经 的路径比当前已知的到 的路径更短,则更新 的最短路径估计值。

初始化操作(INITIALIZE-SINGLE-SOURCE)

2.2 引理 22.1——三角不等式(Triangle Inequality)

引理 22.1(三角不等式 / Triangle Inequality)

是一个带权有向图,权函数为 ,源点为 。则对所有边 ,有:

其中 表示从 的最短路径权值。

直觉理解: 三角不等式说的是”直达不一定比绕路短”。从 的最短路径不可能比”先到 再走边 “更长,因为后者本身就是一条从 的路径,而最短路径是所有路径中最短的。

2.3 引理 22.2——上界性质(Upper-Bound Property)

引理 22.2(上界性质 / Upper-Bound Property)

是一个带权有向图,权函数为 ,源点为 。假设 中没有从 可达的负权环。在执行 INITIALIZE-SINGLE-SOURCE 之后,对任意顶点 始终满足:

并且该不等式在任意序列的松弛操作下都保持不变。

关键前提: 上界性质要求图中没有从 可达的负权环。如果存在负权环, 可能是 ,此时 虽然成立但无实际意义。

2.4 引理 22.3——收敛性质(Convergence Property)

引理 22.3(收敛性质 / Convergence Property)

是一个带权有向图,权函数为 ,源点为 。假设 中没有从 可达的负权环。设 是一条从 的最短路径(即 是从 的最短路径, 是最后一条边)。如果在某次松弛操作之后 ,且此后对边 执行了松弛操作,则此后永远有

直觉理解: 收敛性质说的是,如果某个顶点 已经”找到了最优值”,那么从 出发的边 一旦被松弛, 也会”锁定”其最优值。这是 Dijkstra 算法正确性的核心——Dijkstra 每次选取 值最小的顶点,该顶点的 值一定等于 ,然后松弛其出边,使邻居收敛。

2.5 引理 22.4——路径松弛性质(Path-Relaxation Property)

引理 22.4(路径松弛性质 / Path-Relaxation Property)

是从源点 的一条最短路径。如果对 上的边按照顺序 进行松弛,则在松弛完最后一条边 之后,有 。并且,即使在这之前对其他边进行了松弛,此性质仍然成立。

重要说明: 路径松弛性质的关键在于”即使在这之前对其他边进行了松弛,此性质仍然成立”。这是因为:

  • 上界性质保证 始终成立
  • 收敛性质保证一旦 ,松弛 就会”锁定”为
  • 其他边的松弛不会影响 被锁定后的值(因为 已经等于最小值,不可能再被减小)

2.6 引理 22.5——前驱子图性质(Predecessor-Subgraph Property)

引理 22.5(前驱子图性质 / Predecessor-Subgraph Property)

是一个带权有向图,权函数为 ,源点为 。假设 中没有从 可达的负权环。设在算法执行过程中的某个时刻,对所有顶点 ,都有 。则此时的前驱子图 是一棵以 为根的最短路径树(shortest-paths tree)。

其中:

2.7 五个引理的逻辑关系总结

引理间的逻辑依赖关系

五个引理构成了如下逻辑链:

  1. 三角不等式(Lemma 22.1):独立成立,是最短路径的基本数学性质
  2. 上界性质(Lemma 22.2):依赖三角不等式,保证
  3. 收敛性质(Lemma 22.3):依赖上界性质,保证松弛操作能”锁定”最优值
  4. 路径松弛性质(Lemma 22.4):依赖收敛性质,将单边松弛推广到路径松弛
  5. 前驱子图性质(Lemma 22.5):依赖上界性质和路径松弛性质,保证最终输出是最短路径树

各算法的依赖关系:


补充理解与拓展

补充1:三角不等式的几何直觉

三角不等式 与欧几里得几何中的三角不等式完全类似:在三角形中,任意一边的长度不超过另外两边长度之和。在图论中,“边”的长度就是路径权值,“三角形”由路径 、边 和路径 构成。

这个性质在日常生活中也很常见:从北京到上海的直飞航班价格不太可能比”先飞到广州再飞到上海”更贵(虽然实际中可能有特殊情况,但在最短路径的模型中,三角不等式始终成立)。

来源:CLRS Chapter 24.5; Kleinberg, T. & Tardos, E. (2005). Algorithm Design, Pearson

补充2:负权环与 的关系

当图中存在从源点 可达的负权环时, 可能取值为 。具体来说,如果从 的某条路径上经过了负权环,那么可以无限次绕行该负权环,使路径权值趋近于

这就是为什么 Bellman-Ford 算法需要检测负权环:如果存在负权环,最短路径问题本身就没有有意义的有限解。在差分约束系统(22.4 差分约束与最短路径)中,负权环对应系统无可行解。

值得注意的是,上界性质(Lemma 22.2)的前提条件就是”没有从 可达的负权环”。如果存在负权环, 可能会在松弛过程中不断减小,永远不会”收敛”到

来源:CLRS Chapter 24.5

补充3:松弛操作的"贪心"本质

松弛操作本质上是一种贪心策略:每次都尝试用经过当前边的路径来改进目标顶点的估计值。五个引理共同保证了这种贪心策略的正确性:

  • 上界性质保证贪心不会”过头”( 不会小于
  • 收敛性质保证贪心最终会”到位”( 会达到
  • 路径松弛性质保证按正确顺序贪心可以处理整条路径
  • 前驱子图性质保证贪心的最终结果构成一棵合法的树

这种”贪心 + 严格证明”的模式在算法设计中非常常见,与 第15章_贪心算法-章节汇总 中的思想一脉相承。

来源:CLRS Chapter 24.5


易混淆点与辨析

误区:三角不等式与松弛条件是一回事

错误理解: “三角不等式 和松弛条件 本质上是一样的”

正确理解: 两者有关联但完全不同:

  • 三角不等式描述的是真实最短路径权值 之间的关系,是一个数学事实,对任何图都成立
  • 松弛条件描述的是当前估计值 之间的关系,是一个算法操作,只有当条件成立时才执行更新

联系: 三角不等式是证明上界性质的关键工具,而上界性质保证了松弛操作的正确方向。三角不等式告诉我们”最优值应该满足什么关系”,松弛条件告诉我们”当前估计值是否需要更新”。

误区:上界性质不需要前提条件

错误理解: “上界性质 对任何图都成立”

正确理解: 上界性质的前提条件是”图中没有从 可达的负权环”。如果存在负权环:

  • 可能是
  • 在松弛过程中可能不断减小
  • 虽然 在数学上仍然成立,但这没有实际意义

关键区别: 当存在负权环时, 不会收敛到一个有限值,Bellman-Ford 算法会检测到这种情况并报告”存在负权环”。

误区:前驱子图与 BFS 树是同一个概念

错误理解: “前驱子图 和 BFS 树是一样的,都是遍历树”

正确理解: 前驱子图和 BFS 树有本质区别:

  • BFS 树20.2 广度优先搜索)是在无权图(或所有边权相同的图)中,按层序探索得到的树,保证从源点到每个顶点的边数最少
  • 前驱子图 是在带权图中,由松弛操作产生的 指针构成的子图,保证从源点到每个顶点的路径权值最小

联系: 在无权图(所有边权为 1)中,BFS 树就是最短路径树的一个特例。BFS 可以看作是 Dijkstra 算法在所有边权相等时的特殊情况。

误区:路径松弛性质要求"恰好按序松弛"

错误理解: “路径松弛性质要求只按最短路径的边的顺序松弛,不能松弛其他边”

正确理解: 路径松弛性质的表述是”如果对 上的边按照顺序进行松弛”,这并不意味着不能松弛其他边。关键在于:

  • 在按序松弛 上的边之前,可以任意松弛其他边
  • 上界性质保证了其他边的松弛不会破坏 的正确性
  • 只要 上的边最终被按序松弛, 就会收敛到

实际应用: Bellman-Ford 算法松弛所有边 次,这自然包含了按序松弛任何最短路径上所有边的可能性(因为任何最短路径最多有 条边)。


习题精选

题号题目描述难度来源
22.5-1给出图 24.2 的另外两棵最短路径树CLRS
22.5-2构造图使得每条边在某棵最短路径树中且不在另一棵中⭐⭐CLRS
22.5-3扩展引理 22.1 的证明以处理 ⭐⭐CLRS
22.5-4证明若 被设为非 NIL 值则存在负权环⭐⭐⭐CLRS

题1(22.5-1):给出另外两棵最短路径树

题目

给出图 24.2(第 648 页)的有向图的两棵最短路径树,要求不同于图中已经展示的两棵。

题2(22.5-2):每条边在不同最短路径树中的状态

题目

给出一个带权有向图 ,权函数 ,以及源点 ,使得 满足以下性质:对每条边 ,存在一棵包含 的最短路径树,也存在一棵不包含 的最短路径树。

题3(22.5-3):处理 的三角不等式

题目

扩展引理 22.1(三角不等式)的证明,使其能处理最短路径权值为 的情况。

题4(22.5-4): 被设为非 NIL 值意味着负权环

题目

是一个带权有向图,源点为 。在执行 INITIALIZE-SINGLE-SOURCE 之后,如果某次松弛操作将 设为非 NIL 值,证明 中包含负权环。

解题思路提示

最短路径性质证明题的解题方法论:

  1. 三角不等式:几乎总是用反证法——假设不等式不成立,构造一条更短的路径导致矛盾
  2. 上界性质:用数学归纳法,对松弛次数归纳,归纳步骤中利用三角不等式
  3. 收敛性质:结合上界性质和三角不等式,证明松弛条件必然被触发
  4. 路径松弛性质:对路径长度(边数)进行归纳,归纳步骤中利用收敛性质
  5. 前驱子图性质:分别证明无环性、连通性和最短路径性,无环性通常用反证法

视频学习指南

资源主题链接说明
MIT 6.006 Lecture 16Dijkstra’s Algorithm链接包含收敛性质的直觉讲解
MIT 6.006 Lecture 17Bellman-Ford链接包含路径松弛性质的讲解
Abdul BariBellman-Ford Algorithm链接逐步演示与负权环检测
WilliamFisetShortest Path Properties链接最短路径基础性质总结

教材原文

CLRS 第4版 22.5节——三角不等式

For any edge , we have . This inequality is known as the triangle inequality.

CLRS 第4版 22.5节——上界性质

For all vertices , we have at all times, and this invariant is maintained over any sequence of relaxation operations on the edges of . Moreover, once achieves the value , it never changes.

CLRS 第4版 22.5节——收敛性质

If is a shortest path in for some , and if at any time prior to relaxing edge , then at all times afterward.

CLRS 第4版 22.5节——路径松弛性质

Let be a shortest path from to . If the edges of are relaxed in the order , then after all these relaxations. This property holds regardless of any other relaxation steps that may occur, even if they are intermixed with relaxations of the edges of .

CLRS 第4版 22.5节——前驱子图性质

Once for all , the predecessor subgraph is a shortest-paths tree rooted at .


参见Wiki

第22章-单源最短路径 最短路径性质的证明