Top Banner
CSE 2331 Maximum Flow 10.1
60

maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

Nov 23, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Maximum Flow

10.1

Page 2: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Flow Network

v112 // v3

20

��???

????

??

9

������

����

����

����

���

s

16

??~~~~~~~~~

13

��@@@

@@@@

@@t

v214

//

4

OO

v4

4

??���������

7

OO

c(u, v) = capacity of edge (u, v).

10.2

Page 3: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Flow

v1

12/12 // v3

15/20

��???

????

??

0/9

������

����

����

����

���

s

11/16

??~~~~~~~~~

8/13��@

@@@@

@@@@

t

v27/14

//

1/4

OO

v4

4/4

??���������

3/7

OO

c(u, v) = capacity of edge (u, v).

f(u, v) = flow along edge (u, v).

10.3

Page 4: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Capacity Constraint

v1

12/12 // v3

15/20

��???

????

??

0/9

������

����

����

����

���

s

11/16

??~~~~~~~~~

8/13��@

@@@@

@@@@

t

v27/14

//

1/4

OO

v4

4/4

??���������

3/7

OO

Capacity constraint: 0 ≤ f(u, v) ≤ c(u, v).

c(u, v) = capacity of edge (u, v).

f(u, v) = flow along edge (u, v).

10.4

Page 5: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Flow Conservation

v1

12/12 // v3

15/20

##HHHHHHH

0/9

||yyyyy

yyyyyy

yyyyy

s

11/16;;vvvvvvv

8/13 ##HHHHHHH t

v27/14

//

1/4

OO

v4

4/4

;;vvvvvvv

3/7

OO

Flow conservation: For all u ∈ G.V − {s, t},

flow in to u = flow out from u, or∑

v∈V

f(v, u) =∑

v∈V

f(u, v).

f(u, v) = flow along edge (u, v).

10.5

Page 6: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Flow

v1

12/12 // v3

15/20

##HHHHHHH

0/9

||yyyyy

yyyyyy

yyyyy

s

11/16;;vvvvvvv

8/13 ##HHHHHHH t

v27/14

//

1/4

OO

v4

4/4

;;vvvvvvv

3/7

OO

A flow is a function f : G.E → R where

1. Capacity constraint: 0 ≤ f(u, v) ≤ c(u, v);

2. Flow conservation:∑

v∈V f(v, u) =∑

v∈V f(u, v).

10.6

Page 7: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Flow

v1

12/12 // v3

15/20

##FFF

FFFF

F

0/9

}}{{{{

{{{{

{{{{

{{{{

{

s

11/16;;xxxxxxxx

8/13 ##FFF

FFFF

F t

v27/14

//

1/4

OO

v4

4/4

;;xxxxxxxx

3/7

OO

The value of the flow, |f |, is the amount flowing out of node s:

|f | =∑

v∈G.V

f(s, v).

10.7

Page 8: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Flow

v1

12/12 // v3

15/20

##FFF

FFFF

F

0/9

}}{{{{

{{{{

{{{{

{{{{

{

s

11/16;;xxxxxxxx

8/13 ##FFF

FFFF

F t

v27/14

//

1/4

OO

v4

4/4

;;xxxxxxxx

3/7

OO

Lemma:

flow out of node s = flow in to node t, or

|f | =∑

v∈G.V

f(s, v) =∑

v∈G.V

f(v, t).

10.8

Page 9: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Max Flow Problem

v1

12/12 // v3

15/20

$$JJJJJJJ

0/9

{{wwwwwwwwwwwwwww

s

11/1699ttttttt

8/13 %%JJJJJJJ t

v27/14

//

1/4

OO

v4

4/4

::ttttttt

3/7

OO

The value of the flow, |f |, is the amount flowing out of node s:

|f | =∑

v∈G.V

f(s, v).

max flow problem: Given a flow network G,

find max |f | over all flows f in G.

10.9

Page 10: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Flow

v1

0/12 // v3

0/20

��???

????

??

0/9

������

����

����

����

���

s

0/16

??~~~~~~~~~

0/13��@

@@@@

@@@@

t

v20/14

//

0/4

OO

v4

0/4

??���������

0/7

OO

10.10

Page 11: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Flow: Example 2

v1

0/7

AAA

AAAA

AA

0/5

��s

0/9 ++

0/3

33

0/4 // v2

0/7 //

0/5

>>}}}}}}}}}

0/2 A

AAAA

AAAA

v3

0/4 // t

v4

0/3

>>}}}}}}}}}

0/8

CC

10.11

Page 12: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Flow: Example 2

v1

0/7

AAA

AAAA

AA

5/5

��s

5/9 ++

3/3

33

4/4 // v2

4/7 //

0/5

>>}}}}}}}}}

0/2 A

AAAA

AAAA

v3

4/4 // t

v4

0/3

>>}}}}}}}}}

3/8

CC

10.12

Page 13: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Residual Capacity

Flow network (part): Residual capacity:

v1

0/7

��777

7777

s

5/9 ++

4/4 // v2

4/7 //

0/5

CC�������v3

v1

s v2 v3

Residual capacity:

cf (u, v) =

c(u, v)− f(u, v) if (u, v) ∈ G.E,

f(v, u) if (v, u) ∈ G.E,

0 otherwise.

10.13

Page 14: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Residual NetworkFlow network:

v10/7

''NNNNNN

5/5

��s

5/9

((

3/3

66

4/4 // v2

4/7 //

0/5 88pppppp

0/2 ''NNNNNN v3

4/4 // t

v40/3

88pppppp

3/8

AA

Residual network:

v17

''NNNNNNww

5

5

��s

4

((

\\

3

oo 4 v2

3 //oo4

588pppppp

2 ''NNNNNN v3oo 4

t

v4

3

88pppppp

5

AA

gg3

10.14

Page 15: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Augmenting Path

Residual network:

v1

7

AAA

AAAA

AAss 5

5

��s

4 ++

[[

3

oo 4 v2

3 //oo4

5

>>}}}}}}}}}

2

AAA

AAAA

AAv3

oo 4t

v4

3

>>}}}}}}}}}

5

CC

kk 3

An augmenting path is a path from s to t in the residual network.

10.15

Page 16: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Residual NetworkFlow network:

v1

12/12 // v315/20

''OOOOOO

0/9

xxqqqqqqqqqqqqqq

s

11/16 77oooooo

8/13 ''OOOOOO t

v27/14

//

1/4

OO

v44/4

77oooooo

3/7

OO

Residual capacity:

cf (u, v) =

c(u, v)− f(u, v) if (u, v) ∈ G.E,

f(v, u) if (v, u) ∈ G.E,

0 otherwise.

Assume that G.E never contains both (u, v) and (v, u).

10.16

Page 17: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

What is the residual network?

v1

PPPPPPP 2/7

''PPPPPPP

5/5

��s

7/9

((

3/3

66

4/4 // v2

2/7 //

0/5 77ooooooo

PPPPPPP

2/2 ''PPPPPPP v3

4/4 // t

v40/3

77ooooooo

5/8

??

v1

s v2 v3 t

v4

10.17

Page 18: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

What is the residual network?

v1

0/12 // v30/20

&&LLLLLLL

0/9

zzttttttttttttttt

s

0/1688rrrrrrr

0/13 &&LLLLLLL t

v20/14

//

0/4

OO

v4

0/4

88rrrrrrr

0/7

OO

v1 v3

s t

v2 v4

10.18

Page 19: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

What is the residual network?

v1

12/12 // v3

LLLLLLL

12/20

&&LLLLLLL

0/9

zzttttttttttttttt

s

rrrrrrr

12/1688rrrrrrr

LLLLLLL

4/13 &&LLLLLLL t

v24/14

//

0/4

OO

v4

rrrrrrr 4/4

88rrrrrrr

0/7

OO

v1 v3

s t

v2 v4

10.19

Page 20: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

What is the residual network?

v1

12/12 // v3

LLLLLLL

19/20

&&LLLLLLL

0/9

zzttttttttttttttt

s

rrrrrrr

12/1688rrrrrrr

LLLLLLL

11/13 &&LLLLLLL t

v211/14

//

0/4

OO

v4

rrrrrrr 4/4

88rrrrrrr

7/7

OO

v1 v3

s t

v2 v4

10.20

Page 21: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Residual Network

G is a directed graph where G.E never contains both (u, v) and

(v, u).

f is a flow network on G.

Residual capacity:

cf (u, v) =

c(u, v)− f(u, v) if (u, v) ∈ G.E,

f(v, u) if (v, u) ∈ G.E,

0 otherwise.

Gf is the residual network whose edges have capacities cf (u, v).

10.21

Page 22: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Ford-Fulkerson Max Flow Algorithm

procedure FFMaxFlow(G)

1 foreach edge (u, v) ∈ E(G) do f(u, v)← 0;

2 Compute residual network Gf ;

3 Search for path P in residual network Gf ;

4 while there exists a path P from s to t in Gf do

5 x← min{cf (u, v)|(u, v) ∈ P};

6 Increase flow in G by x along path P ;

7 Compute residual network Gf ;

8 Search for path P in residual network Gf ;

9 end

10.22

Page 23: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Ford-Fulkerson Max Flow Algorithm (Detailed)

procedure FFMaxFlow(G)

1 foreach edge (u, v) ∈ E(G) do f(u, v)← 0;

2 Compute residual network Gf ;

3 Search for path P in residual network Gf ;

4 while there exists a path P from s to t in Gf do

5 x← min{cf (u, v)|(u, v) ∈ P};

/* Increase flow in G by x along path P */

6 foreach edge (u, v) ∈ P do

7 if (u, v) ∈ E(G) then f(u, v)← f(u, v) + x;

8 else f(v, u)← f(v, u)− x ; /* (v, u) ∈ E(G) */

9 end

10 Compute residual network Gf ;

11 Search for path P in residual network Gf ;

12 end

10.23

Page 24: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Max Flow Example

v1

6

$$IIIIIIIIIII 4

##s

7

::vvvvvvvvvvv 5 // v29 //

8

::v32 // t

10.24

Page 25: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Max Flow Example

v1

6

$$IIIIIIIIIII 4

##s

7

::vvvvvvvvvvv 5 // v29 //

8

::v32 // t

v1

s v2 v3 t

10.25

Page 26: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Max Flow Example

v1

6

$$IIIIIIIIIII 4

##s

7

::vvvvvvvvvvv 5 // v29 //

8

::v32 // t

v1

s v2 v3 t

10.26

Page 27: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Minimum Cut

10.27

Page 28: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Cut

v112 // v3

20

��???

????

??

9

������

����

����

����

���

s

16

??~~~~~~~~~

13

��@@@

@@@@

@@t

v214

//

4

OO

v4

4

??���������

7

OO

A cut (S, T ) of a flow network G is a partition of G.V into S and

T = G.V − S such that s ∈ S and t ∈ T .

10.28

Page 29: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Cut

v112 // v3

20

��???

????

??

9

������

����

����

����

���

s

16

??~~~~~~~~~

13

��@@@

@@@@

@@t

v214

//

4

OO

v4

4

??���������

7

OO

A cut (S, T ) of a flow network G is a partition of G.V into S and

T = G.V − S such that s ∈ S and t ∈ T .

The capacity of the cut (S, T ) is:

c(S, T ) =∑

u∈S

v∈T

c(u, v).

10.29

Page 30: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Cut

v112 // v3

20

��???

????

??

9

������

����

����

����

���

s

16

??~~~~~~~~~

13

��@@@

@@@@

@@t

v214

//

4

OO

v4

4

??���������

7

OO

10.30

Page 31: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Minimum Cut

v112 // v3

20

��???

????

??

9

������

����

����

����

���

s

16

??~~~~~~~~~

13

��@@@

@@@@

@@t

v214

//

4

OO

v4

4

??���������

7

OO

The capacity of the cut (S, T ) is c(S, T ) =∑

u∈S

v∈T c(u, v).

A mininum cut of G is a cut whose capacity is minimum

over all cuts of G.

10.31

Page 32: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Minimum Cut

v1

6

""FFFFFFFFFFFF

4

""s

7

<<yyyyyyyyyyyy 5 // v29 //

8

::v32 // t

10.32

Page 33: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Minimum Cut

v1

7

AAA

AAAA

AA

5

��s

9 ++

333

4 // v27 //

5

>>}}}}}}}}}

2

AAA

AAAA

AAv3

4 // t

v4

3

>>}}}}}}}}}

8

CC

10.33

Page 34: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Flows and Cuts

v1

6

$$IIIIIIIIIII 4

##s

7

::vvvvvvvvvvv 5 // v29 //

8

::v32 // t

|f | =∑

v∈G.V f(s, v) is the value of flow f .

c(S, T ) =∑

u∈S

v∈T c(u, v) is the capacity of cut (S, T ).

Lemma (Cut Lemma). For any flow f and any cut (S, T ),

|f | ≤ c(S, T ).

10.34

Page 35: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

max-flow min-cut theorem

Theorem. For any flow network G,

max flow of G = min cut of G!

10.35

Page 36: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Max-flow min-cut theorem

Proof: The following three conditions are equivalent:

1. f is a maximum flow of G.

2. There are no augmenting paths in the residual network Gf .

3. |f | = c(S, T ) for some cut (S, T ) of G.

10.36

Page 37: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Max-flow min-cut theorem: (1)⇒ (2).

The following three conditions are equivalent:

1. f is a maximum flow of G.

2. There are no augmenting paths in the residual network Gf .

3. |f | = c(S, T ) for some cut (S, T ) of G.

(1)⇒ (2): If Gf had an augmenting path P , then we could

increase |f | by adding flow along P to f .

10.37

Page 38: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Max-flow min-cut theorem: (2)⇒ (3).

The following three conditions are equivalent:

1. f is a maximum flow of G.

2. There are no augmenting paths in the residual network Gf .

3. |f | = c(S, T ) for some cut (S, T ) of G.

(2)⇒ (3): Assume Gf has no augmenting path.Let S = {v ∈ G.V : there is a path from s to v in Gf}.Let T = G.V − S.

Since there is no edge in Gf from any u ∈ S to any v ∈ T :

• the flow from S to T is∑

u∈S

v∈T c(u, v) = c(S, T );

• there is no flow from T to S.

Thus |f | = c(S, T ).

10.38

Page 39: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Max-flow min-cut theorem: (3)⇒ (1).

The following three conditions are equivalent:

1. f is a maximum flow of G.

2. There are no augmenting paths in the residual network Gf .

3. |f | = c(S, T ) for some cut (S, T ) of G.

(3)⇒ (1): Assume |f | = c(S, T ).

By the cut lemma (slide 10.34), |f ′| ≤ c(S, T ) for any flow f ′ in G.

Thus, |f ′| ≤ c(S, T ) = |f | so |f | is a maximum flow.

10.39

Page 40: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Ford-Fulkerson Max Flow Algorithm

Running Time Analysis

10.40

Page 41: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Ford-Fulkerson Max Flow Algorithm: Time

procedure FFMaxFlow(G)

1 foreach edge (u, v) ∈ E(G) do f(u, v)← 0;

2 Compute residual network Gf ;

3 Search for path P in residual network Gf ;

4 while there exists a path P from s to t in Gf do

5 x← min{cf (u, v)|(u, v) ∈ P};

6 Increase flow in G by x along path P ;

7 Compute residual network Gf ;

8 Search for path P in residual network Gf ;

9 end

10.41

Page 42: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Ford-Fulkerson Max Flow Algorithm: Time

Lemma. If all capacities are integers, then FFMaxFlow increases

the flow value by a positive integer at each iteration.

10.42

Page 43: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Ford-Fulkerson Max Flow Algorithm: Time

Lemma. If all capacities are integers, then FFMaxFlow increasesthe flow value by a positive integer at each iteration.

Idea of proof. Initially, flow is zero so all flows are integers.

If all capacities and flows are integers:⇓

Capacities in the residual network Gf are integers.⇓

x = min{cf (u, v)|(u, v) ∈ P} is an integer.⇓

New flow in G is an integer.⇓

All capacities and flows are integers.

Apply induction for formal proof.

10.43

Page 44: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

FF Max Flow Algorithm: Time Analysis

procedure FFMaxFlow(G)

1 foreach edge (u, v) ∈ E(G) do f(u, v)← 0;

2 Compute residual network Gf ;

3 Search for path P in residual network Gf ;

4 while there exists a path P from s to t in Gf do

5 x← min{cf (u, v)|(u, v) ∈ P};

6 Increase flow in G by x along path P ;

7 Compute residual network Gf ;

8 Search for path P in residual network Gf ;

9 end

10.44

Page 45: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Ford-Fulkerson Max Flow Algorithm: Time

m = # graph edges.

Proposition. If all capacities are integers, then the Ford-Fulkerson

Algorithm runs in O(m|f∗|) time where f∗ is the max flow.

10.45

Page 46: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Multi-Source/Sink Max-Flow

10.46

Page 47: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Multiple Sources and Sinks

v13 // v2

5

��

s24

oo 7 // v3

3

��s1

8

OO

4 //

3

��

v46 // v5

4

��

2

>>}}}}}}}}}v6

9

��v7

1 // t1 v82

oo 3 // t2

Sources: s1 and s2.

Sinks: t1 and t2.

Flow value |f | =∑

si

vjf(si, vj).

10.47

Page 48: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Reduction

Multi-Source/Sink Max-Flow Problem: Given a flow network G

with multiple sources and sinks, find max |f | over all flows f in G.

Single Source/Sink Max-Flow Problem: Given a flow network G

with one source and sink, find max |f | over all flows f in G.

Reduce the Multi-Source/Sink Max-Flow Problem to the Single

Source Max Flow Problem.

Reduce P to Q: Turn problem P into Q such that the solution to

Q gives the solution to P .

10.48

Page 49: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Multi-Source/Sink Max-Flow Problem

Reduce Multi-Source/Sink Max-Flow Problem to Single

Source/Sink Max-Flow Problem:

v13 // v2

5

��

s24

oo 7 // v3

3

��s1

8

OO

4 //

3

��

v46 // v5

4

��

2

>>}}}}}}}}}v6

9

��v7

1 // t1 v82

oo 3 // t2

10.49

Page 50: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Multi-Source/Sink Max-Flow Problem

Reduce the Multi-Source/Sink Max-Flow Problem to the Single

Source Max Flow Problem:

Let G be a flow network with multiple sources si and sinks ti.

Create flow network G′ from G with a single source and sink as

follows:

• Add new source s∗ and new sink t∗;

• Add directed edges from s∗ to each si.

Set capacity of each new edge to ∞.

• Add directed edges from each ti to t∗.

Set capacity of each new edge to ∞.

G′ has flow with value F from s∗ to t∗ if and only if G has flow

with value F from the si to the ti.

10.50

Page 51: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Bipartite Matching

10.51

Page 52: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Bipartite Graph

u1

YYYYYYYYYYYYYYYYYYYYYYYYY

RRRRRRRRRRRRRRRRRRRRRRRRRR w1

u2

eeeeeeeeeeeeeeeeeeeeeeeee

RRRRRRRRRRRRRRRRRRRRRRRRRR w2

u3

eeeeeeeeeeeeeeeeeeeeeeeee

RRRRRRRRRRRRRRRRRRRRRRRRRR w3

u4

llllllllllllllllllllllllllw4

w5

Definition. An undirected graph G is bipartite if its vertices can

be partitioned into two sets U and W such that every graph edge

e ∈ G.E has one endpoint ui in U and one endpoint wj in W .

10.52

Page 53: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Bipartite Matching

u1

YYYYYYYYYYYYYYYYYYYYYYYYY

RRRRRRRRRRRRRRRRRRRRRRRRRR w1

u2

eeeeeeeeeeeeeeeeeeeeeeeee

RRRRRRRRRRRRRRRRRRRRRRRRRR w2

u3

eeeeeeeeeeeeeeeeeeeeeeeee

RRRRRRRRRRRRRRRRRRRRRRRRRR w3

u4

llllllllllllllllllllllllllw4

w5

Definition. A matching of a bipartite graph G is a subset M of

the edges G.E of G such that no two edges share an endpoint.

10.53

Page 54: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Bipartite Matching

u1

YYYYYYYYYYYYYYYYYYYYYYYYY w1

u2 w2

u3

llllllllllllllllllllllllll

eeeeeeeeeeeeeeeeeeeeeeeee w3

u4

llllllllllllllllllllllllllw4

u5

llllllllllllllllllllllllll

eeeeeeeeeeeeeeeeeeeeeeeee

Definition. A matching of a bipartite graph G is a subset M of

the edges G.E of G such that no two edges share an endpoint.

10.54

Page 55: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Maximum Bipartite Matching

u1

YYYYYYYYYYYYYYYYYYYYYYYYY w1

u2 w2

u3

llllllllllllllllllllllllll

eeeeeeeeeeeeeeeeeeeeeeeee w3

u4

llllllllllllllllllllllllllw4

u5

llllllllllllllllllllllllll

eeeeeeeeeeeeeeeeeeeeeeeee

Definition. A maximum matching of a bipartite graph G is a

matching with greatest number of edges.

Note: A maximum matching has at most min(|U |, |W |) edges. (Why?)

10.55

Page 56: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Maximum Bipartite Matching

u1

YYYYYYYYYYYYYYYYYYYYYYYYY w1

u2 w2

u3

llllllllllllllllllllllllll

eeeeeeeeeeeeeeeeeeeeeeeee w3

u4

llllllllllllllllllllllllllw4

u5

llllllllllllllllllllllllll

eeeeeeeeeeeeeeeeeeeeeeeee

Bipartite Matching Problem: Given a bipartite graph G, find a

maximum matching of G.

10.56

Page 57: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Reduction

Bipartite Matching Problem: Given a bipartite graph G, find a

maximum matching of G.

(Single Source/Sink) Max-Flow Problem: Given a flow network G

with one source and sink, find max |f | over all flows f in G.

Reduce the Bipartite Matching Problem to the (Single Source)

Max Flow Problem.

Reduce P to Q: Turn problem P into Q such that the solution to

Q gives the solution to P .

10.57

Page 58: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Bipartite Matching Problem

Reduce the Bipartite Matching Problem to the (Single Source)

Max Flow Problem.

Let G be the bipartite graph whose edges connect U ⊂ G.V to

W ⊂ G.V .

Create a flow network G′ from G as follows:

• Add source node s and sink node t;

• Replace each undirected edge (ui, wi) of G.E with a directed

edge (ui, wi);

• Add directed edges from s to each ui ∈ U ;

• Added directed edges from each wi ∈W to t;

• Set the capacity of every edge to 1.

G′ has flow with value F from s to t if and only if G has a

matching of size F .

10.58

Page 59: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Ford-Fulkerson Max Flow Algorithm: Time

m = # graph edges.

Proposition. If all capacities are integers, then the Ford-Fulkerson

Algorithm runs in O(m|f∗|) time where f∗ is the max flow.

10.59

Page 60: maxflow - University of California, Davislrademac/Sp16_2331/maxflow.pdf · HHH HH 0/9 y||y yyy yyy yyy yyy yy s 11/16 vv;; vvv vv 8/13 H## HHH HHH t v2 7/14 // 1/4 OO v4 4/4 vv;;

CSE 2331

Bipartite Matching: Time

m = # graph edges.

Proposition. If all capacities are integers, then the Ford-Fulkerson

Algorithm runs in O(m|f∗|) time where f∗ is the max flow.

In the reduction of bipartite matching to max flow:

• All edge capacities are 1;

• The max flow |f∗| ≤ n.

Proposition. Reducing bipartite matching to max flow and

applying the Ford-Fulkerson Algorithm takes O(nm) time.

10.60