# Ford-Fulkerson Max Flow Labeling Algorithm

```Ford-Fulkerson Max Flow Labeling Algorithm
Harvey J. Greenberg
http://carbon.cudenver.edu/hgreenbe/
December 22, 1998
The Ford-Fulkerson max ow labeling algorithm[3, 4] was introduced in the mid-1950's, and became
the seminal work that is still applicable. The material presented in this note is taken from their
book[5].
We are given a simple network with two specied nodes: source (s) and sink (t). Since the
network is assumed to be simple, an arc is identied by its endpoints: (x; y ) is the arc from node
x to node y . A ow across arc (x; y ) is denoted by f (x; y ), and the arc's capacity is c(x; y ). The
ow must satisfy 0 f (x; y ) c(x; y ).
The algorithm has two parts, which Ford and Fulkerson called Routine A and Routine B,
respectively. The rst is a labeling process that searches for a ow augmenting path { i.e., a path
from s to t for which f &lt; c along all forward arcs and f &gt; 0 along all backward arcs. If Routine A
nds a ow augmenting path, Routine B changes the ow accordingly. Otherwise, no augmenting
path exists, and optimality of the current ow is ensured by their theorem:
Theorem. A ow f has maximum value if, and only if, there is no ow augmenting path with
respect to f .
We begin with any feasible ow (e.g., f = 0). In general, a node is in one of three states:
unlabeled, labeled and scanned, or labeled and unscanned. Upon entering Routine A, all nodes are
unlabeled. The rst step renders the source labeled and unscanned.
Routine A (labeling process). Initially, label the source (,; &quot;(s) = 1).
General step: Select any node, x, that is labeled and unscanned, and let (z; &quot;(x)) be
its label. To all unlabeled successor nodes, y , such that f (x; y ) &lt; c(x; y ), assign the label
(x+ ; &quot;(y )), where
&quot;(y ) = minf&quot;(x); c(x; y ) , f (x; y )g:
(Such y are now labeled and unscanned.) To all predecessor nodes, y , that are unlabeled,
such that f (y; x) &gt; 0, assign the label (x, ; &quot;(y )), where
&quot;(y ) = minf&quot;(x); f (y; x)g:
(Such y are now labeled and unscanned.) Now dene x to be labeled and scanned. Repeat the
general step until the sink is labeled and unscanned, or until no more labels can be assigned.
In the former case, go to Routine B; in the latter case, terminate (f is a maximum ow).
1
Routine B (ow change). The sink has been labeled (y ; &quot;(t)). If the rst part of the label is y + ,
replace f (y; t) with f (y; t) + &quot;(t); otherwise, replace f (t; y ) with f (t; y ) , &quot;(t). Go to node y
and treat it the same way: if its label is (x+ ; &quot;(y )), replace f (x; y ) with f (x; y ) + &quot;(t); if its
label is (x, ; &quot;(y )), replace f (y; x) with f (y; x) , &quot;(t). In either case, go to node x and repeat
Example. The following is also taken from the Ford and Fulkerson book. The arc numbers are
c(x; y ); f (x; y ).
The initial ow sends one unit along the path (s; x; y; t).
x
1, 1
s
3, 0
1, 1
t
1, 0
3, 0
1, 1
y
The rst execution of Routine A results in \breakthrough&quot; (i.e., nding a ow augmenting path)
with the following labels:
After one step in Routine A:
x
1, 1
(
,
)
s
3, 0
1, 1
t
1, 0
scanned
3, 0
1, 1
y
(s +, 3)
unscanned
After two steps in Routine A:
(y +, 1)
unscanned
x
1, 1
(
,
)
s
3, 0
1, 1
t
1, 0
scanned
3, 0
1, 1
y
(s +, 3)
scanned
2
After three steps in Routine A:
(y +, 1)
scanned
x
1, 1
,
(
)
3, 0
s
1, 1
(x +, 1)
t
1, 0
unscanned
scanned
3, 0
1, 1
y
(s +, 3)
scanned
Breakthrough.
We now execute Routine B to obtain new ows:
x
1, 1
s
3, 1
1, 1
t
1, 1
3, 1
1, 1
y
After repeating Routine A, we nish with the following labels.
(y -, 1)
x
1, 1
(
,
)
s
3, 1
1, 1
t
1, 1
3, 1
(x +, 1)
1, 1
y
(s +, 2)
This shows that the ow can be increased by 1 (= &quot;(t)) along the ow augmenting path,
(s; (y; x); t). Working backwards from the sink, the path traverses arc (x; t) in a forward direction,
so its ow increases by 1 (f (x; t) becomes 2). The label at x tells us we traverse arc (x; y ) in a
backward direction, so we decrease that ow by 1 ((f (x; y ) becomes 0). We then move to node y ,
3
and its label tells us that the ow augmenting path traverses arc (s; y ) in the forward direction, so
its ow increases by 1 (f (s; y ) becomes 2). Since we reach the source (s), Routine B terminates,
and we return to Routine A with the following ows and initial label:
x
1, 1
(
,
)
s
3, 2
1, 0
t
1, 1
3, 2
1, 1
y
After executing Routine A, we nd there is no ow augmenting path, so the current ow has
the maximum value of 3 units from s to t. The nal labels are shown:
x
1, 1
(
,
)
s
3, 2
1, 0
t
1, 1
3, 2
1, 1
y
(s +, 1)
Convergence
When the capacities are integer-valued, the ow increases by at least one unit each iteration, so
termination must be nite. Further, in this case, it can be shown that it takes at most jV jjE j
iterations to terminate
a pathology when the data are
p with a maximum ow. Chvatal[2] describes
k
+2
irrational. Let = ( 5 , 1)=2 (note the critical property: = k , k+1 for all k = 1; 2; : : :)
The following network [1] has arc capacities equal to 1 + , except three arcs:
c(3; 6) = 1; c(1; 2) = c(4; 6) = :
1
s
3
1
σ
σ
6
4
2
5
4
t
The Ford-Fulkerson max ow labeling algorithm yields a sequence of ow increases, but it does
not terminate nitely. Here are the iterations that show a pattern of ow augmenting paths that
continue cyclically.
End of
Iteration
6k + 1
6k + 2
6k + 3
6k + 4
6k + 5
6k + 6
6(k + 1) + 1
Augmenting
Path
x12
x36
x46
(s; 1; 2; 3; 6; t)
1 , 3k+2
, 3k+1
(s; 2; 1; 3; 6; 5; t) , 3k+2
1
, 3k+1
(s; 1; 2; 4; 6; t)
1
, 3k+3
(s; 2; 1; 4; 6; 3; t) , 3k+3 1 , 3k+3
3k +3
(s; 1; 2; 5; 6; t)
1,
(s; 2; 1; 5; 6; 4; t) , 3k+4 1 , 3k+3
, 3k+4
(s; 1; 2; 3; 6; t)
1 , 3(k+1)+2 , 3(k+1)+1
Limit:
1
This table appeared in [1].
x65
0
3k +2
3k+2
3k+2
3k+4
0
0
0
References
[1] D.P. Bertsekas. Linear Network Optimization: Algorithms and Codes. MIT Press, Cambridge,
MA, 1991.
[2] V. Chvatal. Linear Programming. W.H. Freeman and Co., New York, NY, 1983.
[3] L.R. Ford, Jr. and D.R. Fulkerson. Maximal Flow Through a Network. Canadian Journal of
Mathematics, 8:399{404, 1956.
[4] L.R. Ford, Jr. and D.R. Fulkerson. A Simple Algorithm for Finding Maximal Network Flows
and an Application to the Hitchcock Problem. Canadian Journal of Mathematics, 9:210{218,
1957.
[5] L.R. Ford, Jr. and D.R. Fulkerson. Flows in Networks. Princeton University Press, Princeton,
NJ, 1962.
5
```