ENGRI 1101 Engineering Applications of OR
Fall 2008 Handout 5
The maximum flow problem
The next mathematical model that we shall consider is called the
maximum flow problem
. This problem
can be motivated by the following setting. Imagine that you have a network of pipes that are used to ship,
for example, oil from its source, to where is it is refined. Each pipe in the network can maintain a certain
capacity of flow (per second), which depends on its crosssection, and other less significant factors. At what
rate can we deliver oil to the refinery?
We shall model this problem in the following way. The network of pipes corresponds to a directed graph
G
= (
N, A
) . Each arc (
v, w
)
∈
A
has specified capacity
u
(
v, w
) . There is a specified source node
s
∈
N
and a specified sink node
t
∈
N
. This is the entire input to the maximum flow problem.
To specify a solution for this input, we must give a flow value
f
(
v, w
) for each arc (
v, w
)
∈
A
. Such a
solution
f
is feasible if
1.
0
≤
f
(
v, w
)
≤
u
(
v, w
) for each (
v, w
)
∈
A
; and
2.
summationdisplay
(
w,v
)
∈
A
f
(
w, v
) =
summationdisplay
(
v,w
)
∈
A
f
(
v, w
) for each node
v
∈
N
 {
s, t
}
(i.e., each node that is neither the source nor the sink).
The first type of constraints, the inequalities, are called capacity constraints and the second type, the
equations, are called node flow conservation constraints.
The value of a flow
f
is the total net flow into
t
, which is equal to
summationdisplay
(
w,t
)
∈
A
f
(
w, t
)

summationdisplay
(
t,w
)
∈
A
f
(
t, w
)
.
This is the objective function for the maximum flow problem; in other words, we wish to find a feasible flow
of maximum value.
How big can the optimal flow value be? Partition the vertices
N
into a set
S
containing the source
s
and a set
T
containing the sink
t
. (The sets
S
and
T
form a partition of
N
if each node in
N
is
in
exactly
one of
S
and
T
.) We shall call such a partition (
S, T
) a
cut
; note that the definition of a cut
requires that
s
∈
S
and
t
∈
T
. Observe that every unit of flow that goes from node
s
to node
t
must at
some point pass along an edge (
v, w
)
∈
E
where
v
∈
S
and
w
∈
T
. However, there are only so many arcs
of this form, and each such arc (
v, w
) has an upper bound
u
(
v, w
) on the total flow that can use it. If we
let
D
(
S, T
) denote the set of arcs (
v, w
) for which
v
∈
S
and
w
∈
T
, then the
capacity
of the cut (
S, T
)
is equal to
∑
(
v,w
)
∈
D
(
S,T
)
u
(
v, w
)
.
Since each unit of flow from
s
to
t
“uses up” one unit of the capacity of
the cut (
S, T
) , the value of the maximum flow is at most the capacity of the cut. This claim is true for
any
cut (
S, T
) . For the same input, some cuts may have large capacity, and some cuts may have small capacity.
However, for each cut, its capacity places a limit on the value of the maximum flow. Hence, if we found a
cut of minimum capacity, this would give us the best information about how big the maximum flow value
might be.