跳转至

增广路

增广路定理 Berge's lemma

这是最大匹配的一个重要理论。

定义

  • 交错路(alternating path)始于非匹配点且由匹配边与非匹配边交错而成。
  • 增广路(augmenting path)是始于非匹配点且终于非匹配点(除了起始的点)的交错路。增广路中边的数量是奇数。

增广路上非匹配边比匹配边数量多 1,如果将增广路上的匹配边和未匹配边反转,则匹配数量会增加 1 且依然是交错路。

augment-1

如上图,匹配数从 2 增加为 3,匈牙利算法中只通过这样的方式增加匹配数量,称为 增广(Augment)

根据 Berge's lemma 当找不到增广路的时候,得到最大匹配。

过程

由此定理可知我们求最大匹配的核心思路。

核心思路

枚举所有未匹配点,找增广路径,直到找不到增广路径。

证明

事实上,对于每个点只要枚举一次就好,证明如下:

augment-2

假设某一轮沿着增广路 增广后,新增了以未匹配点 为起点的增广路 ,则 必与 有公共边(否则 不可能是因此次增广而新增的)。 在 取得公共边时,由于 是交错路,意味着相交点在 内的两邻边是不同类型的(图中以红和蓝表示);因而增广前 就能走到 中的某个未匹配点,说明此前已存在从 出发的增广路,即已枚举过的未匹配点不再可能作为增广路起点。

交错树

从未匹配点 进行 DFS 或 BFS 寻找增广路的过程中产生的树称为交错树, 是交错树的根。设 为再寻找增广路时产生的交错树。定义:

  • 偶点(黑点)为树上深度为偶数的点。
  • 奇点(白点)为树上深度为奇数的点。

下图展示了一个二分图和从未匹配点 开始寻找增广路时,形成的以 为根的交错树。

augment-3

augment-4