chapter 26 maximum flow. 2 26.1 流量網路與流量 flow network( 流量網路 ) g=(v,e)...

36
Chapter 26 Maximum Flow

Post on 21-Dec-2015

248 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

Chapter 26Maximum Flow

Page 2: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

2

26.1 流量網路與流量• Flow network( 流量網路 ) G=(V,E) 是一個有向圖,每一邊 (u,v)∈E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0 即代表 (u,v)∉E 。

s

v1 v3

v2 v4

t

c(s,t)=0 ,因 (s,t) E∉

Page 3: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

3

流量網路與流量

• 令 s 為 Source vertex , t 為 Sink vertex 。一個 Flow( 流量 ) 係一函數 f : V×VR ,對任兩點 u,v而言滿足下列性質:– Capacity constraint: f(u,v)≤c(u,v)– Skew symmetric: f(u,v)=-f(v,u)

– Flow conservation: 若 u∈V-{s,t} ,則 Σw∈Vf(u,w)=0 。

• |f|=Σv∈Vf(s,v) 稱作流量 f 的值。

Page 4: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

4

最大流量問題

• 給一流量網路 G , Source s 以及 Sink t 。求出具有最大值的流量 f 。

s

v1 v3

v2 v4

t

f(u,v)/c(u,v)

11/16

8/13

0/101/4

12/12

11/14

4/9 7/7

15/20

4/4

Page 5: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

5

Residue Network與 Augmenting Path

• 由一 Flow network G 及一 Flow f 所導出的 Residue network Gf為一個 Flow network ,其 Capacity cf(u,v)=c(u,v)-f(u,v) 。

• 一個 Flow network G 及 Flow f 所導出的 Augmenting path 即是 Residue network Gf上一個 st 的路徑p 。

Page 6: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

6

Residue Network與 Augmenting Path

• 如果一 Flow network 找的到 Augmenting path 代表可以找到一個 Flow f ,其值大於 0 。

• 如一 Flow network G 及一 Flow f 所導出的 Residue network Gf,以找不到任何 Augmenting path ,則 f是最大流量。

Page 7: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

7

s

v1 v3

v2 v4

tf(u,v)/c(u,v)

11/16

7/13

0/101/4

12/12

10/14

4/9 7/7

15/20

3/4

s

v1 v3

v2 v4

t

5

6

113

12

57

15

Flow network

Residue Network

11

7

4 5

10

4

13

Augmenting Path

Page 8: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

8

26.2 Ford-Fulkerson演算法

• 主要是利用 Residue network 的觀點來找出 Maxium flow 。

• 重複下列動作直到找不到 Augmenting path 為止。– 找出 Augmenting path p 。– 將 Flow f 沿著 p 增加 min{cf(u,v):(u,v) 在 p 上 } ,即 residue network Gf中路徑 p 上最小的 Capacity 。

Page 9: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

9

Ford-Fulkerson(G,s,t)

{ for each edge (u,v)∈E[G] do f[u,v]0

f[v,u]0

while ∃ path p from s to t on Gf

do cf(p)min{cf(u,v):(u,v) is in p}

for each (u,v) in p

do f[u,v]f[u,v]+cf(p)

f[v,u]-f[u,v]

return f

}

Page 10: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

10

s

v4v2

v3v1

t

16

13

10 4 9 7

14

4

20(a)

12

s

v4v2

v3v1

t

4/16

13

10 4 4/9 7

4/14

4/4

20

4/12

Page 11: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

11

s

v4v2

v3v1

t

11/16

13

7/10 4 4/9 7/7

11/14

4/4

7/20

4/12

(b)

s

v4v2

v3v1

t

12

13

10 4 5

8

7

4

204

10

4

4

4

Page 12: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

12

(c)

s

v4v2

v3v1

t

11/16

8/13

10 1/4 4/9 7/7

11/14

4/4

15/20

12/12

s

v4v2

v3v1

t

5

13

3 11 5

8

7

4

1311

7

3

4

4

11

Page 13: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

13

(d)

s

v4v2

v3v1

t

11/16

12/13

10 1/4 9 7/7

11/14

4/4

19/20

12/12

s

v4v2

v3v1

t

5

13

3 3 5

12

7

4

511

15

3

5

4

11

Page 14: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

14

s

v4v2

v3v1

t

5

12

11 3 9

12

7

4

1(e)

11 19

3

1

因無 Augmenting path ,故 Maximum flow 如下所示:

s

v4v2

v3v1

t

11/16

12/13

10 1/4 9 7/7

11/14

4/4

19/20

12/12

Page 15: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

15

Edmonds-Karp演算法

• 使用 Breadth-first search 來找 Augmenting path 。• 主要能夠避免下面這種情形發生:

每次找出的 Augmenting path 是 (s,b,a,t) 跟 (s,a,b,t)交錯出現,如此要執行 2M 個 Iteration 才能做完。

s

a

b

t

M M

M M

1

Page 16: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

16

s

a

b

t

M M

M M

1 s

a

b

t

M-1 M

MM-1

1 1

1

s

a

b

t

M-1 M-1

M-1 M-1

1 1

1

1

1

s

a

b

t

M M

M M

1需要 2M 次

Page 17: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

17

Maximum flow and minimum cut

• 對一個流量網路 G=(V,E) 而言,一個 Cut (S,T) 是將 點集合 V 分割為 S 跟 T=V-S 兩部份且滿足 s∈S 及 t∈T 。

• Cut (S,T) 的容量 (Capacity) , c(S,T) ,定義為:所有滿足 u∈S 及 v∈T 的邊 (u,v) 之容量和。

Page 18: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

18

Cut範例

s

v1 v3

v2 v4

t

f(u,v)/c(u,v)

11/16

8/13

0/101/4

12/12

11/14

4/9 7/7

15/20

4/4

S T

c(S,T)=c(v1,v3)+c(v2,v4)=12+14=26

Page 19: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

19

• Lemma 5 Let (S,T) be a cut of a flow network G with flow f.Then the net flow across (S,T) is f(S,T)=|f|

f(S,T)=f(S, V)-f(S,S) =f(S, V) =f(s, V)+f(S-s, V) =f(s, V) = | f |

Proof:

Page 20: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

20

• Cor6

The value of any flow f in a flow network G isbounded from above by the capacity of any cutof G

u S v T u S v T

Let (S,T) be any cut of G and f be any flow.By the above lemma and capacity constraints |f| = f(S,T) = f(u,v) c(u,v) c(S,T)

Proof:

Page 21: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

21

Maximum flow=minimum cut

• 最大流量跟容量最小的 Cut 是相等的。

• Thm26.7 以下三敘述等價– (1) f 是流量網路 G=(V,E) 的最大流量– (2) Residue network Gf找不到 Augmenting path

– (3) 存在一個 Cut (S,T) , |f|=c(S,T) 。

Page 22: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

22

f

p

(1) (2) By contradiction, suppose f is a maximum flow in G but that G has an augment path p By cor4, the flow sum f+f is a flow in G with value strictly greater than | f |.

},

f f

f

(2) (3) Suppose G has no augmenting path, that is, that G has no path from s to t Define S={v V: a path from s to v in G and T=V-S The partition (S,T) is a cut: we have s S trivi

.

f

f

ally and t S there is no path from to in G For each pair of vertices u S and v T, we have f(u,v)=c(u,v) otherwise (u, v) E and v is in set S. By lemma5, | f | = f(S,T)=c(

s

)

t

S,T

Page 23: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

23

(3) (1) By cor6, | f | c(S,T), for all cuts(S,T). The condition | f |=c(S,T) thus implies that f is a maximum flow

Page 24: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

24

Minimum cut的應用

• 可用於決定經營投資策略。如開發產品 A1需要先購入工具 T1,T2,而產品 A2 需要先購入工具 T2T3,則同時開發僅需要負擔 T1,T2,T3的成本。

• 可以將此問題一般化,假定產品 Ai需要先購入 k個工具 Ti

1Ti2…Ti

k。而產品 Ai開發完成可獲利 Pi,購入工具 Tj需要 Qj的金錢,則該選擇哪些產品開發?

Page 25: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

25

利用Minimum cut

s

T1

T2

Tm-1

Tm

……

……

.

A1

A2

An-1

An

……

……

.t

Q1

Q2

Qm-1

Qm

P1

P2

Pn-1

Pn

如 Ai 需要 Tj ,則自 T1 拉一條容量無限大的邊到 Ai 。

Page 26: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

26

流量網路的建構方式

• 將圖如上頁一般的建構出來,有 source s, sink t ,以及每一個產品與工具。

• 對每個工具 Tj自 s 拉一條容量為 Qj的邊。

• 自每一個產品 Ai拉一條容量為 Pi的邊到 t 。

• 如 Ai 需要 Tj ,則自 T1 拉一條容量無限大的邊到Ai 。

Page 27: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

27

與最大獲利的對應

• 所有產品的利潤總和扣掉該圖的 minimum cut 即是最大獲利。

• 觀察:能夠獲利的產品,獲利必然比投入的工具成本高,故將此類的產品與工具劃入 T ,其他的劃入 S 。

• 理想的狀態是所有的產品利潤全得,沒有投入的產品部份係扣除產品接到 sink 的容量,而有投入的產品需扣除投入的工具成本,故扣除 source 接到工具的容量。所扣除部分即為 cut 的容量。

Page 28: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

28

s

T1

T2

Tm-1

Tm

……

……

.

A1

A2

An-1

An

……

……

.t

Q1

Q2

Qm-1

Qm

P1

P2

Pn-1

Pn

T

S

需投入成本

得不到獲利

Page 29: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

29

26.3 Maximum Bipartite Matching

• 一個 Bipartite Graph G=(V=L∪R,E) ,具有下列性質:– V 可以分割成 L 及 R=V-L 兩個集合。– 所有的邊 (u,v) 的兩個端點 u 及 v 不會同在 L 或同在 R 之中。

Page 30: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

30

Bipartite Graph範例

L R

Page 31: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

31

Matching

• 對一個圖 G=(V,E) 所謂的配對 (Matching) 是一個不共用點的邊子集合。即:– 對任意兩邊 (u1,v1) , (u2,v2) 而言, u1,v1,u2,v2四點均相異。

• 最大配對 (Maximum matching) 是指具有最多邊的配對。

Page 32: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

32

Matching範例

L R

紅色邊所成的即為一個配對 (Matching)

Page 33: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

33

Maximum Matching範例

L R

紅色邊所成的即為一個最大配對(Maximum matching)

Page 34: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

34

利用最大流量求最大配對

• 令 G’=(V {s,t},E {(s,u):u∪ ∪ ∈L} {(v,t):v∪ ∈R}) 。即新增 source s 及 sink t 進入圖 G ,並且在 s 與 L的所有點之間拉一條邊,而在 R 跟 t 之間拉一條邊。

• 如果所有邊的容量均設定為 1 ,則最大流量等於最大配對。

Page 35: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

35

流量網路圖

L R

s t

Page 36: Chapter 26 Maximum Flow. 2 26.1 流量網路與流量 Flow network( 流量網路 ) G=(V,E) 是一個有向圖, 每一邊 (u,v) ∈ E 均有 Capacity( 容量 ) c(u,v)>0 。如 c(u,v)=0

36

最大流量與最大配對

L R

s t