07 max flow

Upload: alexander-gyorev

Post on 07-Apr-2018

235 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/6/2019 07 Max Flow

    1/34

    1

    Chapter 7

    Network Flow

    Slides by Kevin Wayne.Copyright 2005 Pearson-Addison Wesley.All rights reserved.

  • 8/6/2019 07 Max Flow

    2/34

    2

    Soviet Rail Network, 1955

    Reference: On the history of the transportation and maximum flow problems.Alexander Schrijver in Math Programming, 91: 3, 2002.

  • 8/6/2019 07 Max Flow

    3/34

    3

    Maximum Flow and Minimum Cut

    Max flow and min cut.

    Two very rich algorithmic problems.

    Cornerstone problems in combinatorial optimization.

    Beautiful mathematical duality.

    Nontrivial applications / reductions.

    Data mining.

    Open-pit mining.

    Project selection.

    Airline scheduling.

    Bipartite matching. Baseball elimination.

    Image segmentation.

    Network connectivity.

    Network reliability.

    Distributed computing.

    Egalitarian stable matching.

    Security of statistical data.

    Network intrusion detection. Multi-camera scene reconstruction.

    Many many more

  • 8/6/2019 07 Max Flow

    4/34

    4

    Flow network.

    Abstraction for material flowing through the edges.

    G = (V, E) = directed graph, no parallel edges.

    Two distinguished nodes: s = source, t = sink.

    c(e) = capacity of edge e.

    Minimum Cut Problem

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4

    capacity

    source sink

  • 8/6/2019 07 Max Flow

    5/34

    5

    Def. An s-t cut is a partition (A, B) of V with s A and t B.

    Def. The capacity of a cut (A, B) is:

    Cuts

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4

    Capacity = 10 + 5 + 15= 30

    A

    cap(A,B) = c(e)

    e out ofA

    "

  • 8/6/2019 07 Max Flow

    6/34

    6

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4A

    Cuts

    Def. An s-t cut is a partition (A, B) of V with s A and t B.

    Def. The capacity of a cut (A, B) is:cap(A,B) = c(e)

    e out ofA

    "

    Capacity = 9 + 15 + 8 + 30= 62

  • 8/6/2019 07 Max Flow

    7/34

    7

    Min s-t cut problem. Find an s-t cut of minimum capacity.

    Minimum Cut Problem

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4A

    Capacity = 10 + 8 + 10= 28

  • 8/6/2019 07 Max Flow

    8/34

    8

    Def. An s-t flow is a function that satisfies:

    For each e E: [capacity]

    For each v V {s, t}: [conservation]

    Def. The value of a flow f is:

    Flows

    4

    0

    0

    0

    0 0

    0 4 4

    0

    0

    0

    Value = 40

    f(e)

    e in to v

    " = f(e)e out ofv

    "0 " f(e) " c(e)

    capacity

    flow

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4 0

    v(f) = f(e)e out ofs

    " .

    4

  • 8/6/2019 07 Max Flow

    9/34

    9

    Def. An s-t flow is a function that satisfies:

    For each e E: [capacity]

    For each v V {s, t}: [conservation]

    Def. The value of a flow f is:

    Flows

    10

    6

    6

    11

    1 10

    3 8 8

    0

    0

    0

    11

    capacity

    flow

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4 0

    Value = 24

    f(e)

    e in to v

    " = f(e)e out ofv

    "0 " f(e) " c(e)

    v(f) = f(e)e out ofs

    " .

    4

  • 8/6/2019 07 Max Flow

    10/34

    10

    Max flow problem. Find s-t flow of maximum value.

    Maximum Flow Problem

    10

    9

    9

    14

    4 10

    4 8 9

    1

    0 0

    0

    14

    capacity

    flow

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4 0

    Value = 28

  • 8/6/2019 07 Max Flow

    11/34

    11

    Flow value lemma. Let f be any flow, and let (A, B) be any s-t cut.

    Then, the net flow sent across the cut is equal to the amount leaving s.

    Flows and Cuts

    10

    6

    6

    11

    1 10

    3 8 8

    0

    0

    0

    11

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4 0

    Value = 24

    f(e)e out ofA

    " # f(e)e in to A

    " = v( f)

    4

    A

  • 8/6/2019 07 Max Flow

    12/34

    12

    Flow value lemma. Let f be any flow, and let (A, B) be any s-t cut.

    Then, the net flow sent across the cut is equal to the amount leaving s.

    Flows and Cuts

    10

    6

    6

    1 10

    3 8 8

    0

    0

    0

    11

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4 0

    f(e)e out ofA

    " # f(e)e in to A

    " = v( f)

    Value = 6 + 0 + 8 - 1 + 11= 24

    4

    11

    A

  • 8/6/2019 07 Max Flow

    13/34

    13

    Flow value lemma. Let f be any flow, and let (A, B) be any s-t cut.

    Then, the net flow sent across the cut is equal to the amount leaving s.

    Flows and Cuts

    10

    6

    6

    11

    1 10

    3 8 8

    0

    0

    0

    11

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4 0

    f(e)e out ofA

    " # f(e)e in to A

    " = v( f)

    Value = 10 - 4 + 8 - 0 + 10= 24

    4

    A

  • 8/6/2019 07 Max Flow

    14/34

    14

    Flows and Cuts

    Flow value lemma. Let f be any flow, and let (A, B) be any s-t cut. Then

    Pf.

    f(e)

    e out ofA

    " # f(e)= v(f)e in toA

    " .

    v(f) = f(e)e out ofs

    "

    =

    v #A

    " f(e)e out ofv

    " $ f(e)e in to v

    "%

    &'

    (

    )*

    = f(e)e out ofA

    " $ f(e).e in to A

    "

    by flow conservation, all termsexcept v = s are 0

  • 8/6/2019 07 Max Flow

    15/34

    15

    Flows and Cuts

    Weak duality. Let f be any flow, and let (A, B) be any s-t cut. Then the

    value of the flow is at most the capacity of the cut.

    Cut capacity = 30 Flow value 30

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4

    Capacity = 30

    A

  • 8/6/2019 07 Max Flow

    16/34

    16

    Weak duality. Let f be any flow. Then, for any s-t cut (A, B) we have

    v(f) cap(A, B).

    Pf.

    Flows and Cuts

    v( f) = f(e)e out ofA

    " # f(e)e in to A

    "

    $ f(e)e out ofA

    "

    $ c(e)e out ofA

    "

    = cap(A,B)

    s

    t

    A B

    7

    6

    8

    4

  • 8/6/2019 07 Max Flow

    17/34

    17

    Certificate of Optimality

    Corollary. Let f be any flow, and let (A, B) be any cut.

    If v(f) = cap(A, B), then f is a max flow and (A, B) is a min cut.

    Value of flow = 28Cut capacity = 28 Flow value 28

    10

    9

    9

    14

    4 10

    4 8 9

    1

    0 0

    0

    14

    s

    2

    3

    4

    5

    6

    7

    t

    15

    5

    30

    15

    10

    8

    15

    9

    6 10

    10

    10154

    4 0A

  • 8/6/2019 07 Max Flow

    18/34

    18

    Towards a Max Flow Algorithm

    Greedy algorithm.

    Start with f(e) = 0 for all edge e E.

    Find an s-t path P where each edge has f(e) < c(e).

    Augment flow along path P.

    Repeat until you get stuck.

    s

    1

    2

    t

    10

    10

    0 0

    0 0

    0

    20

    20

    30

    Flow value = 0

  • 8/6/2019 07 Max Flow

    19/34

    19

    Towards a Max Flow Algorithm

    Greedy algorithm.

    Start with f(e) = 0 for all edge e E.

    Find an s-t path P where each edge has f(e) < c(e).

    Augment flow along path P.

    Repeat until you get stuck.

    s

    1

    2

    t

    20

    Flow value = 20

    10

    10 20

    30

    0 0

    0 0

    0

    X

    X

    X

    20

    20

    20

  • 8/6/2019 07 Max Flow

    20/34

    20

    Towards a Max Flow Algorithm

    Greedy algorithm.

    Start with f(e) = 0 for all edge e E.

    Find an s-t path P where each edge has f(e) < c(e).

    Augment flow along path P.

    Repeat until you get stuck.

    greedy = 20

    s

    1

    2

    t

    20 10

    10 20

    30

    20 0

    0

    20

    20

    opt = 30

    s

    1

    2

    t

    20 10

    10 20

    30

    20 10

    10

    10

    20

    locally optimality global optimality

  • 8/6/2019 07 Max Flow

    21/34

    21

    Residual Graph

    Original edge: e = (u, v) E.

    Flow f(e), capacity c(e).

    Residual edge.

    "Undo" flow sent. e = (u, v) and eR = (v, u).

    Residual capacity:

    Residual graph: Gf = (V, Ef ).

    Residual edges with positive residual capacity.

    Ef = {e : f(e) < c(e)} {eR : f(e) > 0}.

    u v17

    6

    capacity

    u v11

    residual capacity

    6

    residual capacity

    flow

    cf (e) =c(e)" f(e) if e # E

    f(e) if eR # E

    $%&

  • 8/6/2019 07 Max Flow

    22/34

    22

    Ford-Fulkerson Algorithm

    s

    2

    3

    4

    5 t10

    10

    9

    8

    4

    10

    1062

    G:capacity

  • 8/6/2019 07 Max Flow

    23/34

    23

    Augmenting Path Algorithm

    Augment(f, c, P) {

    b bottleneck(P)foreach e P {

    if (e E) f(e) f(e) + b else f(eR) f(eR) - b

    }

    return f

    }

    Ford-Fulkerson(G, s, t, c) {

    foreach e E f(e) 0Gf residual graph

    while (there exists augmenting path P) {

    f Augment(f, c, P)update Gf

    }

    return f

    }

    forward edge

    reverse edge

  • 8/6/2019 07 Max Flow

    24/34

    24

    Max-Flow Min-Cut Theorem

    Augmenting path theorem. Flow f is a max flow iff there are no

    augmenting paths.

    Max-flow min-cut theorem. [Elias-Feinstein-Shannon 1956, Ford-Fulkerson 1956]

    The value of the max flow is equal to the value of the min cut.

    Pf. We prove both simultaneously by showing TFAE:(i) There exists a cut (A, B) such that v(f) = cap(A, B).

    (ii) Flow f is a max flow.

    (iii) There is no augmenting path relative to f.

    (i) (ii) This was the corollary to weak duality lemma.

    (ii) (iii) We show contrapositive.

    Let f be a flow. If there exists an augmenting path, then we can

    improve f by sending flow along path.

  • 8/6/2019 07 Max Flow

    25/34

    25

    Proof of Max-Flow Min-Cut Theorem

    (iii) (i)

    Let f be a flow with no augmenting paths.

    Let A be set of vertices reachable from s in residual graph.

    By definition of A, s A.

    By definition of f, t A.

    v( f) = f(e)e out ofA

    " # f(e)e in to A

    "

    = c(e)e out ofA

    "

    = cap(A,B)

    original network

    s

    t

    A B

  • 8/6/2019 07 Max Flow

    26/34

    26

    Running Time

    Assumption. All capacities are integers between 1 and C.

    Invariant. Every flow value f(e) and every residual capacity cf (e)

    remains an integer throughout the algorithm.

    Theorem. The algorithm terminates in at most v(f*) nC iterations.

    Pf. Each augmentation increase value by at least 1.

    Corollary. If C = 1, Ford-Fulkerson runs in O(mn) time.

    Integrality theorem. If all capacities are integers, then there exists a

    max flow f for which every flow value f(e) is an integer.Pf. Since algorithm terminates, theorem follows from invariant.

  • 8/6/2019 07 Max Flow

    27/34

    7.3 Choosing Good Augmenting Paths

  • 8/6/2019 07 Max Flow

    28/34

    28

    Ford-Fulkerson: Exponential Number of Augmentations

    Q. Is generic Ford-Fulkerson algorithm polynomial in input size?

    A. No. If max capacity is C, then algorithm can take C iterations.

    s

    1

    2

    t

    C

    C

    0 0

    0 0

    0

    C

    C

    1 s

    1

    2

    t

    C

    C

    1

    0 0

    0 0

    0X 1

    C

    C

    X

    X

    X

    1

    1

    1

    X

    X

    1

    1X

    X

    X

    1

    0

    1

    m, n, and log C

  • 8/6/2019 07 Max Flow

    29/34

    29

    Choosing Good Augmenting Paths

    Use care when selecting augmenting paths.

    Some choices lead to exponential algorithms.

    Clever choices lead to polynomial algorithms.

    If capacities are irrational, algorithm not guaranteed to terminate!

    Goal: choose augmenting paths so that: Can find augmenting paths efficiently.

    Few iterations.

    Choose augmenting paths with: [Edmonds-Karp 1972, Dinitz 1970]

    Max bottleneck capacity. Sufficiently large bottleneck capacity.

    Fewest number of edges.

  • 8/6/2019 07 Max Flow

    30/34

    30

    Capacity Scaling

    Intuition. Choosing path with highest bottleneck capacity increases

    flow by max possible amount.

    Don't worry about finding exact highest bottleneck path.

    Maintain scaling parameter .

    Let Gf () be the subgraph of the residual graph consisting of only

    arcs with capacity at least .

    110

    s

    4

    2

    t1

    170

    102

    122

    Gf

    110

    s

    4

    2

    t

    170

    102

    122

    Gf (100)

  • 8/6/2019 07 Max Flow

    31/34

    31

    Capacity Scaling

    Scaling-Max-Flow(G, s, t, c) {

    foreach e E f(e) 0 smallest power of 2 greater than or equal to C

    Gf residual graph

    while ( 1) {Gf() -residual graph

    while (there exists augmenting path P in Gf()) {f augment(f, c, P)update Gf()

    }

    / 2 }

    return f

    }

  • 8/6/2019 07 Max Flow

    32/34

    32

    Capacity Scaling: Correctness

    Assumption. All edge capacities are integers between 1 and C.

    Integrality invariant. All flow and residual capacity values are integral.

    Correctness. If the algorithm terminates, then f is a max flow.

    Pf.

    By integrality invariant, when = 1 Gf() = Gf. Upon termination of = 1 phase, there are no augmenting paths.

  • 8/6/2019 07 Max Flow

    33/34

    33

    Capacity Scaling: Running Time

    Lemma 1. The outer while loop repeats 1 + log2 C times.

    Pf. Initially C < 2C. decreases by a factor of 2 each iteration.

    Lemma 2. Let f be the flow at the end of a -scaling phase. Then the

    value of the maximum flow is at most v(f) + m .

    Lemma 3. There are at most 2m augmentations per scaling phase. Let f be the flow at the end of the previous scaling phase.

    L2 v(f*) v(f) + m (2).

    Each augmentation in a -phase increases v(f) by at least .

    Theorem. The scaling max-flow algorithm finds a max flow in O(m log C)augmentations. It can be implemented to run in O(m2 log C) time.

    proof on next slide

  • 8/6/2019 07 Max Flow

    34/34

    34

    Capacity Scaling: Running Time

    Lemma 2. Let f be the flow at the end of a -scaling phase. Then value

    of the maximum flow is at most v(f) + m .

    Pf. (almost identical to proof of max-flow min-cut theorem)

    We show that at the end of a -phase, there exists a cut (A, B)

    such that cap(A, B) v(f) + m .

    Choose A to be the set of nodes reachable from s in Gf().

    By definition of A, s A. By definition of f, t A.

    v( f) = f(e)e out ofA

    " # f(e)e in to A

    "

    $ (c(e)e out ofA

    " # %) # %e in to A

    "

    = c(e)e out ofA

    " # %e out ofA

    " # %e in to A

    "

    $ cap(A, B ) - m%

    original network

    s

    t

    A B