Goal
Compute a maximum matching in a bipartite graph faster than augmenting one path at a time.
NOTE
Main idea: in each round, augment along a maximal set of vertex-disjoint shortest augmenting paths.
One Iteration
- BFS phase: start from all unmatched vertices in , build alternating layers, and get shortest augmenting-path length .
- DFS phase: find a maximal set of vertex-disjoint augmenting paths, each of length .
- Augmentation: augment along all paths in simultaneously.
maximal means inclusion-maximal: no additional shortest augmenting path can be added while preserving vertex-disjointness.
Key Proof Ideas
Claim 1: Shortest augmenting-path length increases
If the shortest augmenting-path length in round is , then in round it is at least .
Reason:
- If an augmenting path is disjoint from all paths in and has length , then should have been in (contradiction to maximality).
- If intersects some path in , symmetric-difference reasoning gives .
- Augmenting paths in bipartite graphs have odd length, so the next possible shortest length is at least .
Claim 2: Bound on distance to optimum
Let be current matching, a maximum matching, and the shortest -augmenting-path length. From , there are vertex-disjoint -augmenting paths. Each has at least vertices, so:
Hence:
IMPORTANT
When is large, the remaining matching gap is small.
Why the Number of Iterations is
Split into two phases:
- Short-path phase (): By Claim 1, increases by at least per round, so this phase has rounds.
- Long-path phase (): By Claim 2:
Each round increases by at least , so at most rounds remain.
Total rounds: .
Where does come from exactly?
Use a generic threshold instead of fixing first.
- Phase 1 (): because increases by at least per round, this costs rounds.
- Phase 2 (): by Claim 2,
so at most rounds remain.
So total rounds are:
Balance both terms by choosing such that:
Substitute back to get total rounds .
Runtime
Each round (BFS + DFS on layered graph) costs . Therefore total runtime is: