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

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

Max Flows สมชาย ประสิทธิ์จูตระกูล. การไหล (flow) เส้นเชื่อมแต่ละเส้นมีความจุเป็นจำนวนไม่ติดลบ ปมพิเศษ : source s และ sink t กำหนดให้ปมทุกปมอยู่บนวิถีใดวิถีหนึ่งจาก.

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


งานนำเสนอเรื่อง: "Max Flows สมชาย ประสิทธิ์จูตระกูล. การไหล (flow) เส้นเชื่อมแต่ละเส้นมีความจุเป็นจำนวนไม่ติดลบ ปมพิเศษ : source s และ sink t กำหนดให้ปมทุกปมอยู่บนวิถีใดวิถีหนึ่งจาก."— ใบสำเนางานนำเสนอ:

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

2 การไหล (flow) เส้นเชื่อมแต่ละเส้นมีความจุเป็นจำนวนไม่ติดลบ ปมพิเศษ : source s และ sink t กำหนดให้ปมทุกปมอยู่บนวิถีใดวิถีหนึ่งจาก s ถึง t sourcesink capacity หาปริมาณการไหลจาก s ถึง t ที่มากสุดในข่ายงาน s v1v1 v3v3 v2v2 v4v4 t

3 การไหล (flow) ให้ f(u,v) คือปริมาณการไหลในเส้นเชื่อม (u,v) –ปริมาณการไหลในเส้นเชื่อมต้องไม่เกินความจุ –ปริมาณการไหลเข้าปมหนึ่ง ต้องเท่ากับปริมาณการ ไหลออกจากปมนั้น (ยกเว้นปม s กับ t ) flow / capacity s v1v1 v3v3 v2v2 v4v4 t 11/16 12/ /4 9 12/12 19/20 4/4 11/14 7/7

4 ส่วนตัด (cut) s t... S T ความจุของส่วนตัด (S,T) = ผลรวมความจุเส้นเชื่อมจาก S ไป T f(S,T)  c(S,T) s v1v1 v3v3 v2v2 v4v4 t 11/16 8/ /4 4/9 12/12 15/20 4/4 11/14 7/7 12 – 

5 Max-Flow Min-Cut Theorem s t... f max (S,T) = c min (S,T) Sc(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 S T

6 วิธีหา max-flow Augmenting-path method Preflow-push method

7 หาวิถีเพื่อเพิ่มการไหล

8 วิถีการไหลแบบสวนทิศได้

9 Residual Network ให้ความจุคงเหลือ (residual capacity) ของเส้นเชื่อม (u,v) ในข่ายงาน G ที่มีการไหล f คือ c f (u,v) = c(u,v) – f(u,v) ให้ข่ายงานคงเหลือ (residual network) ของ G ที่มี การไหล f คือ –ข่ายงานที่มีปมเหมือน G –มีเส้นเชื่อม (u,v) ที่มีความจุ c f (u,v) ถ้า c f (u,v) > 0 –มีเส้นเชื่อม (v,u) ที่มีความจุ f(u,v) ถ้า f(u,v) > 0

10 Augmenting Path Method หาวิถีแต่งเติม (augmenting path) ในข่ายงาน คงเหลือ เพื่อเพิ่มการไหลในข่ายงาน s v1v1 v3v3 v2v2 v4v4 t 11/16 8/ /4 4/9 15/20 4/4 11/14 7/7 12/12 s v1v1 v3v3 v2v2 v4v4 t

11 Ford & Fulkerson, 1962

12 ตัวอย่าง Resulting Flow = Original Network augmenting path 4

13 ตัวอย่าง (ต่อ) Resulting Flow = 4 Residual Network augmenting path

14 ตัวอย่าง (ต่อ) Residual Network Resulting Flow = 11

15 ตัวอย่าง (ต่อ) Resulting Flow = 11 Residual Network augmenting path

16 ตัวอย่าง (ต่อ) Residual Network Resulting Flow = 19

17 ตัวอย่าง (ต่อ) Resulting Flow = 19 Residual Network augmenting path

18 ตัวอย่าง (ต่อ) Residual Network Resulting Flow = 23

19 Residual Network ตัวอย่าง (ต่อ) Resulting Flow = 23 No augmenting path: Maxflow=23

20 วิเคราะห์ ถ้าความจุทุกเส้นเป็นจำนวนเต็ม วิถีแต่งเติมหนึ่ง วิถี เพิ่มการไหลได้อย่างน้อยหนึ่งหน่วย ถ้า max flow คือ f*, ใช้เวลารวม O(E f*) O(E)

21 กรณีแย่ ๆ s v1v1 t 100 v2v2 1 s v1v1 t v2v s v1v1 t 99 v2v s v1v1 t v2v s v1v1 t 98 v2v s v1v1 t v2v

22 Augmenting Path : ปรับปรุง Capacity scaling O(E 2 log U) –  -residual network คือ residual network ที่เส้น เชื่อมมีความจุไม่น้อยกว่า  –เริ่ม  = 2 lg U แล้วค่อย ๆ ลดลงทีละครึ่งจนเป็น 1 Edmonds และ Karp เสนอ –เลือกวิถีสั้นสุด (จำนวนเส้นน้อยสุด) O(VE 2 ) –เลือกเส้นที่มีความจุมากสุด O(V 2 lg U lg V) s v1v1 t 100 v2v2 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 s xy zt Original Network

26 s -26 xy zt Residual network : step 1 - initialize

27 s -26 x y zt Residual network : step 2 - relabel

28 s -26 x y zt Residual network : step 3 - push

29 s -26 x y zt Residual network : step 4 - push 7

30 s -26 xy zt Residual network : step 5 - relabel 7

31 s -26 xy zt Residual network : step 6 - push 7

32 s -26 xy z t Residual network : step 7 - relabel 7

33 s -26 xy z t Residual network : step 8 - push

34 s -26 x y z t Residual network : step 9 - relabel

35 s -26 x y z t Residual network : step 10 - push

36 s -26 x y z t Residual network : step 11 - push

37 s -26 x y z t Residual network : step 12 - relabel

38 s -20 x y z t Residual network : step 13 - push

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 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), c f(i,j) ) units of flow on (i,j) else d(i) = 1 + min{ d(j) | c f (i,j)>0 } (i,j)  E f

41 ให้ distance label อย่างไร ให้ d(i) = 0 หมด ทำ 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(V 3 ) Highest label preflow-push algorithm O(V 2 E 1/2 ) Excess scaling algorithm O(VE + V 2 logU)

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 4Pic 3 Pic 2

45 ตัวอย่าง (ต่อ) Pic 8Pic 7 Pic 6Pic 5

46 ตัวอย่าง (ต่อ) Pic 9Pic 10 Pic 11 Pic 12

47 ตัวอย่าง (ต่อ) Pic 13Pic 14 Pic 15Pic 16

48 ตัวอย่าง (ต่อ) Pic 17 Pic 18

49 Highest-Label Preflow-Push เลือก active node ที่อยู่สูงสุดมา push

50 การจับคู่

51

52 ข่ายงานที่มีหลาย sources และ sinks

53 ข่ายงานที่ปมมีความจุจำกัด

54 การหาจำนวนวิถีในกราฟที่ไม่มีเส้นร่วมกัน


ดาวน์โหลด ppt Max Flows สมชาย ประสิทธิ์จูตระกูล. การไหล (flow) เส้นเชื่อมแต่ละเส้นมีความจุเป็นจำนวนไม่ติดลบ ปมพิเศษ : source s และ sink t กำหนดให้ปมทุกปมอยู่บนวิถีใดวิถีหนึ่งจาก.

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


Ads by Google