Presentation is loading. Please wait.

Presentation is loading. Please wait.

EMIS 8374 The Ford-Fulkerson Algorithm (aka the labeling algorithm) Updated 4 March 2008.

Similar presentations


Presentation on theme: "EMIS 8374 The Ford-Fulkerson Algorithm (aka the labeling algorithm) Updated 4 March 2008."— Presentation transcript:

1

2 EMIS 8374 The Ford-Fulkerson Algorithm (aka the labeling algorithm) Updated 4 March 2008

3 Ford-Fulkerson Algorithm begin x := 0; label node t; while t is labeled do begin unlabel all nodes; pred(j) := 0 for all j in N; label s; LIST := {s}; while LIST is not empty and t is not labeled do begin remove a node i from LIST; for all {j in N: (i, j) in A and r ij > 0} do if j is unlabeled then pred(j) := i, label j, add j to LIST; end; if t is labeled then augment flow on path from s to t end; Slide 2

4 Labeling Algorithm Example s t 1 24 3 (0,2) (0,6) 5 (0,5) 6 (0,4) (0,7) Slide 3

5 The Residual Network G(x) s t 1 24 35 6 5 0 0 6 2 0 5 0 40 4 0 0 7 Slide 4

6 Iteration 1: LIST = {1}, Labeled = {1} s t 1 24 35 6 5 0 0 6 2 0 5 0 40 4 0 7 0 i = 1 Slide 5

7 Iteration 1: LIST = {1}, Labeled = {1} i = 1 LIST = {} Arc (1,2) –pred(2) =1 –label 2 –LIST = {2} Arc (1,3) –pred (3) = 1 –label 3 –LIST = {2, 3} Slide 6

8 Iteration 1: LIST = {2,3}, Labeled= {1,2,3} s t 1 24 35 6 5 0 0 6 2 0 5 0 40 4 0 0 7 pred(2) = 1 pred(3) = 1 Slide 7

9 Iteration 1: LIST = {2,3}, Labeled = {1,2,3} i = 2 LIST = {3} Arc (2,4) –pred(4) =2 –label 4 –LIST = {3,4} Arc (2,5) –pred (5) = 2 –label 5 –LIST = {3,4,5} Arc (2,1) –residual capacity of (2,1) = 0 Slide 8

10 Iteration 1: LIST = {3,4,5}, Labeled= {1,2,3,4,5} s t 1 24 35 6 5 0 0 6 2 0 5 0 40 4 0 0 7 pred(2) = 1 pred(3) = 1pred(5) = 2 pred(4) = 2 Slide 9

11 Iteration 1: LIST = {3,4,5}, Labeled = {1,2,3,4,5} i = 3 LIST = {4,5} Arc (3,5) –5 is already labeled Arc (3,1) –residual capacity of (3,1) = 0 Slide 10

12 Iteration 1: LIST = {4,5}, Labeled = {1,2,3,4,5} i = 4 LIST = {5} Arc (4,2) –residual capacity of (4,2) = 0 Arc (4,6) –pred(6) =4 –label 6 –LIST = {5,6} Slide 11

13 Iteration 1: LIST = {5,6}, Labeled= {1,2,3,4,5,6} s t 1 24 35 6 5 0 0 6 2 0 5 0 40 4 0 0 7 pred(2) = 1 pred(3) = 1pred(5) = 2 pred(4) = 2 pred(6) = 4 Slide 12

14 Iteration 1: The sink is labeled Use pred labels to trace back from the sink to the source to find path P –P = 1 → 2 → 4 → 6  = min {r ij : (i, j) in P) = 2 Send 2 units of flow from to s to t along path P Slide 13

15 Flow x After Iteration 1 s t 1 24 3 (2,2) (0,6) 5 (0,5) 6 (2,5) (2,4) (0,4) (0,7) v = 2 Slide 14

16 The Residual Network G(x) s t 1 24 35 6 3 2 0 6 0 2 5 0 40 2 2 0 7 Slide 15

17 Iteration 2: LIST = {1}, Labeled = {1} i = 1 LIST = {} Arc (1,2) –pred(2) =1 –label 2 –LIST = {2} Arc (1,3) –pred (3) = 1 –label 3 –LIST = {2, 3} Slide 16

18 Iteration 2: LIST = {2,3}, Labeled={1,2,3} s t 1 24 35 6 3 2 0 6 0 2 5 0 40 2 2 0 7 p=1 Slide 17

19 Iteration 2: LIST = {2,3}, Labeled = {1,2,3} i = 2 LIST = {3} Arc (2,4) –residual cap (2,4) = 0 Arc (2,5) –pred (5) = 2 –label 5 –LIST = {3,5} Arc (2,1) –residual capacity of (2,1) = 0 Slide 18

20 Iteration 2: LIST = {3,5}, Labeled={1,2,3,5} s t 1 24 35 6 3 2 0 6 0 2 5 0 40 2 2 0 7 p=1 p=2 Slide 19

21 Iteration 2: LIST = {3,5}, Labeled = {1,2,3,5} i = 3 LIST = {5} Arc (3,5) –5 is already labeled Arc (3,1) –residual capacity of (3,1) = 0 i = 5 LIST = {} Arc (5,2) –residual cap = 0 Arc (5,3) –residual cap = 0 Arc (5,6) –pred(6) = 5 –label 6 –LIST = {6} Slide 20

22 Iteration 2: LIST = {6}, Labeled={1,2,3,5,6} s t 1 24 35 6 3 2 0 6 0 2 5 0 40 2 2 0 7 p=1 p=2 p=5 Slide 21

23 Iteration 2: The sink is labeled Use pred labels to trace back from the sink to the source to find path P –P = 1 -> 2 -> 5 -> 6  = min {rij: (i,j) in P) = 3 Send 3 units of flow from to s to t along path P Slide 22

24 Flow x After Iteration 2 s t 1 24 3 (2,2) (0,6) 5 (0,5) 6 (5,5) (2,4) (3,4) (3,7) v = 5 Slide 23

25 The Residual Network G(x) s t 1 24 35 6 0 5 0 6 0 2 5 0 13 2 2 0 4 Slide 24

26 Iteration 3: LIST = {1}, Labeled = {1} i = 1 LIST = {} Arc (1,2) –residual capacity = 0 Arc (1,3) –pred (3) = 1 –label 3 –LIST = {3} Slide 25

27 Iteration 3: List = {3}, Labeled = {1,3} s t 1 24 35 6 0 5 0 6 0 2 5 0 13 2 2 0 4 p=1 Slide 26

28 Iteration 3: LIST = {3}, Labeled = {1,3} i = 3 LIST = {} Arc (3,1) –residual capacity = 0 Arc (3,5) –pred (5) = 3 –label 5 –LIST = {5} Slide 27

29 Iteration 3: List = {5}, Labeled = {1,3,5} s t 1 24 35 6 0 5 0 6 0 2 5 0 13 2 2 0 4 p=1p=2 Slide 28

30 Iteration 3: LIST = {5}, Labeled = {1,3,5} i = 5, LIST = {} Arc (5,2) –pred(2) = 5 –label 2 –LIST = {2} Arc (5,3): residual capacity = 0 Arc (5,6) –pred (6) = 5 –label 6 –LIST = {2,6} Slide 29

31 Iteration 3: List = {2,6}, Labeled = {1,2,3,5,6} s t 1 24 35 6 0 5 0 6 0 2 5 0 13 2 2 0 4 p=1p=2 p=5 Slide 30

32 Iteration 3: The sink is labeled Use pred labels to trace back from the sink to the source to find path P –P = 1 -> 3 -> 5 -> 6  = min {rij: (i,j) in P) = 4 Send 4 units of flow from to s to t along path P Slide 31

33 Flow x After Iteration 3 s t 1 24 3 (2,2) (4,6) 5 (4,5) 6 (5,5) (2,4) (3,4) (7,7) v = 9 Slide 32

34 The Residual Network G(x) s t 1 24 35 6 0 5 4 2 0 2 1 4 13 2 2 7 0 Slide 33

35 Iteration 4: LIST = {1}, Labeled = {1} i = 1 LIST = {} Arc (1,2) –residual capacity = 0 Arc (1,3) –pred (3) = 1 –label 3 –LIST = {3} Slide 34

36 Iteration 4: List = {3}, Labeled = {1,3} s t 1 24 35 6 0 5 4 2 0 2 1 4 13 2 2 7 0 p=1 Slide 35

37 Iteration 4: LIST = {3}, Labeled = {1,3} i = 3 LIST = {} Arc (3,1) –1 is labeled Arc (3,5) –pred (5) = 3 –label 5 –LIST = {5} Slide 36

38 Iteration 4: List = {5}, Labeled = {1,3,5} s t 1 24 35 6 0 5 4 2 0 2 1 4 13 2 2 7 0 p=1 p=3 Slide 37

39 Iteration 4: LIST = {5}, Labeled = {1,3,5} i = 5 LIST = {} Arc (5,2) –pred(2) = 5 –label 2 –LIST = {2} Arc (5,6) –residual capacity = 0 Slide 38

40 Iteration 4: List = {2}, Labeled = {1,2,3,5} s t 1 24 35 6 0 5 4 2 0 2 1 4 13 2 2 7 0 p=1 p=3 p=5 Slide 39

41 Iteration 4: LIST = {2}, Labeled = {1,2,3,5} i = 2 LIST = {} Arc (2,1) –1 is already labeled Arc(2,4) –residual capacity = 0 Arc (2,5) –5 is already labeled Slide 40

42 Iteration 4 List = {} The sink is not labeled Algorithm ends with optimal flow x Slide 41

43 Correctness At the end of each iteration, the algorithm either augments the flow or terminates because it can’t label the sink. Let S be the set of labeled nodes when the algorithm terminates. Let T = N \ S. We need to show that when the algorithm terminates v = u[S, T] which implies x is a maximum flow. Slide 42

44 Correctness: arcs in (S, T) Slide 43 i j s

45 Correctness: arcs in (T, S) Implies s can reach node i in G(x) Implies i is labeled (i.e., node i is in S) Implies x ij = 0 Contradiction. If i in T and j in S, then x ij = 0 ij s Slide 44 Suppose x ij > 0 r ji = u ji – x ji + x ij Implies r ji > 0 since u ji  x ji

46 Complexity Let U = max {(i, j) in A} u ij. –If S = {s} and T = N\{s}, then u[S, T] ≤ nU. –The maximum flow is at most nU. –The inner loop runs at most nU times. An iteration of the inner while loop is O(m): –Each arc is inspected at most once –Finding  is O(n) –Updating the flow on P is O(n) Complexity is O(nmU). Slide 45

47 Pathological Example s 1 2 3 5 (0,10 6 ) (0,1) t Slide 46

48 Pathological Example: First Augmenting Path s 1 2 3 5 (0,10 6 ) (0,1) t Slide 47 v = 1

49 Residual Network s 1 2 3 5 10 6 -1 10 6 10 6 -1 10 6 t 1 1 1 Slide 48

50 An Augmenting Path in the Residual Network s 1 2 3 5 10 6 -1 10 6 10 6 -1 10 6 t 1 1 1 Slide 49

51 Updated Flow in G s 1 2 3 5 (1,10 6 ) (0,1) t v = 2 Slide 50

52 Updated Residual Network s 1 2 3 5 10 6 -1 1 t 11 11 Slide 51

53 Next Augmenting Path in the Residual Network s 1 2 3 5 10 6 -1 1 t 11 11 This will take 2 million iterations to find the maximum flow! Slide 52

54 Polynomial Max Flow Algorithms (Chapter 7) Always augment along the shortest augmenting path in the residual network. –Use breadth-first search to find augmenting path –O(n 2 m) Always augment along the maximum-capacity augmenting path in the residual network. –O(nm log U) Goldberg’s algorithm (preflow-push) with highest-label implementation. –O(n 2 m 1/2 ) Slide 53


Download ppt "EMIS 8374 The Ford-Fulkerson Algorithm (aka the labeling algorithm) Updated 4 March 2008."

Similar presentations


Ads by Google