Imagine a water distribution network: pipes connect junctions, each pipe has a maximum capacity, and you want to move as much water as possible from a source to a sink. This is the maximum flow problem — one of the most fundamental in all of combinatorial optimization.
The classic approach, Ford-Fulkerson (1956), finds a path from source to sink with leftover capacity and pushes flow along it, repeating until no such path exists. It works, but on dense graphs with many edges the repeated global path searches are expensive.
In 1988 Andrew Goldberg and Robert Tarjan introduced push-relabel, a fundamentally different strategy. Instead of looking for end-to-end paths, the algorithm:
- Preflows the source — it immediately saturates all outgoing edges of the source, creating "excess" flow at neighbors.
- Assigns every node a height label (a non-negative integer). Flow may only be pushed downhill (from a node to a neighbor with a strictly lower label).
- Repeatedly pushes excess from an active node (one with excess > 0) to a lower neighbor, or relabels the node (raises its height) when no downhill neighbor exists.
- Terminates when no active nodes remain — any excess that could not reach the sink flows back to the source, and the net flow into the sink equals the maximum flow.
The result is an algorithm that achieves time in general, and with the FIFO selection rule — both better than Ford-Fulkerson's on dense graphs.
Compare it with the path-by-path approach in our max-flow article: push-relabel trades global path searches for local, node-by-node operations, and wins on graphs where E is large relative to V.
Comments
Loading comments...