Dashboard/Block 4: Flows & Algorithms/Week 10
Week 10Flows & Algorithms

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

Define cuts and the min cut of a network
State and prove the Max Flow-Min Cut theorem
Implement Ford-Fulkerson using augmenting paths in the residual graph
Trace Ford-Fulkerson on example networks
State the Integrality Lemma and apply flow modifications

Key Concepts

Cuts & Min Cut

A cut in a flow network is a partition of vertices into sets SS and T=VST = V \setminus S with sSs \in S and tTt \in T. The capacity of the cut is the sum of capacities of edges from SS to TT.

The min cut is the cut with minimum capacity.

  • -

    For any flow ff and cut (S,T)(S,T): fc(S,T)|f| \leq c(S,T)

  • -

    The max flow equals the min cut capacity

  • -

    A min cut can be found from the max flow: SS = vertices reachable from ss 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 GfG_f has:

  • -Forward edges with residual capacity c(e)f(e)c(e) - f(e) (if f(e)<c(e)f(e) < c(e))
  • -Backward edges with capacity f(e)f(e) (if f(e)>0f(e) > 0)
  • -

    Find ss-tt path in residual graph, push minimum residual capacity along it

  • -

    Repeat until no ss-tt path exists in residual graph

  • -

    With BFS for path finding (Edmonds-Karp): O(nm2)O(nm^2) time

  • -

    With integer capacities: terminates in O(fm)O(|f^*| \cdot m) time

  • -

    After termination: vertices reachable from ss 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:

  1. -Multiple sources/sinks: Add a super source SS and super sink TT with infinite-capacity edges
  2. -Vertex capacities: Split each vertex vv into vinv_{in} and voutv_{out} connected by an edge of capacity c(v)c(v)
  3. -Undirected edges: Replace each undirected edge uvuv with two directed edges uv\overrightarrow{uv} and vu\overrightarrow{vu}, both with capacity c(uv)c(uv)
  • -

    Integer capacities → integer max flow (critical for matching via flow)

  • -

    Multiple sources s1,,sks_1, \ldots, s_k and sinks t1,,tlt_1, \ldots, t_l: add super source SS with edges (S,si)(S, s_i) of capacity \infty, and super sink TT with edges (tj,T)(t_j, T) of capacity \infty

  • -

    Vertex capacity c(v)c(v): split vv into vinv_{in} (all incoming edges) and voutv_{out} (all outgoing edges), add edge (vin,vout)(v_{in}, v_{out}) with capacity c(v)c(v)

  • -

    Undirected network: replace edge uvuv with two directed edges uv\overrightarrow{uv} and vu\overrightarrow{vu}, both with capacity c(uv)c(uv)