Skip to content
Part IA Lent Term

The Max-Flow Min-Cut Theorem

The Max-Flow Min-Cut Theorem is the central result of flow networks. It states that the maximum value of a flow equals the minimum capacity of a cut separating ss from tt, and it provides a constructive verification: when Ford-Fulkerson terminates, the set of vertices reachable from ss in the residual network is a minimum cut.

Cuts

An (s,t)(s, t)-cut of a flow network is a partition of VV into sets SS and T=V∖ST = V \setminus S such that s∈Ss \in S and t∈Tt \in T.

The net flow across the cut is:

f(S,T)=∑u∈S∑v∈Tf(u,v)−∑u∈S∑v∈Tf(v,u)f(S, T) = \sum_{u \in S} \sum_{v \in T} f(u, v) - \sum_{u \in S} \sum_{v \in T} f(v, u)

The capacity of the cut (ignoring flow direction from TT to SS) is:

c(S,T)=∑u∈S∑v∈Tc(u,v)c(S, T) = \sum_{u \in S} \sum_{v \in T} c(u, v)

Fundamental Lemma

For any flow ff and any cut (S,T)(S, T):

∣f∣=f(S,T)≤c(S,T)|f| = f(S, T) \le c(S, T)

Proof sketch: ∣f∣=f(S,T)|f| = f(S, T) follows from flow conservation (all flow from ss to tt must cross the cut, and internal vertices contribute zero net flow). f(S,T)≤c(S,T)f(S, T) \le c(S, T) follows because each edge’s flow cannot exceed its capacity, and the second sum (from TT to SS) is non-negative.

This immediately gives: max⁡-flow≤min⁡-cut\max\text{-flow} \le \min\text{-cut}.

The Theorem

Max-Flow Min-Cut Theorem: The following are equivalent:

  1. ff is a maximum flow in GG
  2. The residual network GfG_f contains no augmenting paths
  3. ∣f∣=c(S,T)|f| = c(S, T) for some cut (S,T)(S, T) of GG

Proof of Equivalence

(1)   ⟹  \implies (2): If GfG_f had an augmenting path pp, augmenting along pp would yield a flow of value ∣f∣+cf(p)>∣f∣|f| + c_f(p) > |f|, contradicting maximality.

(2)   ⟹  \implies (3): Since no path exists from ss to tt in GfG_f, define S={v∈V∣there is a path from s to v in Gf}S = \{v \in V \mid \text{there is a path from } s \text{ to } v \text{ in } G_f\} and T=V∖ST = V \setminus S. This is a cut (s∈Ss \in S, t∈Tt \in T). For any u∈S,v∈Tu \in S, v \in T:

  • If (u,v)∈E(u, v) \in E, we must have f(u,v)=c(u,v)f(u, v) = c(u, v); otherwise (u,v)(u, v) would be in EfE_f, placing v∈Sv \in S.
  • If (v,u)∈E(v, u) \in E, we must have f(v,u)=0f(v, u) = 0; otherwise (u,v)∈Ef(u, v) \in E_f with capacity f(v,u)>0f(v, u) > 0, again placing v∈Sv \in S.

Hence f(u,v)=c(u,v)f(u, v) = c(u, v) for all forward edges and f(v,u)=0f(v, u) = 0 for all backward edges crossing the cut. Therefore f(S,T)=c(S,T)f(S, T) = c(S, T), so ∣f∣=c(S,T)|f| = c(S, T).

(3)   ⟹  \implies (1): Since ∣f∣≤c(X,Y)|f| \le c(X, Y) for any cut (X,Y)(X, Y), achieving equality means ff cannot be exceeded; it is maximum.

The proof is constructive: the cut SS obtained from the final residual network GfG_f is a minimum cut.

Worked Example

Network (capacities on edges): s→10a→3b→7ts \xrightarrow{10} a \xrightarrow{3} b \xrightarrow{7} t, and s→5bs \xrightarrow{5} b, a→8ta \xrightarrow{8} t.

Maximum flow found: ∣f∣=15|f| = 15 (see Ford-Fulkerson Method).

Residual network at termination: S={s,a}S = \{s, a\} (reachable from ss via residual edges), T={b,t}T = \{b, t\}.

Edges crossing S→TS \to T:

  • a→ba \to b: capacity 3, f(a,b)=2f(a, b) = 2, residual capacity exists so not saturated? Wait: cf(a,b)=1>0c_f(a, b) = 1 > 0, so bb should be reachable. Let us reanalyse.

In the final residual network after augmentations (f(s,a)=10f(s,a)=10, f(a,t)=8f(a,t)=8, f(s,b)=5f(s,b)=5, f(a,b)=2f(a,b)=2, f(b,t)=7f(b,t)=7):

  • (s,a)(s,a) is saturated: cf(s,a)=0c_f(s,a)=0, but (a,s)∈Ef(a,s) \in E_f with capacity 10
  • (a,t)(a,t) is saturated: cf(a,t)=0c_f(a,t)=0, reverse (t,a)(t,a) capacity 8
  • (s,b)(s,b) is saturated: cf(s,b)=0c_f(s,b)=0, reverse (b,s)(b,s) capacity 5
  • (a,b)(a,b): cf(a,b)=1c_f(a,b)=1, reverse (b,a)(b,a) capacity 2
  • (b,t)(b,t): saturated, reverse (t,b)(t,b) capacity 7

Reachable from ss: ss itself, and following reverse edges: (s,a)(s,a) is in EE, saturated forward, but there is no residual edge s→as \to a. However, is there a path s→as \to a through some other route? No. So S={s}S = \{s\}.

Edges crossing {s}→{a,b,t}\{s\} \to \{a,b,t\}: s→as \to a (capacity 10, flow 10), s→bs \to b (capacity 5, flow 5). Cut capacity =10+5=15=∣f∣= 10 + 5 = 15 = |f|. Minimum cut found.

Summary

StatementMeaning
Cut (S,T)(S, T)Partition with s∈Ss \in S, t∈Tt \in T
f(S,T)f(S, T)Net flow across cut; equals ∣f∣\lvert f \rvert
c(S,T)c(S, T)Sum of forward capacities across cut
∣f∣≤c(S,T)\lvert f \rvert \le c(S, T)Weak duality — always true
max⁡-flow=min⁡-cut\max\text{-flow} = \min\text{-cut}Strong duality — the theorem
SS from GfG_fVertices reachable from ss in residual network — a min cut

Past Tripos: y2024p2q7, y2023p1q9.