Max flow min cut theorem
The max flow min cut theorem is a statement in optimization theory about optimal flows in networks.Suppose G is a finite directed graph and every edge e has a capacity w(e), a non-negative real number. Further assume two vertices s and t have been distinguished. Think of G as a network of pipes; we want to pump as much stuff as possible from the source s to the sink t, never exceeding any edge's capacity.
A flow f on G from s to t assigns to each edge e a real number f(e) with 0 ≤ f(e) ≤ w(e) such that for every vertex x of G different from s and t, we have
A cut C on G between s and t is a set of edges such that every directed path from s to t passes through at least one edge in C. The capacity of the cut C is the sum of all its edge capacities.
The statement of the theorem is:
- The maximal amount of a flow is equal to the capacity of a minimal cut.
There is a partial correspondence between maximal flows and minimal cuts: if C is a minimal capacity cut, then there exists at least one maximal value flow f such that f(e) = w(e) for all e in C. Conversely, if f is a maximal flow, then there is a minimal cut C such that f(e) = w(e) for all e in C.
The theorem was proved by A. Feinstein and C.E. Shannon in 1956, and independently also by L.R. Ford, Jr. and D.R. Fulkerson in the same year. Determining maximum flows is a special kind of linear programming problem, and the max flow min cut theorem can be seen as a special case of the duality theorem for linear programming.
Maximum flows can be computed with the Ford-Fulkerson algorithm. This implies that the maximum flow of a graph with integer capacities has an integer value as well. Another way to prove this is to notice that one of the linear programming formulations of the max flow problem has a totally unimodular constraint matrix, and so has integer solutions.