This preview shows pages 1–13. Sign up to view the full content.
This preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full DocumentThis preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
Unformatted text preview: 1 15.082 and 6.855J March 13, 2003 Max Flows 4 2 Overview of todays lecture Very quick review of Preflow Push Algorithm The Excess Scaling Algorithm O(n 2 log U) nonsaturating pushes O(nm + n 2 log U) running time. A proof that Highest Preflow Push uses O(n 2 m 1/2 ) nonsaturating pushes. 3 A Feasible Preflow The excess e(j) at each node j s, t is the flow in minus the flow out. s 3 4 2 5 t 3 3 3 2 2 2 2 1 2 1 Note: total excess = flow out of s minus flow into t. 4 Active nodes Nodes with positive excess are called active . s 3 4 2 5 t 3 3 3 2 2 2 2 1 2 1 The preflow push algorithm will try to push flow from active nodes towards the sink, relying on d( ). 3 2 5 Review of Distance Labels Distance labels d( ) are valid for G(x) if i. d(t) = 0 ii. d(i) d(j) + 1 for each (i,j) G(x) Defn. An arc (i,j) is admissible if r ij > 0 and d(i) = d(j) + 1. Lemma. Let d( ) be a valid distance label. Then d(i) is a lower bound on the distance from i to t in the residual network. 6 GoldbergTarjan Preflow Push Algorithm Procedure Preprocess begin x :=0; compute the exact distance labels d(i) for each node; x sj := u sj for each arc (s,j) A(s); d(s) := n; end Algorithm PREFLOWPUSH; begin preprocess; while there is an active node i do begin select an active node i; push/relabel(i); end; end; Preprocess Step 4 1 1 4 2 2 2 3 3 1 s 2 4 5 3 t Saturate arcs out of node s. 5 4 3 2 1 t 4 5 3 s 2 Move excess to the adjacent arcs 2 2 1 1 1 3 2 1 2 1 3 6 s s Relabel node s after all incident arcs have been saturated. 2 3 4 Select, then relabel/push 4 1 1 4 2 2 2 3 3 1 s 2 4 5 3 t Select an active node. 5 4 3 2 1 t 4 5 3 s 2 Push/Relabel 2 2 1 1 1 3 2 1 2 1 3 6 s s Update excess after a push 1 1 Note : Each arc gets saturated O(n) times. 8 Select, then relabel/push 4 1 1 4 2 2 2 3 3 1 s 2 4 5 3 t Select an active node. 5 4 3 2 1 t 4 5 3 s 2 2 2 1 1 1 3 2 1 2 1 6 s s No arc incident to the selected node is admissible. So relabel. 1 1 2 3 3 Note. Each node gets relabeled O(n) times. 9 Select, then relabel/push 4 1 1 4 2 2 2 3 3 1 s 2 4 5 t Select an active node 5 4 3 2 1 t 4 5 s 2 2 2 1 1 3 2 2 6 s s Push/Relabel 1 2 3 2 1 3 1 2 3 1 1 Bounding nonsaturating pushes is more complex. Note that the active node became inactive. 10 11 Excess Scaling Approach Let be a scaling parameter. In the scaling phase e(j) for all j. At the end of the scaling phase e(j) < /2, for all j, at which point the /2scaling phase begins. We start with > U. The last scaling phase is the 1 scaling phase. e(j) 1 for all j. At the end of the 1scaling phase, we have a flow, and the flow is optimal. Note: the number of phases is O(log U+1) 12 Algorithm excess scaling begin preprocess := 2 log U ; while 1 do begin while the network contains a node j with e(j) /2 do begin among nodes j with e(j) /2 (called large excess nodes ), choose i with minimum distance label perform push/relabel(i) while ensuring that no node excess exceeds ; end := /2 13...
View Full
Document
 Spring '10
 Orlin

Click to edit the document details