fbpx
วิกิพีเดีย

ขั้นตอนวิธีของเอ็ดมอนด์-คาป

ในด้านวิทยาศาสตร์คอมพิวเตอร์ และ ทฤษฎีกราฟ ขั้นตอนวิธีของเอ็ดมอนด์-คาป (อังกฤษ: Edmonds-Karp algorithm) เป็นขั้นตอนวิธีการแก้ปัญหาการไหลมากสุด (อังกฤษ: Maximum flow) ใน ระบบเครือข่ายการไหล (อังกฤษ: Flow network) โดยการนำเอาวิธีการของฟอร์ด-ฟูเกอร์สัน (อังกฤษ: Ford-Fulkerson method) มาใช้ โดยทำงานได้ในระยะเวลา หากเปรียบเทียบกันในเชิงเส้นแล้วจะช้ากว่า (อังกฤษ: Relabel-to-front algorithm) ซึ่งทำงานในเวลา แต่ในความเป็นจริงจะพบว่า ขั้นตอนวิธีของเอ็ดมอนด์-คาป จะทำงานได้ดีกว่าหากเป็น กราฟไม่หนาแน่น (อังกฤษ: sparse graphs) ขั้นตอนวิธีแก้ปัญหานี้ถูกเปิดเผยครั้งแรกในปี ค.ศ. 1970 โดยนายดีนิทซ์ (Yefim Dinitz) นักวิทยาศาสตร์ชาวยิว (อดีตเป็นชาวรัสเซีย) โดยมีชื่อว่าขั้นตอนวิธีของดีนิซ (อังกฤษ: Dinic's algorithm) ซึ่งทำงานได้ในเวลา 2 ปีต่อมา คือปี ค.ศ. 1972 แจ๊ค เอ็ดมอนด์ (Jack Edmonds) กับริชาร์ด คาป (Richard Karp) ได้เสนอวิธีแก้ปัญหานี้ในรูปแบบที่แตกต่างกันออกไปซึ่งถูกเรียกว่า ขั้นตอนวิธีของเอ็ดมอนด์-คาป

ขั้นตอนวิธี

ขั้นตอนวิธีนี้เหมือนขั้นตอนวิธีของฟอร์ด-ฟูเกอร์สัน ยกเว้นในส่วนของการค้นหาวิถีเพิ่มพูน (อังกฤษ: Augmenting path) การค้นหาวิถีเพิ่มพูนในขั้นตอนวิธีนี้นั้น เราจะหาจากวิถีสั่นสุดที่ยังเหลือที่ว่างให้ไหลไปได้ด้วยการค้นทางกว้าง โดยให้แต่ละวิถีมีน้ำหนักของมันเอง โดยจะใช้เวลาทั้งหมดประมาณ   ซึ่งคำนวณจากการที่สามารถหาวิถีเพิ่มพูนในแต่ละครั้งได้ในเวลา   ซึ่งในการทำงานแต่ละรอบนั้นจะต้องมีวิถีที่อิ่มตัว (Saturated edge) เกิดขึ้นอีกอย่างน้อย 1 วิถี จากขั้นตอนวิธีดังกล่าวจะส่งผลให้ระยะทางจากต้นกำเนิดถึงวิถีอิ่มตัวล่าสุดจะต้องมากกว่าเดิมเสมอ จากขั้นตอนวิธีดังกล่าวเราพบว่าระยะทางของวิถีเพิ่มพูนสั้นสุดนั้นเติบโตขึ้นเป็นลำดับทางเดียว โดยอ้างอิงจากบทพิสูจน์ดังนี้

รหัสเทียม

สามารถดูรายละเอียดเชิงลึกได้ที่ขั้นตอนวิธีของฟอร์ด-ฟูเกอร์สัน

algorithm EdmondsKarp

 ข้อมูลนำเข้า: C[1..n, 1..n]  (เมตริกความจุ)  E[1..n, 1..?]  (รายการผมเพื่อนบ้าน)  s   (ก๊อก)  t   (อ่าง)  ข้อมูลนำออก: f   (ค่าอัตราการไหลสูงสุด)  F   (เมตริกซึ่งแสดงค่าอัตราการไหลสูงสุดในแต่ละวิถึ)  f := 0  (กำหนดค่าเริ่มต้นให้อัตราการไหล)  F := array (1..n, 1..n)  (ค่าความจุที่เหลือ จาก u ไป v หรือ C[u,v] - F[u,v])  forever m, P := BreadthFirstSearch (C, E, s, t) if m = 0  break f := f + m  (การค้นแบบBacktrack และ สร้างวิถีการไหล)  v := t while v ≠ s  u := P[v]  F[u,v] := F[u,v] + m  F[v,u] := F[v,u] - m  v := u return (f, F) 
ขั้นตอนวิธี ค้นทางกว้าง (BreadthFirstSearch) ข้อมูลนำเข้า: C, E, s, t 'ข้อมูลนำออก: M[t]  (ความจุของวิถีที่พบ)  P   (ตารางบรรพบุรุษ)  P := array (1..n) for u in 1..n P[u] := -1 P[s] := -2  (ตรวจสอบว่าก๊อกนี้ไม่ถูกค้นพบซ้ำ)  M := array (1..n)  (ค่าความจุระหว่างวิถีที่ถูกค้นพบกับปม)  M[s] := ∞ Q := queue () Q.push (s) while Q.size () > 0 u := Q.pop () for v in E[u]   (ถ้ายังมีความจุให้ไหลได้ และ v ยังไม่เคยถูกค้นพบมาก่อน)   if C[u,v] - F[u,v] > 0 and P[v] = -1  P[v] := u  M[v] := min (M[u], C[u,v] - F[u,v])  if v ≠ t  Q.push (v)  else  return M[t], P return 0, P 

ตัวอย่าง

กำหนดให้เครือข่ายมี 7 ปม โดยมีจุดเริ่มต้นก๊อก A และ จบที่อ่าง G และ ความจุ ดังแสดงตามภาพด้านล่าง

 

ในทุกคู่   ที่ถูกเขียนบนวิถี   และ   คือ อัตราการไหลในปัจจุบัน และ ความจุของวิถีนั้น ตามลำดับ ค่าความจุที่เหลืออยู่จาก   ไป   คือ   ส่วนต่างของค่าความจุของวิถีนั้นและอัตราการไหลที่ไหลผ่านวิถีดังกล่าว

ความจุ วิถี
ผลลัพธ์ในระบบ
 

 
 

 
 
 

 
 

 
 
 

 
 

 
 
 

 
 

 
 

อ้างอิง

  1. E. A. Dinic (1970). "Algorithm for solution of a problem of maximum flow in a network with power estimation". Soviet Math. Doklady (Doklady) 11: 1277–1280.
  2. Jack Edmonds and Richard M. Karp (1972). "Theoretical improvements in algorithmic efficiency for network flow problems". Journal of the ACM 19 (2) : 248–264. doi:10.1145/321694.321699.
  3. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein (2001). "26.2". Introduction to Algorithms (second ed.). MIT Press and McGraw–Hill. pp. 660–663. ISBN 0-262-53196-8.
  4. Algorithms and Complexity (see pages 63-69). http://www.cis.upenn.edu/~wilf/AlgComp3.html

นตอนว, ของเอ, ดมอนด, คาป, ในด, านว, ทยาศาสตร, คอมพ, วเตอร, และ, ทฤษฎ, กราฟ, งกฤษ, edmonds, karp, algorithm, เป, นข, นตอนว, การแก, ญหาการไหลมากส, งกฤษ, maximum, flow, ใน, ระบบเคร, อข, ายการไหล, งกฤษ, flow, network, โดยการนำเอาว, การของฟอร, เกอร, งกฤษ, ford, ful. indanwithyasastrkhxmphiwetxr aela thvsdikraf khntxnwithikhxngexdmxnd khap xngkvs Edmonds Karp algorithm epnkhntxnwithikaraekpyhakarihlmaksud xngkvs Maximum flow in rabbekhruxkhaykarihl xngkvs Flow network odykarnaexawithikarkhxngfxrd fuekxrsn xngkvs Ford Fulkerson method maich odythanganidinrayaewla O V E 2 displaystyle O VE 2 hakepriybethiybkninechingesnaelwcachakwa xngkvs Relabel to front algorithm sungthanganinewla O V 3 displaystyle O V 3 aetinkhwamepncringcaphbwa khntxnwithikhxngexdmxnd khap cathanganiddikwahakepn krafimhnaaenn xngkvs sparse graphs khntxnwithiaekpyhanithukepidephykhrngaerkinpi kh s 1970 odynaydiniths Yefim Dinitz nkwithyasastrchawyiw xditepnchawrsesiy odymichuxwakhntxnwithikhxngdinis xngkvs Dinic s algorithm sungthanganidinewla O V 2 E displaystyle O V 2 E 2 pitxma khuxpi kh s 1972 aeckh exdmxnd Jack Edmonds kbrichard khap Richard Karp idesnxwithiaekpyhaniinrupaebbthiaetktangknxxkipsungthukeriykwa khntxnwithikhxngexdmxnd khap enuxha 1 khntxnwithi 2 rhsethiym 3 twxyang 4 xangxingkhntxnwithi aekikhkhntxnwithiniehmuxnkhntxnwithikhxngfxrd fuekxrsn ykewninswnkhxngkarkhnhawithiephimphun xngkvs Augmenting path karkhnhawithiephimphuninkhntxnwithininn eracahacakwithisnsudthiyngehluxthiwangihihlipiddwykarkhnthangkwang odyihaetlawithiminahnkkhxngmnexng odycaichewlathnghmdpraman O V E 2 displaystyle O VE 2 sungkhanwncakkarthisamarthhawithiephimphuninaetlakhrngidinewla O E displaystyle O E sunginkarthanganaetlarxbnncatxngmiwithithiximtw Saturated edge ekidkhunxikxyangnxy 1 withi cakkhntxnwithidngklawcasngphlihrayathangcaktnkaenidthungwithiximtwlasudcatxngmakkwaedimesmx cakkhntxnwithidngklaweraphbwarayathangkhxngwithiephimphunsnsudnnetibotkhunepnladbthangediyw odyxangxingcakbthphisucndngnirhsethiym aekikhsamarthduraylaexiydechinglukidthikhntxnwithikhxngfxrd fuekxrsnalgorithm EdmondsKarp khxmulnaekha C 1 n 1 n emtrikkhwamcu E 1 n 1 raykarphmephuxnban s kxk t xang khxmulnaxxk f khaxtrakarihlsungsud F emtriksungaesdngkhaxtrakarihlsungsudinaetlawithu f 0 kahndkhaerimtnihxtrakarihl F array 1 n 1 n khakhwamcuthiehlux cak u ip v hrux C u v F u v forever m P BreadthFirstSearch C E s t if m 0 break f f m karkhnaebbBacktrack aela srangwithikarihl v t while v s u P v F u v F u v m F v u F v u m v u return f F khntxnwithi khnthangkwang BreadthFirstSearch khxmulnaekha C E s t khxmulnaxxk M t khwamcukhxngwithithiphb P tarangbrrphburus P array 1 n for u in 1 n P u 1 P s 2 trwcsxbwakxkniimthukkhnphbsa M array 1 n khakhwamcurahwangwithithithukkhnphbkbpm M s Q queue Q push s while Q size gt 0 u Q pop for v in E u thayngmikhwamcuihihlid aela v yngimekhythukkhnphbmakxn if C u v F u v gt 0 and P v 1 P v u M v min M u C u v F u v if v t Q push v else return M t P return 0 Ptwxyang aekikhkahndihekhruxkhaymi 7 pm odymicuderimtnkxk A aela cbthixang G aela khwamcu dngaesdngtamphaphdanlang inthukkhu f c displaystyle f c thithukekhiynbnwithi f displaystyle f aela c displaystyle c khux xtrakarihlinpccubn aela khwamcukhxngwithinn tamladb khakhwamcuthiehluxxyucak u displaystyle u ip v displaystyle v khux c f u v c u v f u v displaystyle c f u v c u v f u v swntangkhxngkhakhwamcukhxngwithinnaelaxtrakarihlthiihlphanwithidngklaw khwamcu withiphllphthinrabbmin c f A D c f D E c f E G displaystyle min c f A D c f D E c f E G min 3 0 2 0 1 0 displaystyle min 3 0 2 0 1 0 min 3 2 1 1 displaystyle min 3 2 1 1 A D E G displaystyle A D E G min c f A D c f D F c f F G displaystyle min c f A D c f D F c f F G min 3 1 6 0 9 0 displaystyle min 3 1 6 0 9 0 min 2 6 9 2 displaystyle min 2 6 9 2 A D F G displaystyle A D F G min c f A B c f B C c f C D c f D F c f F G displaystyle min c f A B c f B C c f C D c f D F c f F G min 3 0 4 0 1 0 6 2 9 2 displaystyle min 3 0 4 0 1 0 6 2 9 2 min 3 4 1 4 7 1 displaystyle min 3 4 1 4 7 1 A B C D F G displaystyle A B C D F G min c f A B c f B C c f C E c f E D c f D F c f F G displaystyle min c f A B c f B C c f C E c f E D c f D F c f F G min 3 1 4 1 2 0 0 1 6 3 9 3 displaystyle min 3 1 4 1 2 0 0 1 6 3 9 3 min 2 3 2 1 3 6 1 displaystyle min 2 3 2 1 3 6 1 A B C E D F G displaystyle A B C E D F G xangxing aekikhE A Dinic 1970 Algorithm for solution of a problem of maximum flow in a network with power estimation Soviet Math Doklady Doklady 11 1277 1280 Jack Edmonds and Richard M Karp 1972 Theoretical improvements in algorithmic efficiency for network flow problems Journal of the ACM 19 2 248 264 doi 10 1145 321694 321699 Thomas H Cormen Charles E Leiserson Ronald L Rivest and Clifford Stein 2001 26 2 Introduction to Algorithms second ed MIT Press and McGraw Hill pp 660 663 ISBN 0 262 53196 8 Algorithms and Complexity see pages 63 69 http www cis upenn edu wilf AlgComp3 html ekhathungcak https th wikipedia org w index php title khntxnwithikhxngexdmxnd khap amp oldid 4703434, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม