1. Hopcroft-Karp 在二分图上的 BFS 分层、DFS 阻塞与时间复杂度 O(E√V) 的推导如何走通?
Hopcroft-Karp 算法如何在二分图最大匹配上通过 BFS 分层和 DFS 阻塞流来达到 O(E√V) 的时间复杂度,这个推导过程是怎样的?
- BFS 建立最短增广路分层图(dist 数组)
- DFS 在分层图上阻塞匹配(每次只走 dist+1 的边)
- 匹配数增长与增广路长度增长的相互制约
Hopcroft-Karp(HK)用 BFS 从所有未匹配的左侧点出发,在“仅匹配边/非匹配边交替”的图上计算每个点的最短距离分层 dist,得到当前最短增广路的长度。随后用 DFS 只沿 dist 递增的边寻找多条不相交的增广路并一次性增广(阻塞流思想),这一阶段复杂度 O(E)。每轮增广后最短增广路长度至少增加 1,而第 √V 轮之后增广路长度已经超过 √V,此时每轮至少新匹配 √V 条边,因此后段最多 √V 轮。总轮数 O(√V),每轮 O(E),故总复杂度 O(E√V)。
关键在于把匹配问题看成单位带宽网络上的最大流,并用“分层-阻塞”的增广路批量处理。前半段靠每轮长度增加的上界(轮数 ≤ √V),后半段靠每轮匹配数收益的下界(每轮 ≥ √V 条),两者在 √V 处平衡,从而得到 O(E√V)。