maximum flow csc 172 spring 2002 lecture 27. flow networks digraph weights, called capacities, on...

Post on 21-Dec-2015

215 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Maximum Flow

CSC 172

SPRING 2002

LECTURE 27

Flow Networks

Digraph

Weights, called capacities, on edges

Two distinct veticiesSource, “s” (no incoming edges)

Sink, “t” (no outgoing edges)

Example

Source

s

t

Sink

2

2

2

2

2

3

1

21

1

4

2

Capacity and Flow

Edge Capacities

Non-negative weights on network edges

Flow

function on network edges

0 <= flow <= capacity

flow into vertex == flow out of vertex

Value

combined flow into the sink

Example

Source

s

t

Sink

2

2

2

2

2

3

1

21

1

4

1 21

0 21

0

11

1

1

22

FormallyFlow(u,v) edge(u,v)

Capacity rule edge(u,v)

0 <= flow <= capacity

Conservation rule

uin(v) flow(u,v) = uout(v) flow(v,w)

Value rule

|f| = wout(s) flow(s,w) = uin(t) flow(u,t)

Maximum Flow Problem

Given a network N, find a flow of maximum value

ApplicationsTraffic movement

Hydraulic systems

Electrical circuits

Layout

Example

Source

s

t

Sink

2

2

2

2

2

3

1

21

1

4

2 21

1 11

1

21

0

1

22

Augmenting Path

t

s

2

2

1

12

2

2

12

1

Network with flow 3

Augmenting Path

t

s

2

2

1

12

2

2

12

1

Network with flow 3

t

s

2

2

2

10

2

Augmenting Path

Augmenting Path

t

s

2

2

1

12

2

2

12

1

Network with flow 3

t

s

2

2

2

10

2

Augmenting Path

t

s

2

2

2

12

2

2

02

2Result

Augmenting Path

Forward Edges

flow(u,v) < capacity

we can increase flow

Backward edges

flor(u,v) > 0

flow can be decreased

Max Flow Theorem

A flow has maximum value if and only if it has no augmenting path

Ford & Fulkerson Flow Algorithm

Initialize network with null flow

Method FindFlow

if augmenting path exists then

find augmenting path

increase flow

recursively call FindFlow

Finding Flow

t

s

2

2

0

12

2

0

00

0

Initialize Network

Finding Flow

t

s

2

2

0

12

2

1

11

0

Send one unit of flow through

Finding Flow

t

s

2

2

0

12

2

2

11

1

Send another unit of flow through

Finding Flow

t

s

2

2

1

12

2

2

12

1

Send another unit of flow through

Finding Flow

t

s

2

2

2

12

2

2

02

2

Send another unit of flow through

Note that there is still an augmentingPath that can proceed backwards

Finding Flow

t

s

2

2

2

12

2

2

02

2

Send another unit of flow through

Note that there are no moreAugmenting paths

Residual Network Nf

v

u c(u,v)

f(u,v)

Residual Network Nf

v

u c(u,v)

f(u,v)

v

ucf(u,v)=f(u,v)

cf(u,v)=c(u,v)-f(u,v)

Residual Network

In Nf all edges (w,z) with capacity cf(w,z)=0 are removed

Augmenting Path in N is a direct path in Nf

Augmenting paths can be found by performing a depth-first search on the residual network Nf

Finding Augmenting Path

t

s

2

2

1

12

2

2

12

1

Finding Augmenting Path

t

s

2

2

1

12

2

2

12

1

t

s

1

1

12

2

1

1

top related