Applications of Maximum Flow
The maximum-flow framework extends far beyond literal flow problems. Many combinatorial optimisation problems reduce to flow networks. The key skill for Tripos is recognising when a problem “feels like max flow” and constructing the right network.
Edge-Disjoint Paths
Problem: find the maximum number of edge-disjoint paths from to in a directed graph.
Reduction: give every edge capacity 1. Run max flow. Each unit of flow corresponds to one path. Since capacities are 1, no edge can carry flow from two different paths simultaneously. The max flow value equals the maximum number of edge-disjoint paths. Running time: with Edmonds-Karp.
Menger’s Theorem then follows: the maximum number of edge-disjoint - paths equals the minimum number of edges whose removal disconnects from (the minimum edge cut).
Vertex-Disjoint Paths
Problem: find maximum number of vertex-disjoint - paths (paths sharing no vertices except and ).
Reduction: split each vertex into and with a capacity-1 edge . Replace each original edge with of capacity (or a sufficiently large value). Run max flow. The capacity-1 internal edge ensures each vertex is used by at most one path.
Circulation with Demands
Problem: each vertex has a demand : positive means supply, negative means demand (net requirement to consume flow). Find a feasible flow satisfying all demands, or determine none exists.
Reduction: add supersource and supersink . For each vertex with (supply), add edge with capacity . For each vertex with (demand), add edge with capacity . Original edges keep their capacities. Run max flow from to . Feasible circulation exists iff all edges from are saturated.
Project Selection / Maximum Closure
Problem: given a set of projects, each with profit (positive or negative), and dependencies (project requires project ), select a subset maximising total profit.
Reduction: bipartite-style network. Projects with connect from with capacity . Projects with connect to with capacity . For each dependency ( requires ), add edge with capacity . The minimum cut produces the optimal selection: projects on the -side of the cut are selected. Max profit .
Image Segmentation
Problem: partition pixels into foreground and background, balancing pixel affinities with prior expectations.
Reduction: graph where each pixel is a vertex with edges to neighbours. Source represents foreground, sink represents background. Edge capacities encode how strongly a pixel “prefers” each label, and how much adjacent pixels should agree. The minimum cut gives the optimal segmentation.
Supersources and Supersinks
Multiple sources and multiple sinks reduce to a single source/sink pair by adding a supersource with infinite-capacity edges to each , and a supersink with infinite-capacity edges from each . This is a standard trick for any flow problem with multiple origins or destinations.
Recognising Flow Problems
Common signs a problem reduces to max flow:
- Items must be assigned to slots, with each item/slot used at most once (capacity 1)
- Constraints are local (edge capacities) and sequential (paths)
- The objective involves a “bottleneck” or “separation”
- The problem is about cutting or separating a graph into two parts
Summary
| Application | Key Reduction Trick |
|---|---|
| Edge-disjoint paths | Capacity 1 on all edges |
| Vertex-disjoint paths | Split each vertex with capacity 1 |
| Circulation | Supersource/sink + demands as edge capacities |
| Project selection | Source for profits, sink for costs, -capacity dependencies |
| Image segmentation | Graph on pixels, min-cut = optimal labelling |
| Multiple sources/sinks | Supersource + supersink with edges |
Past Tripos: y2024p2q7, y2022p1q9.