Download presentation
Presentation is loading. Please wait.
Published byGeorgiana Mitchell Modified over 9 years ago
1
CS 473Lecture ?1 CS473-Algorithms I Lecture ? Network Flows Finding Max Flow
2
CS 473Lecture ?2 FORD-FULKERSON METHOD / ALGORITHM iterative algorithm: start with initial flow f =[0] with |f| = 0 –at each iteration, increase | f | by finding an augmenting path –repeat this process until no augmenting path can be found –by max-flow min-cut thm: upon termination this process yields a max flow FORD-FULKERSON-METHOD(G, s, t) initialize flow f to 0 while an augmenting path p do augment flow f along path p return f
3
CS 473Lecture ?3 FORD-FULKERSON METHOD / ALGORITHM basic Ford-Fulkerson Algorithm: data structures –note (u,v) E f only if (u,v) E or (v,u) E –maintain an adj-list representation of directed graph G' = (V', E'), where E' = {(u,v): (u,v) E or (v,u) E}, i.e., –for each v Adj[u] in G' maintain the record –note: G' used to represent both G and G f, i.e., for any edge (u,v) E' c[u,v] > 0 (u,v) E and c f [u,v] > 0 (u,v) E f vf(u,v)c(u,v)c f (u,v)
4
CS 473Lecture ?4 FORD-FULKERSON METHOD / ALGORITHM FORD-FULKERSON (G', s, t) for each edge (u,v) E' do f [u,v] ← 0 c f [u,v] ← 0 G f ← COMPUTE-GF(G', f) while an s t path p in G f do c f (p) ← min {c f [u,v]: (u,v) p} for each edge (u,v) p do f [u,v] ← f [u,v] + c f (p) CANCEL(G', u, v) G f ← COMPUTE-GF(G', f) COMPUTE-GF (G', f) for each edge (u,v) E' do if c[u,v] – f [u,v] > 0 then c f [u,v] ← c[u,v] – f[u,v] else c f [u,v] ← 0 return G' CANCEL (G', u, v) min ← {f [u,v], f [v,u]} f [u,v] ← f [u,v] – min f [v,u] ← f [v,u] – min
5
CS 473Lecture ?5 FORD-FULKERSON ALGORITHM augmenting path in G f is chosen arbitrarily performance if capacities are integers: O(E |f*|) –while-loop: time to find s t path in G f = O(E') = O(E) –# of while-loop iterations: ≤ |f*|, where f* = max flow so, running time is good if capacities are integers and |f*| is small
6
CS 473Lecture ?6 FORD-FULKERSON ALGORITHM s u v t 0/100 0/1 0/100 s u v t 100 1 p = c f (p) = 1 | f 1 | = | f 0 | + | f p | = 0+1 = 1 f0f0 Gf0Gf0
7
CS 473Lecture ?7 FORD-FULKERSON ALGORITHM s u v t 0/100 1/1000/100 1/1 1/100 s u v t 100 99 100 1 p = c f (p) = 1 | f 2 | = | f 1 | + | f p | = 1+1 = 2 f1f1 Gf1Gf1 1 99 1
8
CS 473Lecture ?8 FORD-FULKERSON ALGORITHM s u v t 1/100 0/1 1/100 s u v t 99 1 p = c f (p) = 1 | f 3 | = | f 2 | + | f p | = 2+1 = 3 f2f2 Gf2Gf2 1 99 1 1 1
9
CS 473Lecture ?9 FORD-FULKERSON ALGORITHM s u v t 1/100 2/1001/100 1/1 2/100 s u v t 99 98 1 p = c f (p) = 1 | f 4 | = | f 3 | + | f p | = 3+1 = 4 f3f3 Gf3Gf3 2 98 2 1 99 1
10
CS 473Lecture ?10 FORD-FULKERSON ALGORITHM choose p = in odd iterations choose p = in even iterations –200 augmentations to reach |f*| = 200 might never terminate for non-integer capacities efficient algorithms: –augment along max-capacity path in G f : not mentioned in textbook –augment along breadth-first path in G f : Edmonds-Karp algorithm O(VE 2 )
11
CS 473Lecture ?11 EDMONDS-KARP ALGORITHM def: δ f (s,v) = shortest path distance from s to v in G f –unit edge weights in G f δ f (s,v) = breadth-first distance from s to v in G f L7: v V – {s,t}; δ (s,v) in G f ’s increases monotonically with each augmentation proof: suppose –(i) a flow f on G induces G f –(ii) f p along an augmenting path in G f produces f’ = f + f p on G –(iii) f’ on G induces G f’ notation: δ(s,v) = δ f (s,v) and δ’(s,v) = δ f’ (s,v)
12
CS 473Lecture ?12 ANALYSIS OF EDMONDS-KARP ALGORITHM want to prove: δ' (s,v) ≥ δ(s,v) v V – {s,t} for contradiction: assume δ'(s,v) < δ(s,v) for some v without loss of generality: assume δ' (s,v) is minimal over all such vertices –i.e., δ' (s,v) < δ' (s,u) u V – {s,t} δ' (s,u) < δ(s,u) –thus δ' (s,u) < δ' (s,v) δ' (s,u) ≥ δ(s,u) (1)
13
CS 473Lecture ?13 ANALYSIS OF EDMONDS-KARP ALGORITHM consider a shortest s v path p': s u → v in G f’ δ'(s,u) = δ'(s,v) – 1 by “subpath is also a shortest path” δ' (s,u) < δ' (s,v) by (1), δ' (s,u) ≥ δ(s,u) (2) consider this edge (u,v) E f ' : question: was (u,v) E f ? YES: i.e., (u,v) E f ' and (u,v) E f ; note f(u,v) < c(u,v) δ(s,v) ≤ δ(s,u) + 1by triangle inequality ≤ δ' (s,u) + 1by (2) = δ' (s,v) δ' (s,v) ≥ δ(s,v) contradiction
14
CS 473Lecture ?14 ANALYSIS OF EDMONDS-KARP ALGORITHM NO: i.e., (u,v) E f ' but (u,v) E f ; note f(u,v)=c(u,v) –f p pushes flow back along edge (u,v) (v,u) p in G f –i.e., augmenting path p is of the form p = s v → u t –note: p is a breadth-first path from s to t (Edmond-Karp algorithm) –δ(s,v) = δ(s,u) – 1 by “subpath is also a shortest path” ≤ δ' (s,u) – 1 by (2) = (δ' (s,v) – 1) – 1 by “subpath is also a shortest path” = δ' (s,v) – 2 < δ'(s,v) δ'(s,v) ≥ δ(s,v)contradiction
15
CS 473Lecture ?15 ANALYSIS OF EDMONDS-KARP ALGORITHM what is the bound on the total # of augmentations? def: an edge (u,v) in G f is critical on an augmenting path p in G f if c f (u,v) = c f (p) at least one edge on an augmenting path must be critical a critical edge disappears from G f after the augmentation –f '(u,v) = (f+f p )(u,v) = f (u,v) + f p (u,v) = f (u,v) + (c(u,v) – f (u,v)) = c(u,v) c f ' (u,v) = c'(u,v) – f '(u,v) = c(u,v) – c(u,v) = 0
16
CS 473Lecture ?16 ANALYSIS OF EDMONDS-KARP ALGORITHM Thm: number of flow augmentations is O(EV) proof: find a bound on the number of times an edge (u,v) becomes critical –let (u,v) becomes critical the first time along path p = s u → v t in G f δ(s,v) = δ(s,u) + 1 (1), since p is a shortest path –then (u,v) disappears from the residual network –(u,v) can reappear an another augmenting path only after net flow from u to v is decreased –this only happens if (v,u) appears on an augmenting path
17
CS 473Lecture ?17 ANALYSIS OF EDMONDS-KARP ALGORITHM assume this event occurs along a path p' = s u → v t in G f ' later –δ'(s,u) = δ'(s,v) + 1 since p' = s u → v t is a shortest path ≥ δ(s,v) + 1 by L7 = (δ(s,u) + 1) + 1 since p' = s u → v t is a shortest path = δ(s,u) + 2 δ' (s,u) ≥ δ(s,u) + 2 i.e., δ(s,u) increase by ≥ 2 each time (u,v) becomes critical, except the first time thus each edge (u,v) can become critical at most O(V) times, since –1 ≤ δ(s,u) ≤ | V | - 2 and δ(s,u) never decreases by L7 (E) edges in G f ’s # of flow augmentations = O(VE) running time of Edmonds-Karp algorithm: |E|× O(VE) = O(E 2 V) –finding an augmenting path in a G f = breadth-first search = O(E)
18
CS 473Lecture ?18 MAXIMUM BIPARTITE MATCHING PROBLEM many combinatorial optimization problems can be reduced to a max-flow problem maximum bipartite matching problem is a typical example
19
CS 473Lecture ?19 MAXIMUM BIPARTITE MATCHING PROBLEM given an undirected graph G = (V, E) def: a matching is a subset of edges M E such that v V, at most one edge of M is incident to v def: a vertex v V is matched by a matching M if some edge M is incident to v, otherwise v is unmatched def: a maximum matching M* is a matching M of maximum cardinality, i.e., |M*| ≥ |M| for any matching M def: G=(V,E) is a bipartite graph if V=L R where L∩R= such that E={(u,v): u L and v R}
20
CS 473Lecture ?20 MAXIMUM BIPARTITE MATCHING PROBLEM applications: job task assignment problem –Assigning a set L of tasks to a set R of machines –(u,v) E task u L can be performed on a machine v R –a max matching provides work for as many machines as possible
21
CS 473Lecture ?21 MAXIMUM BIPARTITE MATCHING PROBLEM example: two matchings M 1 & M 2 on a sample graph with |M 1 | = 2 & |M 2 | = 3 u1u1 u3u3 u4u4 u5u5 u2u2 v1v1 v3v3 v4v4 v2v2 LR M 1 = {(u 1,v 1 ), (u 3,v 3 )} u1u1 u3u3 u4u4 u5u5 u2u2 v1v1 v3v3 v4v4 v2v2 LR M 2 = {(u 2,v 1 ), (u 3,v 2 ), (u 5,v 3 )}
22
CS 473Lecture ?22 FINDING A MAXIMUM BIPARTITE MATCHING idea: construct a flow network in which flows correspond to matchings define the corresponding flow network G'=(V', E') for the bipartite graph as –V' = V {s} {t}s, t V –E' = {(s,u): u L } {(u,v): u L, v R, (u,v) E } {(v,t): v R } –assign unit capacity to each edge of E'
23
CS 473Lecture ?23 FINDING A MAXIMUM BIPARTITE MATCHING u1u1 u3u3 u4u4 u5u5 u2u2 v1v1 v3v3 v4v4 v2v2 s t 1 1 1 1 1 1 1 1 1 u1u1 u3u3 u4u4 u5u5 u2u2 v1v1 v3v3 v4v4 v2v2 1 1 1 1 1 1 1 1
24
CS 473Lecture ?24 FINDING A MAXIMUM BIPARTITE MATCHING def: a flow f on a flow network is integer-valued if f(u,v) is integer u,v V L8: (a) IF M is a matching in G, THEN an integer-valued f on G' with | f | = |M| (b) IF f is an integer-valued f on G', THEN a matching M in G with | M | = | f |
25
CS 473Lecture ?25 FINDING A MAXIMUM BIPARTITE MATCHING proof L8 (a): let M be a matching in G –define the corresponding flow f on G' as u,v M; f(s,u)=f(u,v)=f(v,t) = 1 & f(u,v) = 0 for all other edges first show that f is a flow on G': –1 unit of flow passes thru the path s → u → v → t for each u,v M these paths are disjoint s t paths, i.e., no common intermediate vertices –f is a flow on G' satisfying capacity constraint, skew symmetry & flow conservation because f can be obtained by flow augmentation along these s t disjoint paths
26
CS 473Lecture ?26 FINDING A MAXIMUM BIPARTITE MATCHING second show that | f | = |M|: –net flow accross the cut ({s} L, R {t}) = | f | by L3 –| f | = f (s L, R t) = f (s, R t) + f (L, R t) = f (s, R t) + f (L, R) + f (L, t) = 0 + f (L, R) + 0; f (s, R t) = f (L, t) since no such edges = f (L, R) = |M| since f(u,v) = 1 u L, v R & (u,v) M
27
CS 473Lecture ?27 FINDING A MAXIMUM BIPARTITE MATCHING proof L8 (b): let f be a integer-valued flow in G' –define M={(u,v): u L, v R, and f (u,v) > 0} first show that M is a matching in G: i.e., all edges in M are vertex disjoint –let p e (u) / p l (u) = positive net flow entering / leaving vertex u, u V –each u L has exactly one incoming edge (s,u) with c(s,u)=1 p e (u) ≤ 1 u L
28
CS 473Lecture ?28 FINDING A MAXIMUM BIPARTITE MATCHING –since f is integer-valued; u L, p e (u) = 1 p l (u) = 1 due to flow conservation u L, p e (u)=1 exactly one vertex v R f ( u, v ) = 1 to make p l (u) = 1 –thus, at most one edge leaving each vertex u L carries positive flow = 1 –a symmetric argument holds for each vertex v R –therefore, M is a matching
29
CS 473Lecture ?29 FINDING A MAXIMUM BIPARTITE MATCHING second show that |M| = | f |: –|M| = f (L, R) by above def for M since f (u,v) is either 0 or 1 = f (L, V' – s – L – t) = f (L,V') – f (L,s) – f (L,L) – f (L,t) = 0 – f (L,s) – 0 – 0 = – f (L,s) = f (s,L) = | f | due to skew symmetry & then def. f (L,V') = f (L,V') = 0 due to flow cons. f (L,t) = 0 since no edges from L to t
30
CS 473Lecture ?30 FINDING A MAXIMUM BIPARTITE MATCHING example: a matching M with |M| = 3 & a f on the corresponding G' with | f | = 3 u1u1 u3u3 u4u4 u5u5 u2u2 v1v1 v3v3 v4v4 v2v2 u1u1 u3u3 u4u4 u5u5 u2u2 v1v1 v3v3 v4v4 v2v2 s t 1 1 1 1 1 1 1 1 1
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.