Motivation
The maximum flow problem asks how much of a commodity can be sent from a source to a sink through a network whose arcs have capacities. It underlies bipartite matching, transportation, scheduling and many reductions in combinatorial optimization. The classical method for it, the labeling method of Ford and Fulkerson (Flows in Networks, 1962), repeatedly finds an augmenting path and pushes flow along it. With integer capacities it terminates, but the number of augmentations can be as large as the maximum flow value itself, and Edmonds and Karp exhibit a four-node network on which this happens (p. 250). With irrational capacities the method need not terminate at all.
Edmonds and Karp, Theoretical Improvements in Algorithmic Efficiency for Network Flow Problems, J. ACM 19(2):248–264, 1972 (doi:10.1145/321694.321699), showed that two simple rules for choosing the augmenting path repair this. The first, augmenting along a path with fewest arcs, is the subject of mission 1 of this series. This mission covers the second (§1.3): augment along a path that gives the largest possible augmentation. For integer capacities the number of augmentations then grows only logarithmically in the maximum flow value.
Setting
A network N has a finite set V of nodes, a source s and a sink t=s, and a set of arcs, ordered pairs (u,v) with u=v, at most one from each node to another. One arc is the return arc (t,s); the other arcs form the set A, and each (u,v)∈A has a capacity c(u,v)>0. A flow is a nonnegative function f on the arcs of N with f(u,v)≤c(u,v) on A and flow conservation at every node, s and t included. Its value is f(t,s), the flow returned along the return arc; a maximum flow has the largest value among all flows, and f∗(t,s) denotes that value.
The residual network Nf has an arc (u,v) whenever (u,v)∈A and c(u,v)−f(u,v)>0, or (v,u)∈A and f(v,u)>0. An augmenting path is a directed path s=u1,…,up=t of distinct nodes in Nf. Each of its arcs (u,v) has a residual amount e(u,v), equal to c(u,v)−f(u,v), f(v,u), or c(u,v)−f(u,v)+f(v,u) according to which of (u,v), (v,u) lie in A, and the path's augmentation is ε=mine(ui,ui+1). Augmenting increases f(t,s) by ε and changes the flow on the arcs of the path accordingly, with the paper's own rule when both (u,v) and (v,u) are arcs. The labeling method produces flows f0,f1,… by augmenting along a path relative to fk as long as one exists.
The rule studied here chooses, at every step, an augmenting path whose ε is at least that of every other augmenting path relative to the current flow. The bound involves an integer M>1 such that every partition of the nodes into X∋s and Xˉ∋t has at most M arcs of N with one end on each side.
Formalization targets
Goal: Theorem 2 (p. 253)
For a network with integer capacities, M as above, and a run f0,…,fK of the labeling method with maximum augmentations started from an integer-valued flow,
K≤1+logM/(M−1)f∗(t,s),
and if no augmenting path relative to fK exists, then fK is a maximum flow.
Milestones
The milestone list follows the paper's argument:
- augmentation produces a flow of value f(t,s)+ε (§1.1, p. 249);
- a flow is maximum if and only if it has no augmenting path (§1.1, pp. 249–250);
- with integer capacities, ε is a positive integer and the flows of the method stay integer-valued (§1.1, p. 250);
- the cut inequality c(X,Xˉ)≥f(X,Xˉ)−f(Xˉ,X)=f(t,s) (p. 254);
- f∗(t,s)−fk(t,s)≤εkM, where εk=fk+1(t,s)−fk(t,s) (p. 254);
- f∗(t,s)−fk+1(t,s)≤[f∗(t,s)−fk(t,s)](1−M−1) (p. 254);
- f∗(t,s)−fk(t,s)≤f∗(t,s)(1−M−1)k (p. 254).
Significance
Theorem 2 was among the first bounds showing that a maximum flow algorithm can be made polynomial in the size of the numbers rather than in their values: since M≤n2/2 and f∗(t,s) is at most n2 times the average capacity, the bound is O(n2log(n2cˉ)) in terms of the number of nodes n and the average capacity cˉ (p. 254). The largest-augmentation rule, often called the fattest-path or maximum-capacity augmenting path rule, is a standard textbook variant, and its geometric-decrease argument is the model for later capacity-scaling methods, including the scaling algorithm for the Hitchcock problem in §2 of the same paper (mission 3 of this series).
The theorem has been proved since 1972 and appears in standard texts. As far as a platform search shows (2026-09-26), no machine-checked proof of it exists on Prove2Me. The platform does contain LinearOptimization.max_flow_min_cut and LinearOptimization.max_flow_ford_fulkerson_integer_termination, which state max-flow min-cut and termination of the generic method in a different network model (parallel arcs, extended nonnegative capacities, no return arc); they give no count of augmentations and are related work only. This mission would contribute a formal proof of the counting bound together with the general labeling-method facts (milestones 1–3), which mission 1 needs as well.
Difficulty
The obvious argument, that each augmentation raises the value by at least 1, gives only the bound f∗(t,s), and on the four-node example of p. 250 that bound is attained by an arbitrary choice of paths. The logarithmic bound needs a lower bound on the size of the largest augmentation in terms of the remaining gap f∗(t,s)−fk(t,s). The largest augmentation is defined by comparison with all augmenting paths relative to the current flow, while the gap is a global quantity of the network, and neither integrality nor the maximum-augmentation rule alone controls it. Milestone 2's converse, that a non-maximum flow always admits an augmenting path, is itself the max-flow min-cut theorem in this model, and the formal proof has to establish it for the paper's return-arc model rather than import it from a different one.
Formalization scope
- Nodes form a finite type
V with decidable equality. A : Finset (V × V) contains no loops and not (t,s). Capacities are real, c : V → V → ℝ, positive on A. Integrality is the hypothesis IntegralCaps N, and for the initial flow IsIntegralOn N (f 0) (integer values on the arcs of N, the return arc included).
- Flows are functions
V → V → ℝ constrained only on the arcs of N. A maximum flow is the predicate IsMaxFlow, comparing f(t,s) with every flow, not a supremum. The goal takes a maximum flow g as a hypothesis and sets f∗(t,s)=g(t,s); every network has one.
- Augmenting paths are duplicate-free node lists whose consecutive pairs are arcs of Nf. The page prints Case (b) of the definition of εi with the same hypothesis as Case (c); the corrected Case (b), (u,v)∈/A and (v,u)∈A, is used, as the definition of Nf (p. 251) and the list for e(u,v) (p. 253) confirm.
- A run is
IsMaxAugRun N K f P. Its initial flow is arbitrary except for integrality, and each later flow is the augmentation of the previous one along a path of maximum ε among all augmenting paths.
- The crossing bound
CrossArcsBounded N M counts the arcs of N, return arc included, with one end on each side of every s–t partition. This is the literal reading of p. 253.
- Explicit constants. The bound is exactly 1+logM/(M−1)f∗(t,s), written
(K : ℝ) ≤ 1 + Real.logb ((M : ℝ) / ((M : ℝ) - 1)) (g N.t N.s) with M>1 a natural number. When f∗(t,s)=0, Real.logb gives 0 and the bound reads K≤1. The contraction factor is 1 - (M : ℝ)⁻¹.
- A statement that bounds only runs of an unsatisfiable step predicate, drops the integrality of f0 or of the capacities (the bound is false without them), or compares ε only among paths of some restricted class does not formalize Theorem 2. A sorry-free check exhibits a four-node network with integer capacities and a valid maximum-augmentation step.
- Reusable beyond this mission: the return-arc network model, the augmentation step with the paper's opposite-arc rule, the integrality lemma, and the cut inequality. Proofs of any milestone are welcome, as are proofs of the converse in milestone 2 that could later be shared with mission 1.
Selected references