CSE 421 Algorithms Richard Anderson Lecture 22 Network Flow.

26
CSE 421 Algorithms Richard Anderson Lecture 22 Network Flow
  • date post

    22-Dec-2015
  • Category

    Documents

  • view

    218
  • download

    1

Transcript of CSE 421 Algorithms Richard Anderson Lecture 22 Network Flow.

CSE 421Algorithms

Richard Anderson

Lecture 22

Network Flow

Network Flow

Outline

• Network flow definitions

• Flow examples

• Augmenting Paths

• Residual Graph

• Ford Fulkerson Algorithm

• Cuts

• Maxflow-MinCut Theorem

Network Flow Definitions

• Capacity

• Source, Sink

• Capacity Condition

• Conservation Condition

• Value of a flow

Flow Example

u

s t

v

20

20

30

10

10

Flow assignment and the residual graph

u

s t

v

15/20

20/20

15/30

0/10

5/10

u

s t

v

5

15

10

5 20

15

15

5

Network Flow Definitions

• Flowgraph: Directed graph with distinguished vertices s (source) and t (sink)

• Capacities on the edges, c(e) >= 0• Problem, assign flows f(e) to the edges such

that:– 0 <= f(e) <= c(e)– Flow is conserved at vertices other than s and t

• Flow conservation: flow going into a vertex equals the flow going out

– The flow leaving the source is a large as possible

Flow Example

a

s

d

b

c f

e

g

h

i

t

20

5

20 20

20

20

20

55

520

5 10

20

5

20

20

5

20

20

5

5

10

30

Find a maximum flow

a

s

d

b

c f

e

g

h

i

t

25

5

20 20

20

30

20

55

520

5 10

20

5

20

10

5

20

20

5

5

20

30

Value of flow:

Construct a maximum flow and indicate the flow value

Find a maximum flow

a

s

d

b

c f

e

g

h

i

t

25

5

20 20

20

30

20

55

520

5 10

20

5

20

10

5

20

20

5

5

20

30

Augmenting Path Algorithm

• Augmenting path– Vertices v1,v2,…,vk

• v1 = s, vk = t• Possible to add b units of flow between vj and vj+1

for j = 1 … k-1

u

s t

v

10/20

15/20

10/30

0/10

5/10

Find two augmenting paths

s t

2/5

0/1

3/4

3/3

2/4

1/3

3/3

3/3

2/2

3/4

1/3 3/3

2/2 3/3

1/3

1/32/2

1/3

Residual Graph

• Flow graph showing the remaining capacity

• Flow graph G, Residual Graph GR

– G: edge e from u to v with capacity c and flow f

– GR: edge e’ from u to v with capacity c – f

– GR: edge e’’ from v to u with capacity f

Build the residual graph

s

d

e

g

h

t

3/5

2/4

3/3

1/5 1/5

1/1

1/1

3/3

2/5

s

d

e

g

h

t

Residual graph:

Augmenting Path Lemma

• Let P = v1, v2, …, vk be a path from s to t with minimum capacity b in the residual graph.

• b units of flow can be added along the path P in the flow graph.

u

s t

v

15/20

20/20

15/30

0/10

5/10

u

s t

v

5

15

10

5 20

15

15

5

Proof

• Add b units of flow along the path P

• What do we need to verify to show we have a valid flow after we do this?–

Ford-Fulkerson Algorithm (1956)

while not done

Construct residual graph GR

Find an s-t path P in GR with capacity b > 0

Add b units along in G

If the sum of the capacities of edges leaving S is at most C, then the algorithm takes at most C iterations

Cuts in a graph

• Cut: Partition of V into disjoint sets S, T with s in S and t in T.

• Cap(S,T): sum of the capacities of edges from S to T

• Flow(S,T): net flow out of S– Sum of flows out of S minus sum of flows into S

• Flow(S,T) <= Cap(S,T)

What is Cap(S,T) and Flow(S,T)

a

s

d

b

c f

e

g

h

i

t

15/25

5/5

20/20 20/20

20/20

25/30

20/20

5/5

20/20

0/5

20/20

15/20

10/10

20/20

5/5

20/20

30/30

S={s, a, b, e, h}, T = {c, f, i, d, g, t}

0/5

0/20

0/5

0/5

0/5

0/5

0/10

Minimum value cut

u

s t

v

40

40

10

10

10

Find a minimum value cut

s t

6

6

10

7

3

5

3 6

24

5

85

4

8

MaxFlow – MinCut Theorem

• There exists a flow which has the same value of the minimum cut

• Proof: Consider a flow where the residual graph has no s-t path with positive capacity

• Let S be the set of vertices in GR reachable from s with paths of positive capacity

s t

Let S be the set of vertices in GR reachable from s with paths of positive capacity

s tu v

S T

What can we say about the flows and capacity between u and v?

Max Flow - Min Cut Theorem

• Ford-Fulkerson algorithm finds a flow where the residual graph is disconnected, hence FF finds a maximum flow.

• If we want to find a minimum cut, we begin by looking for a maximum flow.

Performance

• The worst case performance of the Ford-Fulkerson algorithm is horrible

u

s t

v

1000

1000

1

1000

1000

Better methods of finding augmenting paths

• Find the maximum capacity augmenting path– O(m2log(C)) time algorithm for network flow

• Find the shortest augmenting path– O(m2n) time algorithm for network flow

• Find a blocking flow in the residual graph– O(mnlog n) time algorithm for network flow