“算法分支由输入结构决定。Hopcroft–Karp 算法在静态无权二分图上成批处理最短增广路,给出确定性最坏 $O( E \sqrt{ V })$;Edmonds 开花算法处理一般无向图中的…”
形式陈述 ​
给定二分图
一个 phase 先从所有未匹配的
每条增广路的非匹配边比匹配边多一条,翻转使
阶段数的
余下每个 phase 至少增广一条路,所以也不到
在邻接表和单位成本 RAM 下,BFS 与带失败标记/当前邻边位置的 DFS 每 phase 共扫描
若输入必须保留孤立顶点,完整界可写成
直觉
逐条增广会反复穿过相同的浅层交替区域。Hopcroft–Karp 先冻结“当前最短要走几步”,再一次找尽一组互不争用顶点的最短修正路线。一个 phase 结束后,所有同长度机会都已被阻断,搜索被迫转向更长的结构。
批量化能奏效,是因为匹配约束发生在顶点:两条增广路只要共享一个端点,同时翻转就可能让该点关联两条匹配边。要求顶点不交正好让各条路径的局部修改可交换。
例子与边界
令
当前匹配为
它们顶点不交,可在同一 phase 翻转,得到
实现常用虚拟 NIL 表示未匹配右端。BFS 只扩展距离小于 dist[NIL] 的左点;DFS 只走能使层次增加的交替边,失败后把该左点距离设为无穷,避免本 phase 重搜。成功回溯时必须同时更新左右两侧 mate 数组,否则两份匹配表示会不一致。
一般非二分图中的奇交替圈会让这套左右定向失效,最大匹配需要 blossom 收缩等方法。平行边对顶点匹配没有额外作用,可以预先合并;若不合并,只会增加扫描成本。孤立顶点合法且永远未匹配,不应造成 BFS 反复入队。
推论与应用
把二分图匹配归约为单位容量流时,左点只有一条来自源的入弧,右点只有一条通往汇的出弧,得到Dinic 算法的 unit network。Hopcroft–Karp 直接在交替图上实现同一“BFS 分层 + 阻塞最短增广路”机制,无需显式存储超级源、超级汇及其弧。
算法输出最大基数匹配,不处理边权、偏好稳定性或顶点多重容量。加权指派需要费用/势函数方法,医院—住院医稳定匹配又优化另一种偏好条件;共享二分图输入不意味着目标相同。
最大匹配还可结合 Kőnig 定理构造同大小的最小顶点覆盖:从未匹配左点沿最终交替可达关系取集合
参考资料
- John E. Hopcroft and Richard M. Karp, “An
Algorithm for Maximum Matchings in Bipartite Graphs,” SIAM Journal on Computing 2(4), 1973, pp. 225–231。 - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,Ch. 25。
- Bernhard Korte and Jens Vygen, Combinatorial Optimization: Theory and Algorithms, 6th ed., Springer, 2018, bipartite matching and augmenting paths。