Skip to content

经由网络流的二分图匹配

Bipartite matching via maximum flow

把二分图匹配编码为单位容量流网络并由最大流恢复匹配。

条目类型
应用

形式陈述

给定二分图 G=(L˙R,E),构造流网络 N:加入源 s 与汇 t;对每个 L 加弧 s,对每条 rE 加弧 r,对每个 rR 加弧 rt,容量全部为 1

两个方向的对应给出归约的正确性。任一匹配 M 产生值为 |M| 的整数流:对每条 rM 沿路径 srt 发送一个单位;这些路径除公共的源 s 与汇 t 外不共享内部顶点,所以所有单位容量约束都得到满足。反之,任一整数可行流中,取流值为 1 的中间弧即构成匹配:弧 s 的单位容量迫使 至多出现在一条被选边中,弧 rt 对右侧同理。再由整数容量网络的整性定理——存在整数最大流,且增广路算法恰好产出这样的流——得

ν(G)=max{val(f): f  N 的可行流},

其中 ν(G) 为最大匹配的边数。单位容量下每次增广使流值恰增 1,Ford–Fulkerson 式实现至多 ν(G)|V|/2 次增广、每次 O(|E|),总时间 O(|V||E|);分层增广的 Hopcroft–Karp 算法将其改进为 O(|E||V|)

直觉

容量在此扮演配额:s 的单位容量说“左顶点 至多结一次对”,rt 说右侧同理,而中间的一个单位流恰是一对被选中的端点沿 srt 的登记路线。最大流问“最多能塞进多少条互不冲突的单位路线”,恰好就是最大匹配问“最多能选多少条互不共享端点的边”。更妙的是残量网络自动管理反悔:一条增广路若逆行已用弧,翻译回匹配语言就是交替路——拆掉一条旧配对、换上两条新配对;流的簿记把这类重排全部自动化了。

单位流、交替路与匹配增广
例子与边界

L={1,2}R={a,b},边为 1a,1b,2a。贪心可能先配 1a,此后 2 只认识已被占用的 a,卡在大小 1。流的视角下,残量网络中仍有路 s2a1bt(其中 a1 是已用弧 1a 的反向弧):增广一次即得匹配 {2a,1b},达到最大值 2——反向弧完成了“让 1 改配 b、把 a 腾给 2”的重排。

边界之一:整性不可省略。若允许实值流,网络可以在多条弧上各放二分之一单位,流值最大却对应不到任何匹配;结论成立靠的是整数容量保证存在整数最大流,或算法从零流出发始终以整数增广而保持整性。之二:构造依赖二分结构。一般图中奇圈使同样的编码失效——三角形的分数匹配值可达 3/2,而真匹配至多 1;一般图的最大匹配需要 Edmonds 的开花算法,而非本归约。另一方面,把 s 的容量改为 c 就允许 被匹配至多 c 次——归约顺带解决度约束子图这类推广,这是流表述的额外红利。

推论与应用

这一归约把匹配接入流的定理库:对 N 应用最大流最小割定理,把割翻译回图论语言即得二分图的 König 定理(最大匹配数等于最小顶点覆盖数),进而可推出 Hall 婚配定理的相异代表系判别法。

算法分支由输入结构决定。Hopcroft–Karp 算法在静态无权二分图上成批处理最短增广路,给出确定性最坏 O(|E||V|)Edmonds 开花算法处理一般无向图中的奇圈,不能由本页的二分流网络直接推出。把匹配看成两个 partition matroid 的公共独立集,则进入更一般的拟阵交算法及其 oracle 成本模型。加权二分匹配又离开纯可行流框架,由匈牙利算法或最小费用流处理。

参考资料
  • 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。
关系图谱7 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

使用的工具

实现的抽象