Push-Relabel Algorithm (Concept Level)
An introduction to the push-relabel maximum flow algorithm. Covers preflows, excess, height functions, and the two local operations -- push and relabel -- used to convert an initial preflow into a maximum flow.
Tutorial
Preflow, Excess, and Height
The push-relabel algorithm computes a maximum flow without ever searching for an augmenting path from to . Instead, it pushes flow locally between neighboring vertices using only their heights.
A preflow is like a flow, except conservation is relaxed: at every vertex , total flow in is allowed to exceed total flow out. The excess at is the amount currently stuck there:
A vertex is active if .
Each vertex also has a nonnegative integer height satisfying , , and for every residual edge :
Heights tell the algorithm which direction is "downhill" toward the sink.
Initialization. Set and for . Saturate every edge leaving the source: for each . All other edges start at . Every neighbor of that received flow becomes active.