On a directed flow network with capacities , choose flows satisfying inflow equals outflow at every vertex except source and sink , and maximize the net source outflow . For a cut of a flow network containing but not , its capacity is . The max-flow min-cut theorem states
Every feasible flow is bounded above by every cut capacity; equality for a feasible flow and a cut proves optimality.
The Ford-Fulkerson algorithm starts with a feasible flow, for instance zero. A forward edge has residual capacity and its reverse edge has residual capacity . Find a source-to-sink augmenting path in this residual network, and increase the flow along it by the minimum residual capacity on the path, reducing original-edge flows when reverse edges are used. Repeat until no such path exists. The vertices reachable from the source then define a saturated minimum cut of a flow network. With integer capacities and zero initial flow, all residual capacities and augmentations are integers. Each augmentation increases by at least one, while is bounded by the finite sum of source capacities, so termination takes finitely many steps.
For the original roads, a feasible maximizing flow is given below; every table entry is flow/capacity in vehicles per minute.
RoadBefore stormAfter storm
All road capacities are respected, and direct summation verifies flow conservation at each roundabout. The original flow value is . The cut separating from every other vertex consists of its two incoming roads and has capacity . Therefore the original maximum is 90 vehicles per minute.
To impose a vertex capacity, split into and . Send its incoming roads to and its outgoing roads from , and add a directed internal edge of capacity . Every unit passing through the roundabout must traverse this internal edge. This gives the standard maximum flow with vertex capacities construction.
Starting from zero, apply the Ford-Fulkerson algorithm with the following augmenting paths in order. First use : its residual capacities are , so augment by . Next use : the residual capacities are , so augment by . Finally use : the residual capacities at this stage are , so augment by . No reverse edge is needed in this valid run. The resulting original-road flows are precisely the after-storm column above, and the internal edge carries .
For termination and optimality, take the source-side set . Its outgoing edges are , and , of capacities . They are all saturated, and no positive-flow original edge enters this set. Consequently no residual path leaves the set, and its cut capacity equals the constructed flow value. The new maximum is therefore
Figure 1.
Optimal road flows before the storm and after splitting the flooded roundabout
. Details.
A maximum flow problem specifies a finite directed flow network, a source , a sink , and nonnegative arc capacities. A feasible flow assigns to each arc, with incoming flow equal to outgoing flow at each vertex other than . The objective is to maximize the net flow leaving , equivalently entering .
The Ford-Fulkerson algorithm starts with zero flow. Its residual network has a forward arc of capacity and a reverse arc of capacity for each original arc. If an – path has positive residual capacities, augment by their minimum: increase flow along forward arcs and decrease it along reverse arcs. This preserves capacity bounds and conservation, and increases the flow value by that positive bottleneck. Repeat until there is no augmenting path.
For rational capacities, choose a positive integer clearing every denominator. Initially all flows and residual capacities are integer multiples of , and augmentation preserves that property. Every augmentation therefore increases the flow value by at least . The flow value is bounded above by the sum of capacities of arcs leaving . Thus only finitely many augmentations can occur, independently of how the augmenting paths are chosen.
To see why termination supplies a maximum, let consist of vertices reachable from in the final residual network. The sink is not in . Each original arc from to its complement is saturated; each original arc entering has zero flow, since otherwise its reverse residual arc would leave . The resulting flow value equals the capacity of this cut. No feasible flow exceeds a cut capacity. Hence the algorithm terminates at a maximum flow for rational capacities, proving the relevant max-flow min-cut theorem conclusion as well.
The Ford-Fulkerson algorithm starts with zero flow. For each original edge , the residual network has a forward edge with residual capacity and a reverse edge with residual capacity . Distinguish these labelled residual edges if the original graph has antiparallel edges. While there is a source-to-sink augmenting path with positive residual capacities, increase the flow by the minimum residual capacity along it, adding on forward edges and subtracting on reverse edges. This preserves capacity bounds and flow conservation and increases the strength of a flow by that positive bottleneck.
A cut of a flow network is a partition with , , of capacity . Summing flow conservation gives . The max-flow min-cut theorem states
When no augmenting path remains, take to be the vertices reachable from in the residual network. Every original outgoing edge of this cut of a flow network is saturated and every incoming edge has zero flow; otherwise a positive residual edge would leave . Thus , certifying optimality and the theorem. For general finite real capacities, one can also apply this argument to an existing maximum: it cannot admit an augmenting path.
With integer capacities, each augmentation increases the value by at least one, so the Ford-Fulkerson algorithm terminates. Rational capacities can be scaled to integers. Arbitrary path choices with irrational capacities need not terminate; the existence theorem does not justify claiming finite termination in that generality. The given network has integer capacities, so this caveat does not obstruct its computation.
Reading the arrows directly from the original PDF gives, in particular, and . Starting from zero flow, use the following augmenting paths and bottlenecks, in order:
  • : .
  • : .
  • : .
  • : .
  • : .
Each path is available in the current residual network. The resulting nonzero edge flows are
The flows on and are zero. Capacity constraints and flow conservation hold at each interior vertex; net source outflow is .
Take . Its outgoing edges are , , , , with total capacity . Thus the matching flow and cut of a flow network certificates give
These are also exactly the source-reachable vertices in the final residual network. The original drawing below labels each edge by flow/capacity; the highlighted edges realise the minimum cut of a flow network.
Figure 1.
A maximum flow and its edge capacities
. Verified maximum flow, with each arrow labelled flow/capacity and the minimum cut marked in orange. Details.
The max-flow min-cut theorem states that in a finite flow network, the maximum value of a feasible source-to-sink flow equals the minimum capacity of a source-to-sink cut.
First consider any feasible flow and any cut with and . Summing flow conservation over the vertices in cancels all contributions from edges internal to and gives
Thus every flow value is at most every cut capacity.
A maximum flow exists because the feasible flows form a nonempty compact subset of a finite-dimensional Euclidean space and the flow value is continuous. Let be maximum and form its residual network. If there were an augmenting path from to , increasing by the path's positive bottleneck capacity would contradict maximality. Let be the set of vertices reachable from in the residual network. Then . Every original edge from to its complement is saturated, while every original edge entering carries zero flow; otherwise the corresponding forward or reverse residual edge would make its other endpoint reachable. Consequently
The general upper bound is attained by this flow and cut, proving the theorem.
After these augmentations, the vertices reachable from in the residual network are
The edges leaving this set are , , and , with capacities , , and . Hence
The flow in part (i) has the same value, so the max-flow min-cut theorem proves that it is maximum and that this cut is minimum.
Residual network Created 2026-09-29 Updated 2026-10-14
For a feasible flow , each original directed edge supplies a forward residual network edge of capacity and a backward one of capacity ; zero-capacity residual edges may be omitted. The forward edge permits an increase, while the backward edge permits cancellation of existing flow. In particular, backward residual capacity is the amount already sent, rather than unused original capacity. If both original orientations exist, keep their residual contributions separate, or add capacities for contributions with the same direction. An augmenting path uses these permitted changes while preserving flow conservation and the capacity constraints.
To see why cancellation matters, give all five directed edges , , , , unit flow network edge capacities. Starting from zero flow, an augmenting path carrying yields
The remaining unused original edges are and , which do not form a source-to-sink graph path. However, the backward residual edge has capacity . Consequently the residual network contains the augmenting path , with residual capacities .
Augment by : increase and from to , and decrease from to . The result is
Now flow conservation is at and at . The final flow sends one unit along each of and . The cut of a flow network has cut capacity , proving this is a maximum flow. Traversing in the residual network revised the earlier routing decision; it did not send actual traffic along a nonexistent original edge.
Figure 1.
Backward residual capacity reroutes the first unit of flow
. Before: one unit follows s to a to b to t. Middle: the residual augmenting path s to b to a to t cancels flow on a to b. After: two units use the separate paths, and the middle original edge carries zero flow. Details.
In a finite flow network, a maximum flow exists because the feasible flow set contains the zero flow and is a compact set: the capacity constraints bound every coordinate, and they and flow conservation define a closed set. The strength of a flow is a continuous function, so the extreme value theorem gives an attained maximum. An augmenting path in the residual network would permit positive augmentation, contradicting maximality. The source-reachable vertices in the residual network therefore define a cut of a flow network whose outgoing original edges are saturated and incoming original edges carry zero flow. Flow conservation makes the strength of a flow equal to this cut capacity, proving the max-flow min-cut theorem.
Existence and strong duality for finite real flow network edge capacities do not imply finite termination for every choice of augmenting paths in the Ford-Fulkerson algorithm. With irrational capacities, some choices can continue forever. With integer capacities, Integrality of the Ford-Fulkerson algorithm instead forces finite termination; rational capacities reduce to that case by a common denominator. Choosing shortest augmenting paths as in the Edmonds–Karp algorithm avoids dependence on capacity magnitudes.[ref]
Widest augmenting path 2026-10-14
An augmenting path maximizing the possible increase in flow, namely its smallest residual network edge capacity. If the remaining maximum flow is and the original undirected network has edges, a path has bottleneck at least . Otherwise the vertices reachable through arcs of capacity at least define a cut of capacity strictly less than , contradicting the max-flow min-cut theorem. Only one directed arc per original crossing edge contributes to that cut.