Max-Flow Min-Cut for Single Unicast

From Single-Hop to Multi-Hop: Why Graphs?

Every channel model we have studied so far — the DMC, the Gaussian channel, the MAC, the BC, the wiretap channel — has been a single-hop model. The transmitter sends directly to the receiver (and possibly to an eavesdropper), with no intermediate nodes. But real communication networks are multi-hop: data travels through routers, relays, and switches before reaching its destination.

Before tackling noisy multi-hop networks (Chapters 22–23), we start with the simplest version of the problem: noiseless networks where each link has a fixed integer capacity. The question is purely combinatorial: how much information can flow from source to destination through a graph? The answer is one of the most beautiful results in combinatorial optimization — the max-flow min-cut theorem — and it sets the stage for the surprising discovery that coding at intermediate nodes can strictly outperform routing.

Definition:

Communication Network as a Directed Graph

A communication network is a directed graph G=(V,E)G = (V, E) where:

  • VV is the set of nodes (routers, relays, terminals)
  • EV×VE \subseteq V \times V is the set of directed edges (communication links)
  • Each edge eEe \in E has a capacity c(e)Z>0c(e) \in \mathbb{Z}_{>0} (the maximum number of symbols per time unit that can be transmitted over the link)
  • There is a designated source node sVs \in V and a designated sink node tVt \in V

A flow from ss to tt is an assignment f:ER0f: E \to \mathbb{R}_{\geq 0} satisfying:

  1. Capacity constraint: 0f(e)c(e)0 \leq f(e) \leq c(e) for all eEe \in E
  2. Flow conservation: for every node vs,tv \neq s, t, ein(v)f(e)=eout(v)f(e)\sum_{e \in \text{in}(v)} f(e) = \sum_{e \in \text{out}(v)} f(e)

The value of the flow is f=eout(s)f(e)ein(s)f(e)|f| = \sum_{e \in \text{out}(s)} f(e) - \sum_{e \in \text{in}(s)} f(e).

Network flow

An assignment of non-negative values to edges of a directed graph, satisfying capacity constraints and flow conservation at all non-terminal nodes. The flow value is the net flow leaving the source.

Definition:

Cut and Minimum Cut

An ss-tt cut in GG is a partition of VV into two sets (S,Sc)(S, S^c) with sSs \in S and tSct \in S^c. The capacity of the cut is cap(S,Sc)=e=(u,v)EuS,vScc(e).\text{cap}(S, S^c) = \sum_{\substack{e = (u,v) \in E \\ u \in S,\, v \in S^c}} c(e).

The minimum cut is mincut(s,t)=minS:sS,tScap(S,Sc)\text{mincut}(s, t) = \min_{S:\, s \in S,\, t \notin S} \text{cap}(S, S^c).

Intuitively, a cut is a "bottleneck" — removing all edges across the cut disconnects ss from tt. The minimum cut identifies the tightest bottleneck in the network.

Minimum cut

The minimum total capacity of edges whose removal disconnects the source from the sink in a directed graph. Represents the fundamental bottleneck of the network.

Theorem: Max-Flow Min-Cut Theorem (Ford–Fulkerson)

For any directed graph G=(V,E)G = (V, E) with integer edge capacities, source ss, and sink tt: maxflow(s,t)=mincut(s,t).\text{maxflow}(s, t) = \text{mincut}(s, t).

The maximum flow from ss to tt equals the minimum cut capacity separating ss from tt.

The inequality maxflowmincut\text{maxflow} \leq \text{mincut} is immediate: any flow must pass through every cut, so the flow cannot exceed the capacity of any cut — in particular, the minimum cut. The remarkable part is the reverse inequality: there is always a flow that saturates the minimum cut. No matter how complex the network topology, the bottleneck is always achieved, never just approached.

This is the graph-theoretic analogue of Shannon's channel coding theorem: the max-flow min-cut theorem tells us the capacity of a noiseless network, just as Shannon's theorem tells us the capacity of a noisy channel.

Historical Note: Ford and Fulkerson (1956)

1956

The max-flow min-cut theorem was proved by L. R. Ford Jr. and D. R. Fulkerson in 1956, motivated by Cold War-era problems in operations research — specifically, the question of how to disrupt Soviet railway networks most efficiently. The "dual" nature of the theorem (the maximum amount you can ship equals the minimum cost of disruption) has a striking military interpretation: the optimal attack on a supply network targets exactly the minimum cut.

The theorem has since become one of the cornerstones of combinatorial optimization, with applications far beyond communication networks: airline scheduling, image segmentation, baseball elimination, and bipartite matching all reduce to max-flow problems.

Example: Max-Flow in a Diamond Network

Consider the diamond network with source ss, two relay nodes r1,r2r_1, r_2, and sink tt. The edges and capacities are:

  • sr1s \to r_1: capacity 3
  • sr2s \to r_2: capacity 2
  • r1tr_1 \to t: capacity 2
  • r2tr_2 \to t: capacity 3
  • r1r2r_1 \to r_2: capacity 1

Find the max-flow and a minimum cut.

Ford–Fulkerson Algorithm

Complexity: O(VE2)O(|V| \cdot |E|^2) for the Edmonds–Karp (BFS) variant. Faster algorithms exist: Dinic's algorithm achieves O(V2E)O(|V|^2 |E|).
Input: Directed graph G=(V,E)G = (V, E), capacities c(e)c(e), source ss, sink tt
Output: Maximum flow ff
1. Initialize f(e)0f(e) \leftarrow 0 for all eEe \in E
2. while there exists an augmenting path PP from ss to tt in GfG_f:
a. δminePcf(e)\delta \leftarrow \min_{e \in P} c_f(e) (bottleneck of the path)
b. for each edge e=(u,v)Pe = (u,v) \in P:
- If ee is a forward edge: f(e)f(e)+δf(e) \leftarrow f(e) + \delta
- If ee is a backward edge: f(v,u)f(v,u)δf(v,u) \leftarrow f(v,u) - \delta
3. return ff
Complexity: O(Emaxflow)O(|E| \cdot \text{maxflow}) with DFS path selection.
With BFS (Edmonds–Karp): O(VE2)O(|V| \cdot |E|^2).

For unit-capacity graphs, the complexity simplifies to O(EV)O(|E| \sqrt{|V|}) using Hopcroft–Karp-style blocking flows.

Quick Check

In a directed graph, every edge from SS to ScS^c in a minimum cut is saturated by the max-flow. What about edges from ScS^c to SS?

They carry zero flow — if they carried positive flow, we could cancel it and increase the net flow

They are also saturated

It depends on the network topology

Common Mistake: Applying Max-Flow to Undirected Graphs Without Care

Mistake:

Treating an undirected edge as a single directed edge with capacity cc when computing max-flow.

Correction:

An undirected edge (u,v)(u, v) with capacity cc should be modeled as two directed edges: uvu \to v and vuv \to u, each with capacity cc. The flow on the two directed edges can differ, but the net flow on the undirected edge is f(u,v)f(v,u)f(u,v) - f(v,u), which must satisfy f(u,v)f(v,u)c|f(u,v) - f(v,u)| \leq c.

Key Takeaway

The max-flow min-cut theorem establishes that the capacity of a noiseless network for unicast (one source, one sink) equals the minimum cut. This is achievable by routing alone — no coding at intermediate nodes is needed. The surprise comes in the next section: for multicast (one source, multiple sinks), routing is no longer sufficient, and coding at intermediate nodes can strictly increase the achievable rate.

Max-Flow Min-Cut: Augmenting Paths and Bottlenecks

Animates the Ford–Fulkerson algorithm on a diamond network: augmenting paths are found one by one, flow increases, and the minimum cut is revealed as the fundamental bottleneck.