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

  1. BFS phase: start from all unmatched vertices in , build alternating layers, and get shortest augmenting-path length .
  2. DFS phase: find a maximal set of vertex-disjoint augmenting paths, each of length .
  3. 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:

  1. Short-path phase (): By Claim 1, increases by at least per round, so this phase has rounds.
  2. 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: