Network Flow: Slides by Kevin Wayne. All Rights Reserved
Network Flow: Slides by Kevin Wayne. All Rights Reserved
Network Flow
1
Soviet Rail Network, 1955
2
Maximum Flow and Minimum Cut
3
Minimum Cut Problem
Flow network.
Abstraction for material flowing through the edges.
G = (V, E) = directed graph, no parallel edges.
Two distinguished nodes: s = source, t = sink.
c(e) = capacity of edge e.
2 9 5
10 15 15 10
4
source s 5 3 8 6 10 t sink
4 6 15
15 10
capacity
4 30 7
4
Cuts
2 9 5
10 15 15 10
4
s 5 3 8 6 10 t
4 6 15
15 10
Capacity = 10 + 5 + 15
4 30 7 = 30
5
Cuts
2 9 5
10 15 15 10
4
s 5 3 8 6 10 t
A
4 6 15
15 10
Capacity = 9 + 15 + 8 + 30
4 30 7 = 62
6
Minimum Cut Problem
2 9 5
10 15 15 10
4
s 5 3 8 6 10 t
4 6 15
A 15 10
Capacity = 10 + 8 + 10
4 30 7 = 28
7
Flows
0 4 4
s 5 3 8 6 10 t
0 0
4 0 6 15 0
10
capacity 15
flow 0
0
Value = 4
4 30 7
8
Flows
3 8 8
s 5 3 8 6 10 t
1 10
4 0 6 15 0
10
capacity 15
flow 11
11
Value = 24
4 30 7
9
Maximum Flow Problem
9
2 9 5
10 9
1
10 15 15 0 10
4 0
4 8 9
s 5 3 8 6 10 t
4 10
4 0 6 15 0
10
capacity 15
flow 14
14
Value = 28
4 30 7
10
Flows and Cuts
Flow value lemma. Let f be any flow, and let (A, B) be any s-t cut.
Then, the net flow sent across the cut is equal to the amount leaving s.
! 6
2 9 5
10 6
0
10 15 15 0 10
4 4
3 8 8
s 5 3 8 6 10 t
A
1 10
4 0 6 15 0
15 10
11
11
Value = 24
4 30 7
11
Flows and Cuts
Flow value lemma. Let f be any flow, and let (A, B) be any s-t cut.
Then, the net flow sent across the cut is equal to the amount leaving s.
! 6
2 9 5
10 6
0
10 15 15 0 10
4 4
3 8 8
s 5 3 8 6 10 t
A
1 10
4 0 6 15 0
15 10
11
11 Value = 6 + 0 + 8 - 1 + 11
4 30 7 = 24
12
Flows and Cuts
Flow value lemma. Let f be any flow, and let (A, B) be any s-t cut.
Then, the net flow sent across the cut is equal to the amount leaving s.
! 6
2 9 5
10 6
0
10 15 15 0 10
4 4
3 8 8
s 5 3 8 6 10 t
A
1 10
4 0 6 15 0
15 10
11
11 Value = 10 - 4 + 8 - 0 + 10
4 30 7 = 24
13
Flows and Cuts
Flow value lemma. Let f be any flow, and let (A, B) be any s-t cut. Then
% (
by flow conservation, all terms = " ' " f (e) $ " f (e)*
except v = s are 0 v # A & e out of v e in to v )
14
Flows and Cuts
Weak duality. Let f be any flow, and let (A, B) be any s-t cut. Then the
value of the flow is at most the capacity of the cut.
2 9 5
10 15 15 10
4
s 5 3 8 6 10 t
4 6 15
15 10
Capacity = 30
4 30 7
15
Flows and Cuts
Weak duality. Let f be any flow. Then, for any s-t cut (A, B) we have
v(f) ≤ cap(A, B).
Pf.
A 4 B
v( f ) = " f (e) # " f (e) 8
e out of A e in to A t
$ " f (e)
e out of A
$ " c(e)
s
e out of A 7
= cap(A, B) ▪ 6
16
Certificate of Optimality
Value of flow = 28
Cut capacity = 28 ⇒ Flow value ≤ 28
9
2 9 5
10 9
1
10 15 15 0 10
4 0
4 8 9
s 5 3 8 6 10 t
4 10
A 4 0 6 15 0
15 10
14
14
4 30 7
17
Towards a Max Flow Algorithm
Greedy algorithm.
Start with f(e) = 0 for all edge e ∈ E.
Find an s-t path P where each edge has f(e) < c(e).
Augment flow along path P.
Repeat until you get stuck.
0 0
20 10
s 30 0 t
10 20
0 0 Flow value = 0
2
18
Towards a Max Flow Algorithm
Greedy algorithm.
Start with f(e) = 0 for all edge e ∈ E.
Find an s-t path P where each edge has f(e) < c(e).
Augment flow along path P.
Repeat until you get stuck.
20 X
0 0
20 10
s 30 X
0 20 t
10 20
0 X
0 20 Flow value = 20
2
19
Towards a Max Flow Algorithm
Greedy algorithm.
Start with f(e) = 0 for all edge e ∈ E.
Find an s-t path P where each edge has f(e) < c(e).
Augment flow along path P.
Repeat until you get stuck.
locally optimality ⇒ global optimality
1 1
20 0 20 10
20 10 20 10
s 30 20 t s 30 10 t
10 20 10 20
0 20 10 20
2 2
greedy = 20 opt = 30
20
Residual Graph
6
flow
Residual edge.
"Undo" flow sent. residual capacity
e = (u, v) and eR = (v, u).
Residual capacity: u 11 v
21
Ford-Fulkerson Algorithm
2 4 4
capacity
G:
10 2 8 6 10
s 10 3 9 5 10 t
22
Augmenting Path Algorithm
Augment(f, c, P) {
b ← bottleneck(P)
foreach e ∈ P {
if (e ∈ E) f(e) ← f(e) + b forward edge
else f(eR)← f(eR) - b reverse edge
}
return f
}
Ford-Fulkerson(G, s, t, c) {
foreach e ∈ E f(e) ← 0
Gf ← residual graph
23
Max-Flow Min-Cut Theorem
24
Proof of Max-Flow Min-Cut Theorem
(iii) ⇒ (i)
Let f be a flow with no augmenting paths.
Let A be set of vertices reachable from s in residual graph.
By definition of A, s ∈ A.
By definition of f, t ∉ A.
original network
25
Running Time
Invariant. Every flow value f(e) and every residual capacity cf (e)
remains an integer throughout the algorithm.
26
7.3 Choosing Good Augmenting Paths
Ford-Fulkerson: Exponential Number of Augmentations
1 1
1 X
0 0 1 X
0 X
0 1
C C C C
s 1 X
0 1 t s 1 X
0 X
1 0 t
C C C C
0 X
0 1 1 X
0 X
0 1
2 2
28
Choosing Good Augmenting Paths
29
Capacity Scaling
4 4
s 1 t s t
2 2
Gf Gf (100)
30
Capacity Scaling
Scaling-Max-Flow(G, s, t, c) {
foreach e ∈ E f(e) ← 0
Δ ← smallest power of 2 greater than or equal to C
Gf ← residual graph
while (Δ ≥ 1) {
Gf(Δ) ← Δ-residual graph
while (there exists augmenting path P in Gf(Δ)) {
f ← augment(f, c, P)
update Gf(Δ)
}
Δ ← Δ / 2
}
return f
}
31
Capacity Scaling: Correctness
Integrality invariant. All flow and residual capacity values are integral.
32
Capacity Scaling: Running Time
Lemma 2. Let f be the flow at the end of a Δ-scaling phase. Then the
value of the maximum flow is at most v(f) + m Δ. proof on next slide
Theorem. The scaling max-flow algorithm finds a max flow in O(m log C)
augmentations. It can be implemented to run in O(m2 log C) time. ▪
33
Capacity Scaling: Running Time
Lemma 2. Let f be the flow at the end of a Δ-scaling phase. Then value
of the maximum flow is at most v(f) + m Δ.
Pf. (almost identical to proof of max-flow min-cut theorem)
We show that at the end of a Δ-phase, there exists a cut (A, B)
such that cap(A, B) ≤ v(f) + m Δ.
Choose A to be the set of nodes reachable from s in Gf(Δ).
By definition of A, s ∈ A.
By definition of f, t ∉ A.
A B
v( f ) = " f (e) # " f (e)
e out of A e in to A t
$ " (c(e) # %) # " %
e out of A e in to A
= " c(e) # " % # "%
s
e out of A e out of A e in to A
$ cap(A, B) - m%
original network
34
!