Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
F I N
Plus de contenu associé
Transcription de la présentation
Flow Algorithms Analysis of Algorithms Week 9, Lecture 2 Prepared by John Reif, Ph.D. Distinguished Professor of Computer Science Duke University
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
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.
ek e1 e2 f ( e1 ) f ( ek ) f ( e2 ) Flow f on a path • Flow f • on path p = (e1, e2, …, ek)
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)
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
s X _ Cut X t Min Cut = Max Flow • min cut: cut of minimum capacity • max flow: max (value ( f )) • f is flow
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
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
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'
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
s 4 3 1 a b 2 3 c d 4 3 t Example of Dinic’s Flow Algorithm (cont’d) • Network 3
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
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
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
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
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 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)).
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.
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.
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.
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.
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.
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|
s t level G is decomposed into value(f ) vertex-disjoint paths from s to t. Illustration of Unit Flow
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.
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.
Connexion au compte
Connectez-vous pour publier votre contenu sur SlideServe.