Flow Algorithms Analysis of Algorithms Week 9 Lecture
- Slides: 70
Flow Algorithms Analysis of Algorithms Week 9, Lecture 2 Prepared by John Reif, Ph. D. Distinguished Professor of Computer Science Duke University
Flow Algorithms a) b) c) d) e) Max-flow, min-cut Theorem Augmenting Paths O-1 flow Vertex Connectivity Planar Flow
Readings on Flow Algorithms • Reading Selection: – CLR, Chapter 26
Network Definition
Reverse Edges
Definition of Network Flow
Value of Flow f • Flow f • Value
Min Cut = Max Flow • cut t s X _ X
Proof that Min Cut = Max Flow • Lemma • Proof
Residual Flow and Augmenting paths • residual capacity of edge e: res(e) = c(e) – f(e) • residual graph R: use modified capacities c ( e)=res(e) for res(e) > 0 • augmenting path p for flow f is path in R from s to t • res(p) = min (res(e)) e p
Characterization of Residual Flow • Lemma: R has max flow value (f *) – value (f ), where f * is the max flow of G. • Proof: If f is flow in R, then f + f is flow of G. Also, f = f * – f is a flow in R. Q. E. D.
Flow f on a path • Flow f on path p = (e 1, e 2, …, ek) e 1 f ( e 1 ) e 2 f ( e 2 ) ek f ( ek )
Augmenting Flow • residual res(p) = = min (c(e) – f (e)) e p s e 1 f ( e 1 ) + • e 2 f ( e 2 ) + ek t f ( ek ) + gives Augmented flow f + res(p)
Flow f and Augmenting Flow in Residual Network s Saturated Edge 3 f=1 f=3 1 a f=2 3 c f=1 2 s 4 3 b f=0 f=2 Saturated Edge 4 1 d f=2 t Network with Flow b 2 1 3 2 c 3 f=2 3 a 3 1 2 t d 2 Augmenting Path (s, b, d, a, c, t) Residual Network
Min Cut = Max Flow • • min cut: cut of minimum capacity max flow: max (value ( f )) f is flow s X _ X t Cut
Example of Min Cut = Max Flow = Min Cut = 6 Edges Labeled (Capacity, Flow)
Ford-Fulkerson Proof of Min Cut = Max Flow
Bounding Flow augmentations give Max Flow • Lemma: At most |E| flow augmentations are required to construct max flow.
Improving Flow by Augmenting Flow from Residue graph
Blocking Flow Definitions given flow f • saturated edge e has f(e)=c(e) • blocking flow f : every path from s to t has saturated edge (so cannot augment flow!) Idea: Re-route flow if it is blocking
Shortest Augmenting paths via level Graph • Level Graph L is subgraph of residual graph R • Note L gives shortest augmenting paths Construct L in O(|V|+|E|) time by Breadth First Search of R
Dinic’s Flow Algorithm • Input: network G=(V, E) s. t. capacities ci: (E ER) R+ • Initialization:
Dinic’s Flow Algorithm (cont’d) • Loop:
Proof of Dinic’s Flow Algorithm (cont’d) • • Theorem Dinic’s Algorithm halts after |V| steps blocking Proof Suppose f is flow with • R = residual graph (currently) • level (v) = min length path from s to v in R • R' = new residual graph • level' (v) = min length of path s to v in R'
Proof of Dinic’s Flow Algorithm (cont’d) • • Claim level' (t) > level (t) Proof (by contradiction) – If level (t) = level' (t), – then level (w) = level (v)+1 for every edge – (v, w) L. – This contradicts the fact that at least one edge is saturated (on the blocking flow) on any path p in L. Q. E. D. Hence n steps suffice for the algorithm
Example of Dinic’s Flow Algorithm (cont’d) • Network s 4 3 1 a b 2 3 3 c d 4 3 t
Example of Dinic’s Flow Algorithm (cont’d) • 1 st Level Graph with Blocking Flow s 3 4 f=1 f=3 1 a f=0 2 f=1 3 level 0 b f=1 level 1 3 f=2 c d 4 level 2 3 f=1 f=3 t level 3
Example of Dinic’s Flow Algorithm (cont’d) • 2 nd Level Graph with Blocking Flow 2 level 0 s 3 1 a f=1 b level 1 2 f=0 f=1 d c level 2 level 3 3 f=1 t level 4
Example of Dinic’s Flow Algorithm (cont’d) • 3 rd Level Graph with Blocking Flow level 0 s 2 f=1 b a 2 f=1 1 f=1 c 2 d f=1 2 t level 5
Example of Dinic’s Flow Algorithm (cont’d) • Final Flow s 3 4 f=3 f=1 a b 1 f=3 3 2 f=1 3 c f=2 d 4 f=3 3 f=3 t
Finding a Blocking Flow • by Karzanov • Preflow j: (1) Satisfies capacities’ constraints (2) May have unbalanced vertices where
Finding a Blocking Flow (cont’d) • Wave method: – begin with blocking preflow f (saturates on edge on every path s to t ) – balance vertices so f(v) = 0 to get blocking flow
Finding a Blocking Flow (cont’d) • To balance blocked vertex v: Repeat (until f(v) = 0) do choose edge (u, v) with f(u, v) > 0 decrease f(u, v) by min (f(uv), f(v))
Finding a Blocking Flow (cont’d) • To attempt to balance unblocked vertex v: Repeat (until f (v) = 0, or there is not an unsaturated edge (v, w) where w is unblocked). do choose some such edge (v, w) and decrease f (v, w) by min (C(v, w)- f (v, w), f (v)).
Finding a Blocking Flow (cont’d) • Wave Algorithm for Blocking Flow Initialize: with preflow that saturates every edge out of s and otherwise 0. c(e 1) … S 0 c(ek) 0 0 0 t
Example of Finding a Blocking Flow (cont’d) Increased Flow to Blocked vertex d Decreased Flow Balanced at vertex d But Blocked vertex c Edges Labeled (Capacity, Flow)
Example of Finding a Blocking Flow (cont’d) Decreased Flow Balanced vertex c Decreased Flow All vertices Balanced But Blocked vertex a Edges Labeled (Capacity, Flow)
Finding a Blocking Flow (cont’d) • Set s blocked, and set V-{s} all unblocked. Repeat until there are no unbalanced vertices do Increase flow: Scan all vertices between t, s in topological order, balancing every vertex v that is unbalanced and unblocked. (If balancing fails, make v blocked. ) Decrease flow: Scan vertices in reverse topological order, balancing each vertex that is unbalanced and blocked.
Proof of O(n 2) Time for Finding a Blocking Flow • Theorem: Wave Algorithm computes a blocking flow in O(n 2) time (and hence a max flow in O(n 3) time). • Proof (use invariants): (1) If v blocked every path from v to t has saturated edge. (2) The preflows constructed by algorithm are blocking.
Proof of O(n 2) Time for Finding a Blocking Flow (cont’d) • Modify: s blocked, and departing edges saturated. • Inductive Step: (a) Scanning in topological order in increase flow guarantees no unblocked, unbalanced vertices. (b) Scanning in reverse topological order guarantees every blocked vertex gets balanced.
Proof of O(n 2) Time for Finding a Blocking Flow (cont’d) • Note: Each step blocks at least 1 vertex • at most n steps flow on edge e increases and decreases at most once • total time O(|V|2 + |E|) = O(|V|2) = O(n 2)
Improved Flow Algorithms • Can use data structures to decrease blocking flow algorithms to O(|E| log|V|) time, giving… • Theorem Max flow can be computed in O(|V||E| log|V|) time.
0 -1 Flow Algorithms • Special Case: • Theorem (Evan and Tarjan)
Unit Flow • Unit Network: All capacities �Z and every vertex v other than s or t has • Claim: If Unit Network G has max flow f, • then max level is • Proof: G can be decomposed into value(f ) vertex-disjoint paths from s to t. so value (f ) • (level-1) |V|
Illustration of Unit Flow s t level G is decomposed into value(f ) vertex-disjoint paths from s to t.
Unit Flow Algorithms
s-t Vertex Separator S V: if all paths from s to t contain v S. Menger’s Theorem: The size of the smallest s, t Vertex Separator S is exactly the same as the number of vertex disjoint paths from s to t.
Illustration of s-t Vertex Separator S
Solving Vertex Connectivity via Flow • Transform Vertex Connectivity to Unit Network Flow Problem
Time for Solving Vertex Connectivity via Flow • Total Time O(|V| |E| log(E)) to compute s-t Vertex Connectivity N(s, t) (from s to t). • N(s, t) = number of disjoint paths from s to t.
Vertex Connectivity • N(u, v) = min vertex cut size for (G, u, v) • G undirected
Bounding Vertex Connectivity • Lemma • Proof • Q. E. D. (also true for edge connectivity)
Algorithm for Vertex Connectivity • Lemma: • Proof: G – S has at least 2 - components
Proof of Algorithm for Vertex Connectivity • Let b be any node in a component of G-S which does not have a. Thus, N(a, b) |S| = c(G). Q. E. D.
Idea for Randomized Algorithm for Vertex Connectivity • Idea: Choose at random a �V.
Randomized Algorithm for Vertex Connectivity • (Melhorn & Students)
Randomized Algorithm for Vertex Connectivity (cont’d) • Theorem: Prob (μ c(G)) ε • Proof: Let S be a Vertex Separator with
Definition of Planar Graph • G = (V, E) is a planar graph if G can be embedded on plane so no two edges cross.
Dual of Planar Graph • Dual: D(G)=(F, D(E)) F = faces of embedding D(E) = { {Fi, Fj}| e E is between Fi, Fj }
Max Flow in Planar Graph
Min Cost Cycle in Dual Graph D(G) separating s, t
Definition of Outerplanar Embedded Graph • G is outerplanar embedded if the planar embedding has face F 0 incident to all vertices.
Algorithm for Max Flow in Outerplanar Embedded Graph • Idea: To reduce to Min Cost Path Add new edge (s, t) with weight .
Time Cost of Algorithm for Max Flow in Outerplanar Embedded Graph
Developing an Efficient Algorithm for Max Flow in a General Planar Graph • Lemma: [Reif] If μ(s, t) is a minimum cost path in D(G) from a face bounding on s to a face bounding on t, then any min cost cycle in D(G) separating s, t must contain an edge of μ(s, t).
Illustration of μ(s, t) Path Separating s and t in Dual Graph D(G)
Proof of Lemma • Proof: Suppose not. Then we can shortcut any cycle of D(G) separating s, t to get a shorter one, using edges of the μ(s, t) path.
Efficient Divide and Conquer Algorithm for Max Flow in a General Planar Graph • Theorem: [Reif] The min cost flow in a planar graph can be computed in O(|V|log 2|V|) time. • Proof: Idea: use μ(s, t) cut in D(G) to guide a recursive divided and conquer algorithm. On each step, divide the μ(s, t) path in half and solve the problem on each half, separately, using s, t cut as separator.
Illustration of an Efficient Divide and Conquer Algorithm for Max Flow in a General Planar Graph
Flow Algorithms Analysis of Algorithms Week 9, Lecture 2 Prepared by John Reif, Ph. D. Distinguished Professor of Computer Science Duke University
- Analysis of algorithms lecture notes
- Introduction to algorithms lecture notes
- 01:640:244 lecture notes - lecture 15: plat, idah, farad
- Week by week plans for documenting children's development
- Flow cytometry lecture
- 1001 design
- Algorithm analysis examples
- Analyze algorithm
- Association analysis: basic concepts and algorithms
- Algorithm input, output example
- Algorithm analysis examples
- Algorithm analysis examples
- Fundamentals of analysis of algorithm efficiency
- Cluster analysis basic concepts and algorithms
- Probabilistic analysis and randomized algorithms
- Design and analysis of algorithms introduction
- Cluster analysis basic concepts and algorithms
- Cluster analysis basic concepts and algorithms
- Goals of analysis of algorithms
- Exercise 24
- Binary search in design and analysis of algorithms
- Introduction to the design and analysis of algorithms
- Competitive analysis algorithms
- Design and analysis of algorithms
- Design and analysis of algorithms
- Cluster analysis basic concepts and algorithms
- Comp 482
- Exploratory data analysis lecture notes
- Sensitivity analysis lecture notes
- Factor analysis lecture notes
- Streak plate method
- Zline 667-36
- Pathophysiology of atelectasis
- Simple mask flow rate
- Simple mask
- Laminar vs turbulent
- Internal and external flow
- Flow of energy vs flow of matter
- Flow of energy vs flow of matter
- Structure chart in software engineering
- Transform flow and transaction flow
- Example of rotational and irrotational flow
- External flow and internal flow
- Data flow vs control flow
- Cheese flow chart
- Control flow and data flow computers
- Transaction flow graph
- Material flow analysis ppt
- Mold flow analysis ppt
- Fund flow statement
- Load flow analysis
- Differential analysis of fluid flow
- Annual cash flow analysis
- What is bus admittance matrix
- Eight generic channel flows
- System design chart
- Data flow diagram in system analysis and design
- Material and information flow analysis
- Material and information flow analysis
- What is incremental cash flow
- Naomi radke
- Particle flow analysis
- Global data flow analysis in compiler design
- Flow time analysis
- Annual cash flow analysis
- Cash flow estimation and risk analysis
- Process flow analysis
- Traffic flow analysis in retail management
- Flow injection analysis
- Live variable analysis in compiler design
- Material flow cost analysis