Definition

A direct graph , with a non-negative and integer capacity on each edge , a source vertex , and a sink vertex .

Constraints

  • capacity constrain
  • conservation constrain
    • , other than , we have: incoming flow = outgoing flow.

We want to push the flow from to as much as possible, while satisfying two constraints

Residual Graph

The residual graph enables us to undo what we have pushed early, in terms of greedily pushed flow through the network.

Correctness

Algorithm

  • Greedily push flow with residual network is the Ford-Fulkerson algorithm, which runs in , where is the sum of capacity out of , because each iteration the flow value will increase at least one, and we use to find the path.
  • Use BFS to compute shortest path is Edmonds-Karp, which runs in
  • Similar to Edmonds-Karp, but use blocking flow instead of BFS to find the s-t path is Dinic’s Algorithm, which runs in , the time to compute blocking flow in Edmonds-Karp is , which make sense to its running time .
  • For practical usage: Push Relable algorithm

Reference