Skip to content

增广路

Augmenting path

相对于当前匹配,边在未匹配与已匹配之间交替且两个端点均未匹配的路径。

条目类型
定义

形式陈述

G=(V,E) 是图,ME 是其中一个匹配。一条 M-交替路是边在 EMM 之间交替出现的简单路径;若一条 M-交替路的两个端点都未被 M 覆盖(即不与任何 M 中的边关联),则称它为 M-增广路。注意这样的路径长度必为奇数,首尾两条边都不属于 M

P 是一条 M-增广路,取对称差

M=ME(P)=(ME(P))(E(P)M),

M 仍是匹配,且 |M|=|M|+1。Berge 定理(1957)给出增广路与最优性的联系:匹配 M 是最大匹配,当且仅当 G 中不存在 M-增广路。

直觉

增广路是"局部改进"思想在匹配问题上的具体化:给定一个还不够好的匹配,我们不推倒重来,而是寻找一条能让匹配变大一点的修改路径。沿增广路把匹配边与非匹配边整体翻转时,路径内部每个顶点原本恰有一条匹配边经过,翻转后仍恰有一条,不会产生冲突;而两个原本"空着"的端点各自获得一条新匹配边,净收益正好是一。真正不平凡的是 Berge 定理的反方向:它保证只要当前匹配不是最大的,这样的改进路径就一定存在——把当前匹配与某个更大的匹配作对称差,得到的图中每个顶点度数至多为二,因而分解为若干路径和交替圈,边数的盈余必然集中在某条以非 M 边开头结尾的路径上,这就是一条增广路。于是"找不到增广路"不只是算法停机的信号,而是最优性的证明。

例子与边界

最短的增广路是一条单边:若边 uvE 的两个端点都未被 M 覆盖,则 P=uv 就是长度为一的 M-增广路,翻转后直接把 uv 加入匹配。再看一个长度为三的例子:设路径 abcdbcM,而 a,d 未被覆盖,则 ab,cdM,翻转后匹配由 {bc} 变为 {ab,cd},大小从一增到二。

蓝色中间边是翻转前的匹配;沿路径取对称差后,绿色外侧两边进入匹配,中间边移出,匹配大小净增一。

交替但不增广的路径未必带来改进。翻转结果取决于首尾边是否属于 M:首尾均为非匹配边时,非匹配边比匹配边多一条,大小增加 1;一端为匹配边、另一端为非匹配边时,两类边数相等,大小不变;首尾均为匹配边时,大小减少 1。不过,若路径在某个已匹配端点以非匹配边进入,而该端点原有的匹配边不在路径上,翻转后该端点会关联两条匹配边,结果不再是匹配。交替偶圈的两类边数相等,翻转后仍是同样大小的匹配。增广路要求两端均未覆盖,正是为了排除端点冲突并保证净增益为一。

推论与应用

Berge 定理把“求最大匹配”归约为“反复寻找增广路”。二分图没有奇环,可直接在交替森林中搜索;一般图中层次会被奇交替环破坏,Edmonds blossom 算法通过收缩并 lift 增广路保持这一定理。Hopcroft–Karp 的分层批量增广、带权指派的顶点标号,以及二分匹配的网络流建模都是不同求解结构;拟阵交则把交替增广提升为两套独立性交换关系上的有向路。

参考资料
关系图谱9 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组