1. 引言

在计算机科学中,“增广路径”(Augmenting Path)这一概念出现在两个不同的场景中:匹配理论(Matching Theory)和最大流问题(Maximum Flow Problem)。

在这两个问题中,我们都可以利用增广路径来提升已有解的规模,从而逐步逼近最优解。

本文将分别从这两个场景出发,讲解增广路径的定义、作用以及相关算法。


2. 匹配理论中的增广路径

2.1 定义

在图的匹配问题中,一个匹配(Matching)是图中的一组边,满足:任意两条边都不共享同一个顶点

如果一个匹配在所有可能的匹配中规模最大,我们称它为最大匹配(Maximum Matching)。如果一个顶点被匹配中的某条边所连接,我们就说它是已匹配(Matched)顶点;否则就是未匹配(Unmatched)顶点。


2.2 增广路径的作用

在匹配理论中:

增广路径是指:从一个未匹配顶点出发,交替经过“非匹配边”和“匹配边”,最终到达另一个未匹配顶点的路径。

例如下图中,路径 a → a' → b → b' → c → c' 就是一个增广路径(绿色高亮):

matching2-1

我们可以利用增广路径来扩展当前匹配。具体方法是:对当前匹配集合与增广路径上的边进行对称差(Symmetric Difference)操作。

对称差操作的含义是:

  • 移除匹配中与增广路径重合的边;
  • 添加增广路径中不在匹配中的边;
  • 保留匹配中与增广路径无关的边。

例如,下图展示了如何通过增广路径 a → a' → b → b' → c → c' 扩展初始匹配:

matching3

结论:只要不断寻找并应用增广路径,就能从任意初始匹配出发,最终获得最大匹配。


2.3 利用增广路径求解最大匹配的经典算法

  • 匈牙利算法(Hungarian Algorithm):适用于二分图(Bipartite Graph)的最大匹配问题。
  • 花算法(Blossom Algorithm):适用于一般图(General Graph)的最大匹配问题。

这些算法通常使用深度优先搜索(DFS)或广度优先搜索(BFS)来查找增广路径。


3. 最大流问题中的增广路径

3.1 基本概念

在最大流问题中,我们处理的是流网络(Flow Network):

  • 是一个有向图,每条边有容量(Capacity)。
  • 图中有两个特殊节点:源点(Source)和汇点(Sink)。
  • 流必须满足两个约束:
    • 边上流量不超过容量;
    • 除源点和汇点外,每个节点的流入等于流出(流量守恒)。

目标是:从源点到汇点传输尽可能多的流量


3.2 残留网络(Residual Network)

为了查找增广路径,我们需要构造残留网络(Residual Network):

  • 每条边都有一个残留容量(Residual Capacity):
    • 正向边:原容量减去当前流量;
    • 反向边:当前流量(允许“回流”)。
  • 如果某条边的流量为0,则其反向边不会出现在残留图中。

例如,原图中有一条边 (s, v1),容量为16,当前流量为11:

  • 残留图中将出现:
    • 正向边 (s, v1),残留容量为5;
    • 反向边 (v1, s),残留容量为11。

3.3 增广路径的定义

在最大流问题中,增广路径是从源点到汇点的一条路径,存在于残留网络中。

路径上的每条边都必须有正的残留容量,表示我们可以“增广”这条路径来提升总流量。

例如下图中红色路径即为一条增广路径:

flow3-1

我们可以沿该路径增加最多4个单位的流量。这会:

  • 增加 (s, v2)(v3, t) 的流量;
  • 减少 (v3, v2) 的流量。

⚠️ 注意:增广路径不仅可以增加边上的流量,也可以减少某些边的流量。


3.4 利用增广路径求解最大流的经典算法

  • Ford-Fulkerson 算法

    • 只要残留图中存在增广路径,就不断增广当前流。
    • 最终当残留图中没有增广路径时,当前流就是最大流。
    • 时间复杂度取决于增广路径的选择方式。
  • Edmonds-Karp 算法

    • 是 Ford-Fulkerson 的一个实现,每次使用 BFS 找到最短增广路径。
    • 时间复杂度为 O(VE²)
  • Dinic 算法

    • 每次构建层次图(Level Graph),然后寻找阻塞流(Blocking Flow)。
    • 阻塞流可以一次处理所有长度相同的增广路径。
    • 时间复杂度为 O(V²E),性能更优。

4. 总结

本文从两个角度介绍了增广路径:

场景 增广路径的作用 相关算法
匹配理论 扩展当前匹配以获得最大匹配 匈牙利算法、花算法
最大流问题 在残留图中寻找路径以提升总流量 Ford-Fulkerson、Edmonds-Karp、Dinic

核心思想:增广路径的本质是通过局部调整来逼近全局最优解。

掌握增广路径的原理,是理解图论中许多经典算法的关键一步。


原始标题:What Is an Augmenting Path?

« 上一篇: 非递归归并排序