cse 202 network flow - ucsd mathematicsfan/teach/202/notes/07maxflow15.pdf · maximum flow and...
TRANSCRIPT
CSE 202
Network flow
Fan Chung Graham
UC San Diego
What is a network?
LAN
WANCAN MAN
HAN
SDSC, skitter (July 1998)
An induced subgraph of the collaborationgraph with authors of Erdös number ! 2.
What is a network?
graph++.A network =
Network = Graph++
+ traffic demand
+ traffic capacity
+ traffic location
1
Chapter 7
Network Flow
Slides by Kevin Wayne.Copyright © 2005 Pearson-Addison Wesley.All rights reserved.
2
Soviet Rail Network, 1955
Reference: On the history of the transportation and maximum flow problems.Alexander Schrijver in Math Programming, 91: 3, 2002.
3
Maximum Flow and Minimum Cut
Max flow and min cut.
! Two very rich algorithmic problems.
! Cornerstone problems in combinatorial optimization.
! Beautiful mathematical duality.
Nontrivial applications / reductions.
! Data mining.
! Open-pit mining.
! Project selection.
! Airline scheduling.
! Bipartite matching.
! Baseball elimination.
! Image segmentation.
! Network connectivity.
! Network reliability.
! Distributed computing.
! Egalitarian stable matching.
! Security of statistical data.
! Network intrusion detection.
! Multi-camera scene reconstruction.
! Many many more . . .
4
The game of hex
5
A 11 x 11 hex board
Connect the red
= cut the blue
The red player wishes to form a path
joining the two red side.
Same for the blue player.
Tip:
6
A planar graph
A B
Y
X
7
Maximum Flow and Minimum Cut
Max flow and min cut.
! Two very rich algorithmic problems.
! Cornerstone problems in combinatorial optimization.
! Beautiful mathematical duality.
Nontrivial applications / reductions.
! Data mining.
! Open-pit mining.
! Project selection.
! Airline scheduling.
! Bipartite matching.
! Baseball elimination.
! Image segmentation.
! Network connectivity.
! Network reliability.
! Distributed computing.
! Egalitarian stable matching.
! Security of statistical data.
! Network intrusion detection.
! Multi-camera scene reconstruction.
! Many many more . . .
8
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.
Minimum Cut Problem
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4
capacity
source sink
9
Def. An s-t cut is a partition (A, B) of V with s ! A and t ! B.
Def. The capacity of a cut (A, B) is:
Cuts
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4
Capacity = 10 + 5 + 15 = 30
A
cap( A, B) = c(e)e out of A
!
10
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4 A
Cuts
Def. An s-t cut is a partition (A, B) of V with s ! A and t ! B.
Def. The capacity of a cut (A, B) is:
cap( A, B) = c(e)e out of A
!
Capacity = 9 + 15 + 8 + 30 = 62
11
Min s-t cut problem. Find an s-t cut of minimum capacity.
Minimum Cut Problem
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4 A
Capacity = 10 + 8 + 10 = 28
12
Def. An s-t flow is a function that satisfies:
! For each e ! E: (capacity)
! For each v ! V – {s, t}: (conservation)
Def. The value of a flow f is:
Flows
4
0
0
0
0 0
0 4 4
0
0
0
Value = 40
f (e)e in to v
! = f (e)e out of v
!
0 ! f (e) ! c(e)
capacity
flow
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4 0
v( f ) = f (e) e out of s
! .
4
13
Def. An s-t flow is a function that satisfies:
! For each e ! E: (capacity)
! For each v ! V – {s, t}: (conservation)
Def. The value of a flow f is:
Flows
10
6
6
11
1 10
3 8 8
0
0
0
11
capacity
flow
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4 0
Value = 24
f (e)e in to v
! = f (e)e out of v
!
0 ! f (e) ! c(e)
v( f ) = f (e) e out of s
! .
4
14
Max flow problem. Find s-t flow of maximum value.
Maximum Flow Problem
10
9
9
14
4 10
4 8 9
1
0 0
0
14
capacity
flow
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4 0
Value = 28
15
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.
Flows and Cuts
10
6
6
11
1 10
3 8 8
0
0
0
11
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4 0
Value = 24
f (e)e out of A
! " f (e)e in to A
! = v( f )
4
A
16
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.
Flows and Cuts
10
6
6
1 10
3 8 8
0
0
0
11
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4 0
f (e)e out of A
! " f (e)e in to A
! = v( f )
Value = 6 + 0 + 8 - 1 + 11 = 24
4
11
A
17
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.
Flows and Cuts
10
6
6
11
1 10
3 8 8
0
0
0
11
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4 0
f (e)e out of A
! " f (e)e in to A
! = v( f )
Value = 10 - 4 + 8 - 0 + 10 = 24
4
A
18
Flows and Cuts
Flow value lemma. Let f be any flow, and let (A, B) be any s-t cut. Then
Pf.
f (e)e out of A
! " f (e) = v( f )e in to A
! .
v( f ) = f (e)e out of s
!
=
v "A
! f (e)e out of v
! # f (e)e in to v
!$
% &
'
( )
= f (e)e out of A
! # f (e).e in to A
!
by flow conservation, all termsexcept v = s are 0
19
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.
Cut capacity = 30 ! Flow value " 30
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4
Capacity = 30
A
20
Weak duality. Let f be any flow. Then, for any s-t cut (A, B) we have
v(f) ! cap(A, B).
Pf.
!
Flows and Cuts
v( f ) = f (e)e out of A
! " f (e)e in to A
!
# f (e)e out of A
!
# c(e)e out of A
!
= cap(A,B)
s
t
A B
7
6
8
4
21
Certificate of Optimality
Corollary. Let f be any flow, and let (A, B) be any cut.
If v(f) = cap(A, B), then f is a max flow and (A, B) is a min cut.
Value of flow = 28Cut capacity = 28 ! Flow value " 28
10
9
9
14
4 10
4 8 9
1
0 0
0
14
s
2
3
4
5
6
7
t
15
5
30
15
10
8
15
9
6 10
10
10 15 4
4 0A
22
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.
s
1
2
t
10
10
0 0
0 0
0
20
20
30
Flow value = 0
23
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.
s
1
2
t
20
Flow value = 20
10
10 20
30
0 0
0 0
0
X
X
X
20
20
20
24
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.
greedy = 20
s
1
2
t
20 10
10 20
30
20 0
0
20
20
opt = 30
s
1
2
t
20 10
10 20
30
20 10
10
10
20
locally optimality " global optimality
25
Residual Graph
Original edge: e = (u, v) ! E.
! Flow f(e), capacity c(e).
Residual edge.
! "Undo" flow sent.
! e = (u, v) and eR = (v, u).
! Residual capacity:
Residual graph: Gf = (V, Ef ).
! Residual edges with positive residual capacity.
! Ef = {e : f(e) < c(e)} " {eR : f(e) > 0}.
u v 17
6
capacity
u v 11
residual capacity
6
residual capacity
flow
c f (e) =c(e)! f (e) if e " E
f (e) if eR " E
# $ %
26
Ford-Fulkerson Algorithm
s
2
3
4
5 t 10
10
9
8
4
10
10 6 2
G:capacity
7. Ford-Fulkerson Demo
28
Ford-Fulkerson Algorithm
s
2
3
4
5 t 10
10
9
8
4
10
10 6 2
0
0
0
0 0 0
0
0
G:
Flow value = 0
0
flow
capacity
29
Ford-Fulkerson Algorithm
s
2
3
4
5 t 10
10
9
8
4
10
10 6 2
0
0
0
0 0 0
0
0
G:
s
2
3
4
5 t 10 9
4
10 6 2
Gf:
10 8
10
8 8
8
X X
X
0
Flow value = 0
capacity
residual capacity
flow
30
Ford-Fulkerson Algorithm
s
2
3
4
5 t 10
10
9
8
4
10
10 6 2
8
0
0
0 0 8
8
0 0
G:
s
2
3
4
5 t 10
4
10 6
Gf:
8
8
8
9
22
2
10
210
X
X
X2X
Flow value = 8
31
0
Ford-Fulkerson Algorithm
s
2
3
4
5 t 10
10
9
8
4
10
10 6 2
10
0
0
0 2 10
8
2
G:
s
2
3
4
5 t
4
2
Gf:
10
810
2
10 7
10 6
X
66
6
X
X
8X
Flow value = 10
32
Ford-Fulkerson Algorithm
s
2
3
4
5 t 10
10
9
8
4
10
10 6 2
10
0
6
6 8 10
8
2
G:
s
2
3
4
5 t1
6
Gf:
10
8 10
8
6
6
6
4
4
4
2
X
8
2
8
X
X
0X
Flow value = 16
33
Ford-Fulkerson Algorithm
s
2
3
4
5 t 10
10
9
8
4
10
10 6 2
10
2
8
8 8 10
8
0
G:
s
2
3
4
5 t
6 2
Gf:
10
10
8
6
8
8
2
2 1
2
8 2
X
9
7 9
X
X
9X
X 3
Flow value = 18
34
Ford-Fulkerson Algorithm
s
2
3
4
5 t 10
10
9
8
4
10
10 6 2
10
3
9
9 9 10
7
0
G:
s
2
3
4
5 t 1 9
1
1 6 2
Gf:
10
7 10
6
9
9
3
1
Flow value = 19
35
Ford-Fulkerson Algorithm
s
2
3
4
5 t 10
10
9
8
4
10
10 6 2
10
3
9
9 9 10
7
0
G:
s
2
3
4
5 t 1 9
1
1 6 2
Gf:
10
7 10
6
9
9
3
1
Flow value = 19Cut capacity = 19
36
Augmenting Path Algorithm
Augment(f, c, P) {
b ! bottleneck(P)
foreach e " P {
if (e " E) f(eR) ! f(e) + b
else f(eR) ! f(e) - b
}
return f
}
Ford-Fulkerson(G, s, t, c) {
foreach e " E f(e) ! 0
Gf ! residual graph
while (there exists augmenting path P) {
f ! Augment(f, c, P)
update Gf }
return f
}
forward edge
reverse edge
37
Max-Flow Min-Cut Theorem
Augmenting path theorem. Flow f is a max flow iff there are no
augmenting paths.
Max-flow min-cut theorem. [Ford-Fulkerson 1956] The value of the
max flow is equal to the value of the min cut.
Proof strategy. We prove both simultaneously by showing the TFAE:
(i) There exists a cut (A, B) such that v(f) = cap(A, B).
(ii) Flow f is a max flow.
(iii) There is no augmenting path relative to f.
(i) ! (ii) This was the corollary to weak duality lemma.
(ii) ! (iii) We show contrapositive.
! Let f be a flow. If there exists an augmenting path, then we can
improve f by sending flow along path.
38
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.
v( f ) = f (e)e out of A
! " f (e)e in to A
!
= c(e)e out of A
!
= cap(A,B)
original network
s
t
A B
39
Running Time
Assumption. All capacities are integers between 1 and C.
Invariant. Every flow value f(e) and every residual capacities cf (e)
remains an integer throughout the algorithm.
Theorem. The algorithm terminates in at most v(f*) ! nC iterations.
Pf. Each augmentation increase value by at least 1. !
Corollary. If C = 1, Ford-Fulkerson runs in O(mn) time.
Integrality theorem. If all capacities are integers, then there exists a
max flow f for which every flow value f(e) is an integer.
Pf. Since algorithm terminates, theorem follows from invariant. !
7.3 Choosing Good Augmenting Paths
41
Ford-Fulkerson: Exponential Number of Augmentations
Q. Is generic Ford-Fulkerson algorithm polynomial in input size?
A. No. If max capacity is C, then algorithm can take C iterations.
s
1
2
t
C
C
0 0
0 0
0
C
C
1 s
1
2
t
C
C
1
0 0
0 0
0X 1
C
C
X
X
X
1
1
1
X
X
1
1X
X
X
1
0
1
m, n, and log C
42
Choosing Good Augmenting Paths
Use care when selecting augmenting paths.
! Some choices lead to exponential algorithms.
! Clever choices lead to polynomial algorithms.
! If capacities are irrational, algorithm not guaranteed to terminate!
Goal: choose augmenting paths so that:
! Can find augmenting paths efficiently.
! Few iterations.
Choose augmenting paths with: [Edmonds-Karp 1972, Dinitz 1970]
! Max bottleneck capacity.
! Sufficiently large bottleneck capacity.
! Fewest number of edges.
43
Capacity Scaling
Intuition. Choosing path with highest bottleneck capacity increases
flow by max possible amount.
! Don't worry about finding exact highest bottleneck path.
! Maintain scaling parameter !.
! Let Gf (!) be the subgraph of the residual graph consisting of only
arcs with capacity at least !.
110
s
4
2
t 1
170
102
122
Gf
110
s
4
2
t
170
102
122
Gf (100)
44
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
}
45
Capacity Scaling: Correctness
Assumption. All edge capacities are integers between 1 and C.
Integrality invariant. All flow and residual capacity values are integral.
Correctness. If the algorithm terminates, then f is a max flow.
Pf.
! By integrality invariant, when ! = 1 " Gf(!) = Gf.
! Upon termination of ! = 1 phase, there are no augmenting paths. !
46
Capacity Scaling: Running Time
Lemma 1. The outer while loop repeats 1 + !log2 C" times.
Pf. Initially C # $ < 2C. $ decreases by a factor of 2 each iteration. !
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 $.
Lemma 3. There are at most 2m augmentations per scaling phase.
! Let f be the flow at the end of the previous scaling phase.
! L2 % v(f*) # v(f) + m (2$).
! Each augmentation in a $-phase increases v(f) by at least $. !
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. !
proof on next slide
47
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.
v( f ) = f (e)e out of A
! " f (e)e in to A
!
# (c(e)e out of A
! "$) " $e in to A
!
= c(e)e out of A
! " $e out of A
! " $e in to A
!
# cap(A, B) - m$
original network
s
t
A B