For a finite directed flow network with source , sink and nonnegative finite flow network edge capacities , the max-flow min-cut theorem states
Here feasible arc flows satisfy and flow conservation at every vertex except . Their strength of a flow is the net outflow at . A cut of a flow network has cut capacity equal to the sum of capacities on arcs directed from to .
For any feasible flow and any such cut of a flow network, summing flow conservation over cancels internal arcs and gives
Thus every flow value is bounded by every cut capacity.
A maximum flow exists: the feasible arc-flow vectors form a nonempty closed subset of the finite-dimensional compact box , and flow value is continuous. Choose one, . Its residual network has a forward arc of capacity and a reverse arc of capacity for each original arc. If a residual – augmenting path existed, its smallest positive residual capacity would permit increasing forward flows and decreasing reverse flows along the path. This preserves all capacity bounds and internal flow conservation while strictly increasing , a contradiction.
Let be the vertices reachable from through positive residual arcs. Then . Every original arc leaving is saturated, since otherwise its endpoint would also be reachable. Every original arc entering carries zero flow, since a positive flow would create a residual reverse arc leaving . Therefore
Together with the universal upper bound, this proves both optimality claims and the theorem. This existence argument works for real capacities; it does not assume that arbitrary choices in the Ford-Fulkerson algorithm terminate. For integer capacities, positive augmentations are integral and increase the flow value by at least one, so the algorithm does terminate.
Start with zero flow and apply the Ford-Fulkerson algorithm. The following augmenting paths and bottlenecks use the capacities in the original PDF diagram:
For example, the second path is limited by the remaining capacity two on and by capacity two on . After the third augmentation, has residual capacity one; the fourth path supplies it through . Every displayed increment is the smallest residual capacity of its path.
The resulting arc flows are
Here denotes . These satisfy every capacity bound and flow conservation. The final residual network has source-reachable set . Its outgoing arcs are , , and , with capacities , all saturated. Consequently
This is a minimum cut, and the equal flow and cut values certify optimality by the max-flow min-cut theorem. The cut immediately before node eight also has capacity six, so the minimum cut is not unique.
Figure 1.
Maximum flow six and a minimum cut, with arc labels showing flow/capacity
. Details.
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 finite flow network is a directed graph with distinguished source , sink , and nonnegative finite flow network edge capacities on its directed edges. A feasible flow consists of numbers satisfying
The second condition is flow conservation; absent edges contribute zero. The strength of a flow is its net outflow from the source,
which equals net inflow to the sink by summing flow conservation over the other vertices. The maximum flow problem is
No assumption that a capacity-saturating flow at the source is feasible downstream is made. On a finite network a maximum exists, because the constraints define a nonempty compact set of edge flows and the objective is continuous.
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.
Assume first that deleting an edge leaves two transient graph components. One component supports a finite-energy unit flow from its endpoint to infinity by the finite-energy flow criterion for transience. Extend that flow by zero across the deleted edge and throughout the other component. It remains a finite-energy unit flow on the whole tree, so the tree is a transient graph.
Conversely, root a transient tree at and take its finite-energy unit electrical flow to infinity. On a tree this flow can be chosen nonnegative in every direction away from the root: it is obtained as the limit of the currents to wired boundaries, each of which sends nonnegative current into descendant subtrees. At each nonroot vertex its incoming current equals the sum of its outgoing currents, by flow conservation.
If every vertex reached by positive current had exactly one positive-current child, the unit current would run along a single infinite ray. Every edge of that ray would carry current one, so its energy of a flow would be , a contradiction. Thus there is a vertex with two positive-current child edges, say and .
The restricted flow below , rescaled by its incoming current, is a finite-energy unit flow from to infinity; hence the component below is a transient graph. After removing , the other component contains , the edge , and the descendant subtree below . Send unit current along and then use the rescaled descendant flow below , with zero current elsewhere. Its energy of a flow is finite, so this component is a transient graph too. Therefore
Unit edge resistances are essential here: an infinite ray with sufficiently rapidly decreasing resistances can be transient without any such splitting edge.
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.
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]
Strength of a flow Created 2026-09-24 Updated 2026-10-18
The strength of a flow, also called its flow value, is net outflow from , equivalently net inflow to :
The notation denotes this signed value, rather than an absolute value.[ref]
The equality follows by summing the divergence of a flow over all vertices: the internal vertices contribute zero by flow conservation, while every edge cancels between its two endpoints. Hence . For the running flow, .
Net outflow matters even when the source has incoming edges. As a separate example, give , and flow network edge capacities and flow amounts . At , flow conservation reads . The source sends units along outgoing edges but receives back, so the flow value is , exactly the amount arriving at . The two-edge network circulation through raises total edge usage without increasing net delivery.
In a flow network for treatment facilities, the amount treated at a facility is represented by a directed arc from it to the sink, with that arc's capacity equal to its treatment limit. Untreated fluid may pass through the facility independently of how much is treated there. Thus the treatment limit is not a bound on total incoming flow. Flow conservation at a facility equates incoming flow with outgoing untreated flow plus its sink-arc flow.
Vertex capacity Created 2026-10-06 Updated 2026-10-14
An internal vertex capacity bounds the total flow through that vertex, equivalently its total inflow or outflow by flow conservation. Replace the vertex by an input and output vertex, direct incoming edges to the input and outgoing edges from the output, and connect input to output with an edge of the vertex capacity. This converts the constraint into an ordinary flow network edge capacity.