Max Flow-Min Cut & Ford-Fulkerson
The Max Flow-Min Cut theorem states that the maximum flow equals the minimum cut capacity. The Ford-Fulkerson algorithm computes max flow using augmenting paths in the residual graph. We also cover the Integrality Lemma and three standard flow modifications. This is the last topic covered on the midterm.
Learning Objectives
Key Concepts
Cuts & Min Cut
A cut in a flow network is a partition of vertices into sets and with and . The capacity of the cut is the sum of capacities of edges from to .
The min cut is the cut with minimum capacity.
- -
For any flow and cut :
- -
The max flow equals the min cut capacity
- -
A min cut can be found from the max flow: = vertices reachable from in the residual graph
Ford-Fulkerson Algorithm
The Ford-Fulkerson method repeatedly finds augmenting paths in the residual graph and pushes flow along them.
The residual graph has:
- -Forward edges with residual capacity (if )
- -Backward edges with capacity (if )
- -
Find - path in residual graph, push minimum residual capacity along it
- -
Repeat until no - path exists in residual graph
- -
With BFS for path finding (Edmonds-Karp): time
- -
With integer capacities: terminates in time
- -
After termination: vertices reachable from in residual graph form the min cut
Integrality Lemma & Flow Modifications
The Integrality Lemma guarantees that if all capacities are integers, there exists a maximum flow with integer values on all edges. This is crucial for applications like matching.
Three standard modifications extend the basic flow model:
- -Multiple sources/sinks: Add a super source and super sink with infinite-capacity edges
- -Vertex capacities: Split each vertex into and connected by an edge of capacity
- -Undirected edges: Replace each undirected edge with two directed edges and , both with capacity
- -
Integer capacities → integer max flow (critical for matching via flow)
- -
Multiple sources and sinks : add super source with edges of capacity , and super sink with edges of capacity
- -
Vertex capacity : split into (all incoming edges) and (all outgoing edges), add edge with capacity
- -
Undirected network: replace edge with two directed edges and , both with capacity