The Ford-Fulkerson Method
The Ford-Fulkerson method is the foundational approach to solving the maximum-flow problem. It repeatedly finds paths from source to sink in the residual network and augments flow along them.
Core Idea
Start with zero flow. While an augmenting path (a simple path from to in the residual network ) exists, compute the bottleneck capacity along that path and push that amount of additional flow through every edge of the path.
Algorithm
FORD-FULKERSON(G, s, t):
initialise flow f = 0 on all edges
while there exists an augmenting path p in G_f:
c_f(p) = min{ c_f(u, v) | (u, v) on p }
for each edge (u, v) on p:
if (u, v) in G.E:
f(u, v) = f(u, v) + c_f(p)
else:
f(v, u) = f(v, u) - c_f(p)
return f
When processing a residual edge that corresponds to a reverse direction, we decrease the forward flow (cancelling it), effectively “pushing flow backwards”.
Finding Augmenting Paths
Any graph search (DFS or BFS) on suffices. DFS may produce long, meandering paths; BFS finds shortest augmenting paths (in number of edges) and leads to the Edmonds-Karp variant.
Worked Example
Consider this network (edge labels show capacity):
s ---10--> a ---3--> b ---7--> t
| | ^
+----5--->b-----------------+
a ---8--> t
Initial flow is zero everywhere. Residual network equals original.
Iteration 1: augmenting path , bottleneck . Flow: , . Residual: has residual 2, has residual 0, plus reverse edges capacity 8, capacity 8.
Iteration 2: augmenting path , bottleneck . Flow: , . Residual: has residual 0, has residual 2.
Iteration 3: augmenting path , bottleneck . Flow: , , . Residual: saturated, saturated, has residual 1.
No further augmenting paths exist. Maximum flow value .
The residual network at termination shows can only reach ; sink is unreachable. This partition is a minimum cut (see Max-Flow Min-Cut Theorem).
Termination and Running Time
Integer Capacities
If all capacities are integers, each augmentation increases by at least 1. Since total capacity out of , at most augmentations, where is the maximum flow. Cost per augmentation: for DFS/BFS. Total: .
This is pseudopolynomial: the running time depends on the numeric value of the capacities, not just the graph size. For a network where is large (e.g. capacity ), this is impractical.
Irrational Capacities
With irrational capacities, Ford-Fulkerson with arbitrary path selection may fail to terminate. The flow can increase by ever-smaller increments in a non-convergent series. This is a theoretical concern only; all practical implementations use rational capacities.
Practical Considerations
Always use BFS (Edmonds-Karp) or Dinic’s algorithm. Never use arbitrary DFS path selection in real code. See Edmonds-Karp Algorithm for the polynomial-time variant.
Summary
| Aspect | Detail |
|---|---|
| Core operation | Find augmenting path in , push bottleneck capacity |
| Flow cancellation | Reverse edges in allow “undoing” flow |
| Termination (integer) | — pseudopolynomial |
| Termination (irrational) | Not guaranteed |
| Key insight | Residual network encodes all possible flow adjustments |
Past Tripos: y2024p1q9, y2022p2q7.