1 / 70

Flow Algorithms

This lecture discusses flow algorithms, including max-flow, min-cut theorem, and augmenting paths. It covers topics such as vertex connectivity, planar flow, and residual flow. Reading materials include a focus on network definitions and reverse edges. The proof of Min Cut = Max Flow and the concept of augmenting flow are also explored. This lecture delves into characterizations of residual flow and the Dinic's Flow Algorithm.

mforde
Download Presentation

Flow Algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Flow Algorithms Analysis of Algorithms Week 9, Lecture 2 Prepared by John Reif, Ph.D. Distinguished Professor of Computer Science Duke University

  2. Flow Algorithms • Max-flow, min-cut Theorem • Augmenting Paths • O-1 flow • Vertex Connectivity • Planar Flow

  3. Readings on Flow Algorithms • Reading Selection: • CLR, Chapter 26

  4. Network Definition

  5. Reverse Edges

  6. Definition of Network Flow

  7. Value of Flow f • Flow f • Value

  8. s t _ X X Min Cut = Max Flow • cut

  9. Proof that Min Cut = Max Flow • Lemma • Proof

  10. 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 pathp for flow f is path in R from s to t • res(p) = min (res(e)) • e ∈ p

  11. Characterization of Residual Flow • Lemma: R has max flow value • 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.

  12. ek e1 e2 f ( e1 ) f ( ek ) f ( e2 ) Flow f on a path • Flow f • on path p = (e1, e2, …, ek)

  13. s t ek e1 e2 f ( e1 ) +Δ f ( ek ) +Δ f ( e2 +Δ Augmenting Flow • residualres(p) = Δ = min (c(e) – f (e)) • e ∈ p • gives Augmented flow f + res(p)

  14. s Saturated Edge s 1 4 3 3 f = 1 3 f = 3 1 1 a b a b f = 1 => 2 2 f = 2 f = 0 3 3 1 3 f = 2 2 Saturated Edge c d c d 1 2 4 3 f = 2 f = 2 2 2 t t Augmenting Path (s,b,d,a,c,t) Network with Flow Residual Network Flow f and Augmenting Flow in Residual Network

  15. s X _ Cut X t Min Cut = Max Flow • min cut: cut of minimum capacity • max flow: max (value ( f )) • f is flow

  16. Example of Min Cut = Max Flow Max Flow = Min Cut = 6 Edges Labeled (Capacity, Flow)

  17. Ford-Fulkerson Proof of Min Cut = Max Flow

  18. Bounding Flow augmentations give Max Flow • Lemma: • At most |E| flow augmentations are required to construct max flow.

  19. Improving Flow by Augmenting Flow from Residue graph

  20. Blocking Flow • Definitions given flow f • saturated edge e has f(e)=c(e) • blocking flowf : every path from s to t • has saturated edge • (so cannot augment flow!) • Idea: Re-route flow if it is blocking

  21. 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

  22. Dinic’s Flow Algorithm • Input: network G=(V,E) s.t. • capacities ci: (E ∪ ER) → R+ • Initialization:

  23. Dinic’s Flow Algorithm (cont’d) • Loop:

  24. Proof of Dinic’s Flow Algorithm (cont’d) • Theorem • Dinic’s Algorithm halts after |V| blocking steps • 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'

  25. 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

  26. s 4 3 1 a b 2 3 c d 4 3 t Example of Dinic’s Flow Algorithm (cont’d) • Network 3

  27. s level 0 4 3 f = 1 f = 3 1 a b level 1 f = 0 2 f = 1 f = 1 3 3 f = 2 c d level 2 4 3 f = 1 f = 3 level 3 t Example of Dinic’s Flow Algorithm (cont’d) • 1st Level Graph • with • Blocking Flow

  28. level 0 s f = 1 3 1 level 1 a b f = 1 2 f = 0 2 f = 1 d level 2 c level 3 f = 1 3 level 4 t Example of Dinic’s Flow Algorithm (cont’d) • 2nd Level Graph • with • Blocking Flow

  29. level 0 s f = 1 2 b a f = 1 f = 1 2 1 2 f = 1 d c f = 1 2 t level 5 Example of Dinic’s Flow Algorithm (cont’d) • 3rd Level Graph • with • Blocking Flow

  30. s 3 f = 3 4 f = 3 f = 1 a b 1 f = 1 f = 3 3 f = 2 3 2 c d f = 3 3 4 f = 3 t Example of Dinic’s Flow Algorithm (cont’d) • Final Flow

  31. Finding a Blocking Flow • by Karzanov • Preflow j: (1) Satisfies capacities’ constraints (2) May have unbalanced vertices where

  32. 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

  33. 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))

  34. Finding a Blocking Flow (cont’d) • To attempt to balance unblocked vertexv: 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)).

  35. c(e1) 0 S t … 0 0 c(ek) 0 Finding a Blocking Flow (cont’d) • Wave Algorithm for Blocking Flow Initialize: with preflow that saturates every edge out of s and otherwise 0.

  36. Example of Finding a Blocking Flow (cont’d) Decreased Flow Balanced at vertex d But Blocked vertex c Increased Flow to Blocked vertex d Edges Labeled (Capacity, Flow)

  37. Example of Finding a Blocking Flow (cont’d) Decreased Flow Balanced vertex c But Blocked vertex a Decreased Flow All vertices Balanced Edges Labeled (Capacity, Flow)

  38. 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 vblocked.) Decrease flow: Scan vertices in reverse topological order, balancing each vertex that is unbalanced and blocked.

  39. Proof of O(n2) Time for Finding a Blocking Flow • Theorem: Wave Algorithm computes a blocking flow in O(n2) time (and hence a max flow in O(n3) time). • Proof (use invariants): (1) If vblocked then every path from v to t has saturated edge. (2) The preflows constructed by algorithm are blocking.

  40. Proof of O(n2) 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.

  41. Proof of O(n2) Time for Finding a Blocking Flow (cont’d) • Note: Each step blocks at least 1 vertex • So at most n steps flow on edge e increases and decreases at most once • So total time O(|V|2 + |E|) = O(|V|2) = O(n2)

  42. 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.

  43. 0-1 Flow Algorithms • Special Case: • Theorem (Evan and Tarjan)

  44. Unit Flow • Unit Network: All capacities are integers 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|

  45. s t level G is decomposed into value(f ) vertex-disjoint paths from s to t. Illustration of Unit Flow

  46. Unit Flow Algorithms

  47. s-t Vertex Separator s-tVertex SeparatorS ⊆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.

  48. Illustration of s-t Vertex Separator S

  49. Solving Vertex Connectivity via Flow • Transform Vertex Connectivity to Unit Network Flow Problem

  50. 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.

More Related