形式陈述
给定二分图 公理库 二分图 Bipartite graph 顶点可分成两个独立侧、且每条边都跨越两侧的有限简单无向图。 G = ( L ∪ ˙ R , E ) ,构造流网络 N :加入源 s 与汇 t ;对每个 ℓ ∈ L 加弧 s → ℓ ,对每条 ℓ r ∈ E 加弧 ℓ → r ,对每个 r ∈ R 加弧 r → t ,容量全部为 1 。
两个方向的对应给出归约的正确性。任一匹配 公理库 匹配 Matching in a graph 由彼此不共享端点的边组成、表达一对一配对约束的边集合。 M 产生值为 | M | 的整数流:对每条 ℓ r ∈ M 沿路径 s → ℓ → r → t 发送一个单位;这些路径除公共的源 s 与汇 t 外不共享内部顶点,所以所有单位容量约束都得到满足。反之,任一整数可行流中,取流值为 1 的中间弧即构成匹配:弧 s → ℓ 的单位容量迫使 ℓ 至多出现在一条被选边中,弧 r → t 对右侧同理。再由整数容量网络的整性定理——存在整数最大流 公理库 最大流 Maximum flow 在容量与流守恒约束下最大化源到汇净流量的问题。 ,且增广路算法恰好产出这样的流——得
为 的 可 行 流 ν ( G ) = max { val ( f ) : f 为 N 的可行流 } , 其中 ν ( G ) 为最大匹配的边数。单位容量下每次增广使流值恰增 1 ,Ford–Fulkerson 式实现至多 ν ( G ) ≤ | V | / 2 次增广、每次 O ( | E | ) ,总时间 O ( | V | | E | ) ;分层增广的 Hopcroft–Karp 算法将其改进为 O ( | E | | V | ) 。
直觉
容量在此扮演配额:s → ℓ 的单位容量说“左顶点 ℓ 至多结一次对”,r → t 说右侧同理,而中间的一个单位流恰是一对被选中的端点沿 s → ℓ → r → t 的登记路线。最大流问“最多能塞进多少条互不冲突的单位路线”,恰好就是最大匹配问“最多能选多少条互不共享端点的边”。更妙的是残量网络自动管理反悔:一条增广路 公理库 增广路 Augmenting path 相对于当前匹配,边在未匹配与已匹配之间交替且两个端点均未匹配的路径。 若逆行已用弧,翻译回匹配语言就是交替路——拆掉一条旧配对、换上两条新配对;流的簿记把这类重排全部自动化了。
图片加载失败 单位流、交替路与匹配增广
例子与边界
设 L = { 1 , 2 } ,R = { a , b } ,边为 1 a , 1 b , 2 a 。贪心可能先配 1 –a ,此后 2 只认识已被占用的 a ,卡在大小 1 。流的视角下,残量网络中仍有路 s → 2 → a → 1 → b → t (其中 a → 1 是已用弧 1 → a 的反向弧):增广一次即得匹配 { 2 a , 1 b } ,达到最大值 2 ——反向弧完成了“让 1 改配 b 、把 a 腾给 2 ”的重排。
边界之一:整性不可省略。若允许实值流,网络可以在多条弧上各放二分之一单位,流值最大却对应不到任何匹配;结论成立靠的是整数容量保证存在整数最大流,或算法从零流出发始终以整数增广而保持整性。之二:构造依赖二分结构。一般图中奇圈使同样的编码失效——三角形的分数匹配值可达 3 / 2 ,而真匹配至多 1 ;一般图的最大匹配需要 Edmonds 的开花算法,而非本归约。另一方面,把 s → ℓ 的容量改为 c ℓ 就允许 ℓ 被匹配至多 c ℓ 次——归约顺带解决度约束子图这类推广,这是流表述的额外红利。
推论与应用
这一归约把匹配接入流的定理库:对 N 应用最大流最小割定理 公理库 最大流最小割定理 Max-flow min-cut theorem 网络最大流值等于源汇最小割容量。 ,把割翻译回图论语言即得二分图的 König 定理 公理库 Kőnig 二分图定理 Kőnig's theorem for bipartite graphs 二分图中最大匹配大小等于最小顶点覆盖大小。 (最大匹配数等于最小顶点覆盖数),进而可推出 Hall 婚配定理 公理库 Hall 婚配定理 Hall's marriage theorem 有限二分图存在饱和一侧的匹配,当且仅当每个该侧顶点子集的邻集至少同样大。 的相异代表系判别法。
算法分支由输入结构决定。Hopcroft–Karp 算法 公理库 Hopcroft–Karp 算法 Hopcroft-Karp algorithm 按阶段同时增广一族顶点不交的最短增广路,以 O(E√V) 时间求二分图最大匹配。 在静态无权二分图上成批处理最短增广路,给出确定性最坏 O ( | E | | V | ) ;Edmonds 开花算法 公理库 Edmonds blossom 算法 Edmonds' blossom algorithm · Blossom algorithm 通过识别并收缩奇交替环,在一般图中保持增广路存在性并求最大匹配的算法。 处理一般无向图中的奇圈,不能由本页的二分流网络直接推出。把匹配看成两个 partition matroid 的公共独立集,则进入更一般的拟阵交算法 公理库 拟阵交算法 Matroid intersection algorithm · Unweighted matroid intersection 在两个有限拟阵的交换有向图中寻找最短增广路,以独立性 oracle 构造最大公共独立集并在无路时输出秩和证书。 及其 oracle 成本模型。加权二分匹配又离开纯可行流框架,由匈牙利算法 公理库 匈牙利算法 Hungarian algorithm 通过对偶标号和增广结构求解赋权二分图完美匹配的算法。 或最小费用流处理。
参考资料
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,§25.1。
Jon Kleinberg and Éva Tardos, Algorithm Design, Pearson, 2005,Ch. 7。