flow out

Max-flow min-cut theorem

The max-flow min-cut theorem is a statement in optimization theory about maximum flows in flow networks. It derives from Menger's theorem. It states that:
The maximum amount of flow is equal to the capacity of a minimal cut.

In other words, the theorem states that the maximum flow in a network is dictated by its bottleneck. Between any two nodes, the quantity of material flowing from one to the other cannot be greater than the weakest set of links somewhere between the two nodes.


Suppose G(V,E) is a finite directed graph and every edge (u,v) has a capacity c(u,v) (a non-negative real number). Further assume two vertices, the source s and the sink t, have been distinguished.

A cut is a split of the nodes into two disjoint sets S and T, such that s is in S and t is in T. Hence there are


possible cuts in a graph. The capacity of a cut (S,T) is

c(S,T) = sum_{u in S, v in T | (u,v) in E} c(u,v),

the sum of the capacity of all the edges crossing the cut, from the region S to the region T.

The following three conditions are equivalent:

  1. f is a maximum flow in G
  2. The residual network G_f contains no augmenting paths.
  3. |f| = c(S,T) for some cut (S,T).

Proof sketch: If there is an augmenting path, we can send flow along it, and get a greater flow, hence it cannot be maximal. If there is no augmenting path, divide the graph into S, the nodes reachable from s in the residual network, and T, those not reachable. Then c(S,T) in the residual network must be 0. If it is not, there is an edge (u,v) with c(u,v) > 0. But then v is reachable from s, and cannot be in T.

In particular this proves that max flow ge min cut, since max flow ge |f| = c(S,T) ge min cut.

We also have max flow le min cut because given any flow, f, and any cut, (S,T), we can sum the equations of conservation of flow at every point of S setminus {s} to show that |f| = the flow of f along edges joining S and T which is no more than c(S,T).

Linear Program

The max-flow min-cut problem can be easily expressed as a pair of primal-dual linear programs. The following linear program computes the max flow between nodes S and T in graph G=(V, E), where V is the set of nodes and E is the set of edges. The capacity of any edge overrightarrow{uv}in E is represented by c(overrightarrow{uv}). The linear program assumes the graph to be directed. The linear program for the undirected case can be easily derived from the same.

Primal (Max flow linear program)



Subject To

sum_{overrightarrow{vu}in E} f(overrightarrow{vu}) - sum_{overrightarrow{uv}in E} f(overrightarrow{uv}) = 0 qquad forall u in Vneq {S, T} qquad leftrightarrow p(u)

sum_{overrightarrow{vT}in E} f(overrightarrow{vT}) - sum_{overrightarrow{Tv}in E} f(overrightarrow{Tv}) - f(overrightarrow{TS}) = 0 qquad leftrightarrow p(T)

sum_{overrightarrow{vS}in E} f(overrightarrow{vS}) + f(overrightarrow{TS}) - sum_{overrightarrow{Sv}in E} f(overrightarrow{Sv}) = 0 qquad leftrightarrow p(S)

f(overrightarrow{uv}) leq c(overrightarrow{uv}) qquad forall overrightarrow{uv}in E qquad leftrightarrow x(overrightarrow{uv})


f(overrightarrow{uv}) geq 0 qquad forall overrightarrow{uv} in E, quad f(overrightarrow{TS}) geq 0

Primal Explanation: The linear program computes the max flow in the variable f(overrightarrow{TS}). overrightarrow{TS} is a conceptual link. As there is flow conservation (flow in equals flow out) at every node, the more flow that is on this conceptual link, the more will be the flow between the source and the destination. The first constraint specifies the flow conservation at every node except the source and the destination. The second and third constraints are special flow conservation constraints for the destination and the source respectively. The final constraint limits the maximum flow on the edge to its capacity. The variable shown right at the end of every constraint is the corresponding dual variable.
An interesting fact about the above linear program is that the constraint matrix is totally unimodular. This means that, if all the inputs are integral, there exists as an integral solution. So, if all the capacities in the graph are integral, the max flow is integral.

Dual (Min cut linear program)

mathbf{sum_{overrightarrow{uv} in E} c(overrightarrow{uv}) . x(overrightarrow{uv})}

Subject To

p(v) - p(u) + x(overrightarrow{uv}) geq 0 qquad forall overrightarrow{uv} in E qquad leftrightarrow f(overrightarrow{uv})

p(S) - p(T) geq 1 qquad leftrightarrow f(overrightarrow{TS})


p(u) free quad forall u, x(overrightarrow{uv}) geq 0 quad forall overrightarrow{uv}

Dual explanation: The dual can be written mechanically from the primal based on the duality theorem in linear programming. In the dual, the variable x(overrightarrow{uv}) decides whether an edge is a cut edge are not. The edges for which x(overrightarrow{uv})>0 are part of the min cut and the edges for which it is 0 are not part of the cut edge. The nodes in the graph that are along with the node S after the cut can be considered to be one partition and the nodes in the graph that are with the node T can be considered to be another partition. The constraints represent the relationship between the nodes in different sets. To illustrate this, consider an example where the solution is such that the value of p for the nodes in the partition containing S is 0 and 1 otherwise. It is now obvious to see that the value of x for the cut edges is 1 and for the rest it is 0. This will also help in understanding the meaning of the constraints. Finally, as in the primal, the variable shown right at the end of every constraint is the corresponding primal variable.
One of the interesting relationships between the primal and dual is that the objective value of optimal solutions for the primal and the dual are exactly same. Thus, since the objective value of the primal is integral, the dual will also have an integral objective value. Thus, if all the input capacities are integral, the min cut is integral.


Given to the right is a network with nodes V={s,o,p,q,r,t}, and a total flow from the source s to the sink t of 5, which is maximal in this network. (Incidentally, this is the only maximal flow you can assign to this network.)

There are three minimal cuts in this network:

Cut Capacity
S={s,p},T={o,q,r,t} c(s,o)+c(p,r)=3+2=5
S={s,o,p},T={q,r,t} c(o,q)+c(p,r)=3+2=5
S={s,o,p,q,r},T={t} c(q,t)+c(r,t)=2+3=5

Notice that S={s,o,p,r},T={q,t} is not a minimal cut, even though both (o,q) and (r,t) are saturated in the given flow. This is because in the residual network G_f, there is an edge (r,q) with capacity c_f(r,q) = c(r,q)-f(r,q)=0-(-1)=1.


The theorem was proved by P. Elias, 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.

See also


External links

Search another word or see flow outon Dictionary | Thesaurus |Spanish
Copyright © 2015, LLC. All rights reserved.
  • Please Login or Sign Up to use the Recent Searches feature