MIT 6.1220 — Lecture 9
Maximum Flow (Part I)
Problem. (Max Flow) Consider a directed graph with a source vertex and a sink vertex . Every (directed) edge has a capacity , extended to all of by when .
We'd like to assign a flow to every edge such that:
For any , the flow across is at most the capacity of .
There is zero net flow into or out of any vertex other than or .
Formally, let such that is the (signed) flow from to , with and for all (so if neither nor is in ).
The net flow is defined by . Find the maximum possible total flow.

Claim. Any flow assignment can be decomposed as the linear combination of paths from to and cycles.
Proof: Just induct. You never get “stuck” because of the “zero net flow” constraint, which is invariant.
There's an easy upper-bound on the max flow: the minimum cut.
Definition (Min Cut). Cut the directed graph via , with and . We define:
The total cut is the sum of the (nonnegative) capacities for all and .
The total flow is the sum of the (not necessarily nonnegative) flows for all and .
Evidently, .
Claim. Consider any flow assignment . Given any two cuts and , we have .
(By corollary, for any cut , we have is the net flow of .)
Proof: Because the divergence is zero. (Formally, use the decomposition of flow into paths and cycles.)
Be careful, though—the above does not say that all cuts have the same cut. It only says that all cuts have the same flow—that is, the same measure with respect to edge weights with divergence everywhere.
Claim. The maximum possible flow of a graph equals the minimum possible cut.
Here's the key idea.
Definition (Residual Network). Given an assigned flow to a graph , the residual network consists of with edge weights , and edges .
Importantly, some edges in will have greater weight than the corresponding edge in , because flow along an edge increases .

Think of this as reflecting our ability to “undo our mistakes”.
Definition (Augmenting Path). An augmenting path is a path in the residual network .
Claim. The max flow is zero if and only if there is a cut of zero.
Proof: If there's a zero cut, there's obviously zero flow. If there is zero possible flow, that means there is no path from to of positive capacity, so the cut defined by works.
It turns out that the zero case is all we need! (Like proving JNF…)
Claim. The maximum possible flow is equal to the minimum possible cut.
Proof: Consider an optimal flow assignment . Then must have zero maximum possible flow, or else would not be optimal. This means has a cut of zero.
Claim. For any graph , any cut , and any flow , we have .
Proof: Pretty obvious. Do the algebra if you want.
When there is a cut of value zero in , we have . Lower bound meets upper bound.
More generally, the following is true.
Claim. Given any network and any flow , the following statements are equivalent.
We have that is a max flow.
We have that for some cut .
We have that has no augmenting paths.
Proof: Omitted to be DRY. (I am not writing a helper proof.)
And so the most naive algorithm actually just works.
Solution. (Ford-Fulkerson) Repeatedly find augmenting paths , then recompute the residual network each time. Repeat until no more augmenting paths exist. This is optimal.