On this page
Interactive
Augmenting paths, residual edges, and the minimum cut
Flow network (flow / capacity)
Press Augment to find the first augmenting path.
max flow = min cut
A network carries a constrained quantity
A flow network is a finite directed graph with distinct source and sink . Each original edge has finite, nonnegative capacity . A feasible flow assigns an amount to every edge, obeying
and conserving flow at every vertex except and : total inflow equals total outflow. The flow value is the net amount leaving (equivalently, the net amount entering ).
Edges remain distinct even when they share endpoints. This matters for parallel edges and for reverse residual arcs: a reverse residual arc belonging to one original edge is not the same object as an original edge in the opposite direction.
Residual arcs: add flow or cancel it
For an original edge carrying , its forward residual arc has capacity ; it shows how much more can be sent on . Its reverse residual arc has capacity ; it shows how much existing flow can be canceled. Only positive-capacity residual arcs can be used.
An augmenting path is an -to- path in this residual network. Let be its smallest residual capacity. Along a forward arc, increase the corresponding original flow by ; along a reverse arc, decrease it by . The bottleneck choice preserves every capacity bound. At each internal path vertex, the change in inflow equals the change in outflow, so conservation also remains valid. The flow value rises by .
Cancellation is essential, not a bookkeeping trick. Consider unit-capacity edges , , , , and . First send one unit along . A second augmenting path is , the reverse residual arc of (from to ), then . This cancels the earlier flow and reroutes it, producing a feasible flow of value 2.
Cuts certify an upper bound
An – cut partitions the vertices into and , with and . Its capacity is the sum of capacities of original edges from to :
Summing net outflow over cancels internal edges and gives
Thus every feasible flow is bounded by every cut. In the unit-capacity example, has cut capacity 2; the rerouted flow of value 2 meets this bound, certifying optimality. More generally, when no augmenting path remains, the vertices residual-reachable from define a cut whose outward original edges are saturated and inward original edges carry zero flow. Its capacity equals the current flow value, so the flow is maximum.
When augmentations terminate
The absence of an augmenting path characterizes maximum flow, but arbitrary path selection need not reach that state after finitely many steps for every capacity type. Starting from zero with integer capacities, Ford–Fulkerson keeps all flows integral; every augmentation increases the integer flow value by at least one, and that value is bounded by the finite total capacity leaving . It therefore terminates. Rational capacities can be scaled to integers and have the same guarantee. With arbitrary real capacities, some path choices can produce infinitely many augmentations without reaching a maximum in finite time.
Takeaway: residual forward arcs add flow, reverse arcs allow rerouting, and cuts provide a certificate that no larger flow is possible.