ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
สมชาย ประสิทธิ์จูตระกูล
Max Flows สมชาย ประสิทธิ์จูตระกูล
2
การไหล (flow) เส้นเชื่อมแต่ละเส้นมีความจุเป็นจำนวนไม่ติดลบ
ปมพิเศษ : source s และ sink t กำหนดให้ปมทุกปมอยู่บนวิถีใดวิถีหนึ่งจาก s ถึง t s v1 v3 v2 v4 t 16 13 10 4 9 12 20 14 7 capacity source sink หาปริมาณการไหลจาก s ถึง t ที่มากสุดในข่ายงาน
3
การไหล (flow) ให้ f(u,v) คือปริมาณการไหลในเส้นเชื่อม (u,v)
ปริมาณการไหลในเส้นเชื่อมต้องไม่เกินความจุ ปริมาณการไหลเข้าปมหนึ่ง ต้องเท่ากับปริมาณการไหลออกจากปมนั้น (ยกเว้นปม s กับ t) flow / capacity s v1 v3 v2 v4 t 11/16 12/13 10 1/4 9 12/12 19/20 4/4 11/14 7/7
4
ส่วนตัด (cut) f(S,T) c(S,T) s t s v1 v3 v2 v4 t S T
... ... s ... t ... ความจุของส่วนตัด (S,T) = ผลรวมความจุเส้นเชื่อมจาก S ไป T f(S,T) c(S,T) s v1 v3 v2 v4 t 11/16 8/13 10 1/4 4/9 12/12 15/20 4/4 11/14 7/7 12 –
5
Max-Flow Min-Cut Theorem
S T ... ... s ... t ... S c(S,T) { s } 6 { s, b } 13 { s, c } 5 { s, d } 8 {s, b, c } 12 { s, b, d } 11 { s, c, d } 4 { s, b, c, d } 7 fmax(S,T) = cmin(S,T)
6
วิธีหา max-flow Augmenting-path method Preflow-push method
7
หาวิถีเพื่อเพิ่มการไหล
8
วิถีการไหลแบบสวนทิศได้
9
Residual Network ให้ความจุคงเหลือ (residual capacity) ของเส้นเชื่อม (u,v) ในข่ายงาน G ที่มีการไหล f คือ cf(u,v) = c(u,v) – f(u,v) ให้ข่ายงานคงเหลือ (residual network) ของ G ที่มีการไหล f คือ ข่ายงานที่มีปมเหมือน G มีเส้นเชื่อม (u,v) ที่มีความจุ cf(u,v) ถ้า cf(u,v) > 0 มีเส้นเชื่อม (v,u) ที่มีความจุ f(u,v) ถ้า f(u,v) > 0
10
Augmenting Path Method
12/12 s v1 v3 v2 v4 t 11/16 8/13 10 1/4 4/9 15/20 4/4 11/14 7/7 s v1 v3 v2 v4 t 5 11 3 4 7 8 12 15
11
Ford & Fulkerson, 1962
12
ตัวอย่าง augmenting path Original Network Resulting Flow = 4
13
ตัวอย่าง (ต่อ) Resulting Flow = 4 augmenting path Residual Network
14
ตัวอย่าง (ต่อ) Residual Network Resulting Flow = 11
15
ตัวอย่าง (ต่อ) Resulting Flow = 11 augmenting path Residual Network
16
ตัวอย่าง (ต่อ) Residual Network Resulting Flow = 19
17
ตัวอย่าง (ต่อ) Resulting Flow = 19 augmenting path Residual Network
18
ตัวอย่าง (ต่อ) Residual Network Resulting Flow = 23
19
ตัวอย่าง (ต่อ) Resulting Flow = 23 No augmenting path: Maxflow=23
Residual Network
20
วิเคราะห์ ถ้าความจุทุกเส้นเป็นจำนวนเต็ม วิถีแต่งเติมหนึ่งวิถี เพิ่มการไหลได้อย่างน้อยหนึ่งหน่วย ถ้า max flow คือ f*, ใช้เวลารวม O(E f*) O(E) O(E)
21
กรณีแย่ ๆ v1 v1 s t s t v2 v2 v1 v1 s t s t v2 v2 v1 v1 s t s t v2 v2
100 v2 1 s v1 t 100 v2 99 1 s v1 t 99 v2 1 s v1 t 99 v2 98 1 2 s v1 t 98 v2 1 2 s v1 t 98 v2 97 1 3 2
22
Augmenting Path : ปรับปรุง
Capacity scaling O(E2 log U) -residual network คือ residual network ที่เส้นเชื่อมมีความจุไม่น้อยกว่า เริ่ม = 2lg U แล้วค่อย ๆ ลดลงทีละครึ่งจนเป็น 1 Edmonds และ Karp เสนอ เลือกวิถีสั้นสุด (จำนวนเส้นน้อยสุด) O(VE2) เลือกเส้นที่มีความจุมากสุด O(V2 lg U lg V) s v1 t 100 v2 1 (U คือความจุมากสุดของเส้นเชื่อม)
23
วิธีหา max-flow Augmenting-path method Preflow-push method
24
Preflow-Push Method augmenting path method หาวิถีเพื่อเพิ่มการไหลให้มากขึ้น ๆ โดยรักษากฏการไหลเข้าเท่าไหลออกตามปมต่าง ๆ ไว้ตลอดเวลา (maintain feasibility, aim for optimality) preflow push method เพิ่มการไหลให้มากสุด ๆ ไปทาง sink แล้วค่อย ๆ ผลักให้ไหลกลับมาทาง source เพื่อทำให้ถูกกฎการไหลเข้าเท่าไหลออก (start with super optimality, aim for feasibility)
25
Original Network 6 5 4 3 2 14 1 s x y z t 12 5 8 10 7 16
26
Residual network : step 1 - initialize
6 s 5 -26 4 3 14 12 2 1 x y z t 5 8 10 12 14 7 16
27
Residual network : step 2 - relabel
6 s 5 -26 4 3 14 12 2 x 1 12 y z t 5 8 10 14 7 16
28
Residual network : step 3 - push
6 s 5 -26 4 3 14 12 2 x 1 7 y z t 5 8 10 19 7 16
29
Residual network : step 4 - push
6 s 5 -26 4 3 14 12 2 x 1 y z t 5 8 10 19 7 7 7 9
30
Residual network : step 5 - relabel
6 s 5 -26 4 3 14 12 2 x y 1 19 5 z t 8 10 7 7 7 9
31
Residual network : step 6 - push
5 -26 4 3 14 12 2 x y 1 11 5 z t 8 10 8 7 7 7 9
32
Residual network : step 7 - relabel
6 s 5 -26 4 3 14 12 2 x y z 1 11 8 5 8 10 t 7 7 7 9
33
Residual network : step 8 - push
6 s 5 -26 4 3 14 12 2 x y z 1 11 8 5 8 t 2 15 7 7 9
34
Residual network : step 9 - relabel
6 s 5 -26 4 14 3 y 12 2 11 x z 5 8 1 8 t 2 15 7 7 9
35
Residual network : step 10 - push
6 s 5 -26 4 14 3 y 12 2 6 x z 5 8 1 5 8 t 2 15 7 7 9
36
Residual network : step 11 - push
6 s 5 -26 4 14 3 y 12 2 6 x z 5 8 1 8 t 2 20 7 12 4
37
Residual network : step 12 - relabel
y 6 6 s 14 5 -26 4 5 8 3 12 2 x z 1 8 t 2 20 7 12 4
38
Residual network : step 13 - push
y 6 6 s 8 5 -20 4 5 8 3 12 2 x z 1 8 t 2 20 7 12 4
39
แนวคิด e(u) คือ excess ของปม u ปริมาณการไหลเข้า u ลบด้วยปริมาณการไหลออก active node คือปมที่มี e(u) > 0 (ไม่สนใจ s กับ t, e(s) 0, e(t) 0 แน่ๆ) แต่ละปมมีความสูงกำกับ ให้ flow ไหลจากที่สูงลงสู่ที่ต่ำ (sink อยู่ต่ำสุด) มีเส้น (u,v), d(u) d(v) + 1 เลือก active node u แล้ว push การไหล e(u) ออกไปให้ปม "เพื่อน" v โดยที่ d(u) = d(v) + 1 (ปมใกล้สุดที่เข้าหา sink)
40
Preflow-Push Method Initialization: Algorithm: initialization
while there exists an active node select an active node i Push-Relabel(i) Initialization: Set f = 0 Compute distance label d(i) for all iV f(s,j) = c(s,j) for all (s,j) E d(s) = n, where n=|V| Push-Relabel(i): if there is an admissible edge (i,j) push min(e(i), cf(i,j)) units of flow on (i,j) else d(i) = 1 + min{ d(j) | cf(i,j)>0 } (i,j)Ef
41
ให้ distance label อย่างไร
ทำ reverse breadth-first search จาก t ให้ d(t) = 0 และให้ d(i) = k โดยที่ k คือหมายเลขระดับของ i ใน breadth-first tree d
42
จะเลือก active nodes อย่างไร
FIFO preflow-push algorithm O(V3) Highest label preflow-push algorithm O(V2E1/2) Excess scaling algorithm O(VE + V2logU)
43
FIFO Preflow-Push ใช้ queue เก็บรายการของ active nodes ที่จะถูกนำออกมา push flow ปมที่ถูก relabel จะถูกไปต่อท้าย queue ถ้า u ถูกเลือกมา push, แล้วยังเป็น active node อยู่ ก็จะ push ต่อไปจนกว่า e(u) = 0 หรือจนกว่า relabel
44
FIFO : ตัวอย่าง Pic 1 Pic 2 Pic 3 Pic 4
45
ตัวอย่าง (ต่อ) Pic 5 Pic 6 Pic 7 Pic 8
46
ตัวอย่าง (ต่อ) Pic 9 Pic 10 Pic 11 Pic 12
47
ตัวอย่าง (ต่อ) Pic 13 Pic 14 Pic 15 Pic 16
48
ตัวอย่าง (ต่อ) Pic 17 Pic 18
49
Highest-Label Preflow-Push
เลือก active node ที่อยู่สูงสุดมา push
50
การจับคู่
51
การจับคู่
52
ข่ายงานที่มีหลาย sources และ sinks
53
ข่ายงานที่ปมมีความจุจำกัด
54
การหาจำนวนวิถีในกราฟที่ไม่มีเส้นร่วมกัน
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.