Flow Networks

65
Flow Networks

description

Flow Networks. Network Flows. Types of Networks. Internet Telephone Cell Highways Rail Electrical Power Water Sewer Gas …. Maximum Flow Problem. How can we maximize the flow in a network from a source or set of sources to a destination or set of destinations? - PowerPoint PPT Presentation

Transcript of Flow Networks

Page 1: Flow Networks

Flow Networks

Page 2: Flow Networks

2

Network Flows

Page 3: Flow Networks

3

Types of Networks Internet Telephone Cell Highways Rail Electrical Power Water Sewer Gas …

Page 4: Flow Networks

4

Maximum Flow Problem How can we maximize the flow in a network from a source or set of

sources to a destination or set of destinations? The problem reportedly rose to prominence in relation to the rail

networks of the Soviet Union, during the 1950's. The US wanted to know how quickly the Soviet Union could get supplies through its rail network to its satellite states in Eastern Europe.

In addition, the US wanted to know which rails it could destroy most easily to cut off the satellite states from the rest of the Soviet Union. It turned out that these two problems were closely related, and that solving the max flow problem also solves the min cut problem of figuring out the cheapest way to cut off the Soviet Union from its satellites.

Source: lbackstrom, The Importance of Algorithms, at www.topcoder.com

Page 5: Flow Networks

5

•A Network is a directed graph G •Edges represent pipes that carry flow•Each edge (u,v) has a maximum capacity c(u,v) •A source node s in which flow arrives•A sink node t out which flow leaves

Goal: Max Flow

Network Flow

Page 6: Flow Networks

6

The Problem Use a graph to model material that flows through conduits. Each edge represents one conduit, and has a capacity, which is

an upper bound on the flow rate, in units/time. Can think of edges as pipes of different sizes. Want to compute max rate that we can ship material from a

designated source to a designated sink.

Page 7: Flow Networks

7

What is a Flow Network? Each edge (u,v) has a nonnegative capacity c(u,v). If (u,v) is not in E, assume c(u,v)=0. We have a source s, and a sink t. Assume that every vertex v in V is on some path from s to t. e.g., c(s,v1)=16; c(v1,s)=0; c(v2,v3)=0

Page 8: Flow Networks

8

What is a Flow in a Network?

For each edge (u,v), the flow f(u,v) is a real-valued function that must satisfy 3 conditions:

Notes: The skew symmetry condition implies that f(u,u)=0. We show only the positive capacity/flows in the flow network.

Capacity constraint: , , ( , ) ( , ) u v V f u v c u v

Skew symmetry: , , ( , ) ( , ) u v V f u v f v u

Flow conservation { , }, ( , ) 0: v V

u V s t f u v

Page 9: Flow Networks

9

Example of a Flow:

f(v2, v1) = 1, c(v2, v1) = 4. f(v1, v2) = -1, c(v1, v2) = 10. f(v3, s) + f(v3, v1) + f(v3, v2) + f(v3, v4) + f(v3, t) =

0 + (-12) + 4 + (-7) + 15 = 0

flowcapacity

capacity

Page 10: Flow Networks

10

The Value of a flow

The value of a flow is given by

VvVv

tvfvsff ),(),(||

This is the total flow leaving s = the total flow arriving in t.

Page 11: Flow Networks

11

Example:

|f| = f(s, v1) + f(s, v2) + f(s, v3) + f(s, v4) + f(s, t) =

11 + 8 + 0 + 0 + 0 = 19

|f|= f(s, t) + f(v1, t) + f(v2, t) + f(v3, t) + f(v4, t) =

0 + 0 + 0 + 15 + 4 = 19

Page 12: Flow Networks

12

A flow in a network

We assume that there is only flow in one direction at a time.

Sending 7 trucks from Edmonton to Calgary and 3 trucks from Calgary to Edmonton has the same net effect as sending 4 trucks from Edmonton to Calgary.

Page 13: Flow Networks

13

Multiple Sources Network We have several sources and several targets. Want to maximize the total flow from all sources to all targets. Reduce to max-flow by creating a supersource and a supersink:

Page 14: Flow Networks

14

Residual Networks The residual capacity of an edge (u,v) in a network with a flow f is

given by:

),(),(),( vufvucvuc f

• The residual network of a graph G induced by a flow f is the graph including only the edges with positive residual capacity, i.e.,

( , ), wheref fG V E {( , ) : ( , ) 0}f fE u v V V c u v

Page 15: Flow Networks

15

Example of Residual Network

Flow Network:

Residual Network:

Page 16: Flow Networks

16

Augmenting Paths

An augmenting path p is a simple path from s to t on the residual network.

We can put more flow from s to t through p. We call the maximum capacity by which we can

increase the flow on p the residual capacity of p.

}on is ),( :),(min{)( pvuvucpc ff

Page 17: Flow Networks

17

Augmenting Paths

Network:

Residual Network:

Augmenting path The residual capacity of this augmenting path is 4.

Page 18: Flow Networks

18

Computing Max Flow

Classic Method: Identify augmenting path Increase flow along that pathRepeat

Page 19: Flow Networks

19

Ford-Fulkerson Method

Page 20: Flow Networks

20

Example

Flow(1)

Residual(1)

Flow(2)

Residual(2)

No more augmenting paths max flow attained.

Cut

Page 21: Flow Networks

21

Cuts of Flow Networks

A ( , ) of a flow network is a partition cut of into and such that and .

S T V S T V Ss S t T

Page 22: Flow Networks

22

The Net Flow through a Cut (S,T)

f(S,T) = 12 – 4 + 11 = 19

TvSu

vufTSf,

),(),(

Page 23: Flow Networks

23

The Capacity of a Cut (S,T)

c(S,T)= 12+ 0 + 14 = 26

TvSu

vucTSc,

),(),(

Page 24: Flow Networks

24

Augmenting Paths – example Capacity of the cut

= maximum possible flow through the cut = 12 + 7 + 4 = 23

• The network has a capacity of at most 23. • In this case, the network does have a capacity of 23, because this is a minimum cut.

Flow(2)

cut

Page 25: Flow Networks

25

Net Flow of a Network The net flow across any cut is the same

and equal to the flow of the network |f|.

Page 26: Flow Networks

26

Bounding the Network Flow The value of any flow f in a flow network G is

bounded by the capacity of any cut of G.

Page 27: Flow Networks

27

Max-Flow Min-Cut Theorem

If f is a flow in a flow network G=(V,E), with source s and sink t, then the following conditions are equivalent:1. f is a maximum flow in G.2. The residual network Gf contains no

augmented paths. 3. |f| = c(S,T) for some cut (S,T) (a min-cut).

Page 28: Flow Networks

28

The Basic Ford-Fulkerson Algorithm

Page 29: Flow Networks

29

Example

Original Network

augmenting path

4Resulting Flow =

Flow Network

Page 30: Flow Networks

30

Example

Resulting Flow =

4Flow Network

Residual Network

Flow Network

Resulting Flow =

11

augmenting path

Page 31: Flow Networks

Example

Resulting Flow =

11Flow

Network

Residual Network

Flow Network

Resulting Flow =

19

augmenting path

Page 32: Flow Networks

32

Example

Resulting Flow =

19Flow

Network

Residual Network

Flow Network

Resulting Flow =

23

augmenting path

Page 33: Flow Networks

33

Residual Network

Example

Resulting Flow = 23

No augmenting path: Maxflow=23

Page 34: Flow Networks

34

Analysis

O(E)

O(V)

?

Page 35: Flow Networks

35

Analysis If capacities are all integer, then each augmenting

path raises |f| by ≥ 1. If max flow is f*, then need ≤ |f*| iterations time is

O(E|f*|). Note that this running time is not polynomial in input

size. It depends on |f*|, which is not a function of |V| or |E|.

If capacities are rational, can scale them to integers. If irrational, FORD-FULKERSON might never

terminate!

Page 36: Flow Networks

36

The Basic Ford-Fulkerson Algorithm With time O ( E |f*|), the algorithm is not polynomial. This problem is real: Ford-Fulkerson may perform

very badly if we are unlucky:

|f*|=2,000,000

Page 37: Flow Networks

37

Run Ford-Fulkerson on this example

Augmenting Path

Residual Network

Page 38: Flow Networks

38

Run Ford-Fulkerson on this example

Augmenting Path

Residual Network

Page 39: Flow Networks

39

Run Ford-Fulkerson on this example

Repeat 999,999 more times… Can we do better than this?

Page 40: Flow Networks

40

The Edmonds-Karp Algorithm A small fix to the Ford-Fulkerson algorithm makes it work in polynomial

time. Select the augmenting path using breadth-first search on residual

network. The augmenting path p is the shortest path from s to t in the residual

network (treating all edge weights as 1). Runs in time O(V E2).

Page 41: Flow Networks

41

The Edmonds-Karp Algorithm - example

The Edmonds-Karp algorithm halts in only 2 iterations on this graph.

Page 42: Flow Networks

An Application of Max Flow:

Maximum Bipartite Matching

Page 43: Flow Networks

43

Maximum Bipartite Matching A bipartite graph is a graph

G=(V,E) in which V can be divided into two parts L and R such that every edge in E is between a vertex in L and a vertex in R.

e.g. vertices in L represent skilled workers and vertices in R represent jobs. An edge connects workers to jobs they can perform.

Page 44: Flow Networks

44

A matching in a graph is a subset M of E, such that for all vertices v in V, at most one edge of M is incident on v.

Page 45: Flow Networks

45

A maximum matching is a matching of maximum cardinality (maximum number of edges).

not maximum maximum

Page 46: Flow Networks

46

A Maximum Matching No matching of cardinality 4,

because only one of v and u can be matched.

In the workers-jobs example a max-matching provides work for as many people as possible.

v

u

Page 47: Flow Networks

47

Solving the Maximum Bipartite Matching Problem

Reduce the maximum bipartite matching problem on graph G to the max-flow problem on a corresponding flow network G’.

Solve using Ford-Fulkerson method.

Page 48: Flow Networks

48

Corresponding Flow Network To form the corresponding flow network G' of the bipartite graph G:

Add a source vertex s and edges from s to L. Direct the edges in E from L to R. Add a sink vertex t and edges from R to t. Assign a capacity of 1 to all edges.

Claim: max-flow in G’ corresponds to a max-bipartite-matching on G.

s

L R

t

GG’111

1

1

1

11

1

11

11

11

Page 49: Flow Networks

49

Solving Bipartite Matching as Max Flow

( , ) be a bipartite graph with vertex partition .L et G V E V L R

( , ) be its corresponding fl ow net wLe o kt r . G V E

is a matching in ,I f M G

there is an integer-valued fl ow in with value | | | |en .th f G f M

if is an integer-valued fConvers low in , e y ,l f G

there is a matching in with cardinality |then | | | .M G M f

max| | max(integeT rhus |f |)M

Page 50: Flow Networks

50

Does this mean that max |f| = max |M|?

Problem: we haven’t shown that the max flow f(u,v) is necessarily integer-valued.

Page 51: Flow Networks

51

Integrality Theorem If the capacity function c takes on only integral values, then:

1. The maximum flow f produced by the Ford-Fulkerson method has the property that |f| is integer-valued.

2. For all vertices u and v the value f(u,v) of the flow is an integer.

So max|M| = max |f|

Page 52: Flow Networks

52

Example

min cut

|M| = 3 max flow =|f|= 3

Page 53: Flow Networks

53

Conclusion

Network flow algorithms allow us to find the maximum bipartite matching fairly easily.

Similar techniques are applicable in many other combinatorial design problems.

Page 54: Flow Networks

54

Example In a department there are n courses and m instructors. Every instructor has a list of courses he or she can

teach. Every instructor can teach at most 3 courses during a

year.

The goal: find an allocation of courses to the instructors subject to these constraints.

Page 55: Flow Networks

Ford-Fulkerson Algorithm

Ford-Fulkerson(G, s, t) // G = (V, E) 1 for each edge (u,v) in E 2 f(u,v) = f(v,u) = 0 3 while exists path p from s to t in residual network Gf 4 cf (p) = min{cf (u, v) : (u, v) is in p}

5 for each edge (u,v) on p 6 f(u,v) = f(u,v) + cf (p) 7 f(v,u) = -f(u,v)

Page 56: Flow Networks

Consider the network G=(V,E) shown in the figure below. Eachedge (u,v) ∈ E in the network is labeled with its capacity c(u,v).

s

b

t

a

5

4

3

1

2

s

b

t

a

5

4

1/3

1/1

1/2

Flow: |f1| = 1

G0

Page 57: Flow Networks

Residual graph with respect to f1

s

b

t

a

5

4

2

1

1

1

1

s

b

t

a

5

1/4

1/3

1/1

2/2

s

b

t

a

5

4

1/3

1/1

1/2

Flow: |f1| = 1

Flow: |f2| = 1

Page 58: Flow Networks

Residual graph with respect to f2

s

b

t

a

5

3

2

1

2

1

1

s

b

t

a

1/5

2/4

1/3

0/1

2/2

s

b

t

a

5

1/4

1/3

1/1

2/2

Flow: |f2| = 2

Flow: |f3| = 3

Page 59: Flow Networks

s

b

t

a

4

2

2

1

2

1 1

2

s

b

t

a

3/5

2/4

3/3

1

2/2

s

b

t

a

1/5

2/4

1/3

0/1

2/2

Flow: |f3| = 3

Residual graph with respect to f3

Flow: |f4| = 5

Page 60: Flow Networks

s

b

t

a

2

2

3

1

2

3

2

Max Flow : |f*| = 5

Residual graph with respect to f4

s

b

t

a

3/5

2/4

3/3

1

2/2

Flow: |f4| = 5

Page 61: Flow Networks

s t

v1 v2

v4v313

16

1220

144

10 4 9

s t

v1 v2

v4v313

4/16

4/1220

4/144/4

10 4 4/9

7

7

Example:

Page 62: Flow Networks

s t

v1 v2

v4v313

12

820

104

10 4 5

474

4

s t

v1 v2

v4v313

11/16 7/20

11/144/4

7/10 4 4/97/7

4/12

4

Page 63: Flow Networks

s t

v1 v2

v4v313

5

813

34

3 11 5

4 711

11

4

7

s t

v1 v2

v4v38/13

11/16 15/20

11/144/4

10 1/4 4/97/7

12/12

Page 64: Flow Networks

s t

v1 v2

v4v3

8

512

5

34

11 3 5

4 711 15

5

11

s

v1 v2

v4v312/13

11/16

11/144/4

10 1/4 97/7

12/12

t

19/20

Page 65: Flow Networks

s t

v1 v2

v4v31

512

1

3 4

11 3 97

11 19

12

11