Purpose: A scaling maximum flow algorithm running in , where is the largest capacity. It is the excess-scaling refinement of push-relabel.
Capacity scaling in general
The idea behind every scaling algorithm: instead of pushing arbitrary amounts of flow, work in phases by bit significance.
- Phase considers only residual capacities , starting with and halving each phase.
- Within a phase, only “large” augmentations are made, so there are few of them.
- After phases and the flow is exact.
Applied to Ford-Fulkerson this gives ; applied to Dinic it gives .
Ahuja-Orlin’s excess scaling
Rather than scaling capacities, scale the excess at active nodes:
- Maintain the push-relabel invariants (a height function and excesses ).
- In phase , only process nodes with excess — the “large-excess” nodes.
- Push from the large-excess node of smallest height, and never push more than into a node (so no node’s excess overshoots ).
- When no large-excess node remains, halve .
Capping the push amount is the key: it prevents the excess from ping-ponging and bounds the number of non-saturating pushes at per phase — independently of .
Complexity
- Time:
- Space:
The max-flow complexity table
| Algorithm | Time |
|---|---|
| Ford-Fulkerson | — pseudo-polynomial |
| Edmonds-Karp | |
| Capacity-scaling Ford-Fulkerson | |
| Dinic | ; unit caps; unit… |
| MPM | |
| Push-relabel FIFO | |
| Push-relabel highest-label | |
| Ahuja-Orlin (excess scaling) | |
| Goldberg-Tarjan | |
| Orlin (with King-Rao-Tarjan) | |
| Chen et al. 2022 |
In a contest
Dinic’s algorithm with scaling as an optional add-on. It is short, it is on unit-capacity graphs (which is what bipartite matching needs), and it is fast in practice far beyond its worst-case bound. Ahuja-Orlin is a theoretical waypoint.
Variants / Use Cases
- Maximum Flow — the topic page with modelling patterns
- Push-relabel — the framework being refined
- Min-cost flow — cost scaling is the analogous idea for costs, and Ahuja-Orlin also produced the standard cost-scaling algorithm
- Gabow scaling — bit-scaling applied to matching and shortest paths