งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

สมชาย ประสิทธิ์จูตระกูล

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "สมชาย ประสิทธิ์จูตระกูล"— ใบสำเนางานนำเสนอ:

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 iV 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 การหาจำนวนวิถีในกราฟที่ไม่มีเส้นร่วมกัน


ดาวน์โหลด ppt สมชาย ประสิทธิ์จูตระกูล

งานนำเสนอที่คล้ายกัน


Ads by Google