ขั้นตอนวิธีของดีนิซ

ขั้นตอนวิธีของดีนิซ (อังกฤษ: Dinic's algorithm) เป็นขั้นตอนวิธีสำหรับการแก้ปัญหาการไหลมากสุด (อังกฤษ: Maximum flow) ในระบบเครือข่ายการไหล (อังกฤษ: Flow network) ถูกคิดขึ้นโดยเยฟิม ดีนิทซ์ (ฮีบรู: יפים (חיים) א 'דיניץ; อังกฤษ: Yefim (Chaim) A. Dinitz)[1] นักวิทยาศาสตร์คอมพิวเตอร์ชาวยิว (อดีตเป็นชาวรัสเซีย) ในปี ค.ศ. 1970 ขั้นตอนวิธีนี้จะใกล้เคียงกับขั้นตอนวิธีของเอ็ดมอนด์-คาป (อังกฤษ: Edmonds-Karp algorithm) ซึ่งใช้หลักการหาวิถีสั้นสุดและมีอัตราการเติบโตเป็นของเวลาทำงาน แต่ขั้นตอนวิธีของดีนิซจะมีอัตราการเติบโตที่น้อยกว่าคือ ซึ่งเป็นผลมาจากการนำแนวคิดเรื่อง กราฟระดับ และ กระแสที่จำกัดการไหล มาใช้

ประวัติ แก้

เยฟิม ดีนิทซ์ คิดค้นขั้นตอนวิธีนี้เพื่อตอบโจทย์แบบฝึกหัดก่อนชั้นเรียนในการเรียนขั้นตอนวิธีของอเดลสัน-เวลสกี ในขณะนั้นเขาไม่รู้ข้อเท็จจริงพื้นฐานเกี่ยวกับขั้นตอนวิธีของฟอร์ด-เฟิลเกอร์สัน[2]

ดีนิทซ์กล่าวว่าการประดิษฐ์ขั้นตอนวิธีของเขาเกิดขึ้นในเดือนมกราคม พ.ศ. 2512 และได้รับการตีพิมพ์ในปี พ.ศ. 2513 ในวารสาร Доклады Академии Наук СССР (Doklady Akademii Nauk SSSR ) ในปี พ.ศ. 2517 ชิมอน อีเวน (שמעון אבן) และ อลอน อีไต (אלון איתי , ซึ่งกำลังศึกษาปริญญาเอกในขณะนั้น) ที่สถาบันเทคโนโลยีอิสราเอลเทคนิออน (מכון טכנולוגי לישראל - הטכניון) ในไฮฟา มีความสนใจและประทับใจกับขั้นตอนวิธีของดีนิทซ์ รวมถึงแนวคิดที่เกี่ยวข้องกับการปิดกั้นการไหลของอะเลคซันดร์ คาซานอฟ (Александр Викторович Карзанов) อย่างไรก็ตาม มันยากสำหรับพวกเขาที่จะถอดรหัสเอกสารทั้งสองฉบับนี้ โดยแต่ละฉบับมีเพียงสี่หน้าเพื่อให้เป็นไปตามข้อจำกัดของวารสาร Doklady Akademii Nauk SSSR โดยไม่ท้อถอยหลังจากสามวันของความพยายามก็สามารถทำความเข้าใจเอกสารทั้งสองฉบับได้ ยกเว้นปัญหาการบำรุงรักษาเครือข่ายแบบชั้น ในอีกสองสามปีต่อมาอีเวน ได้บรรยายเกี่ยวกับ "ขั้นตอนวิธีของ Dinic" โดยออกเสียงชื่อผู้เขียนผิดในขณะที่เผยแพร่ให้เป็นที่รู้จัก อีเวนและอีไตมีส่วนร่วมในขั้นตอนวิธีนี้ด้วยการรวมการค้นหาในแนวกว้าง (BFS) และการค้นหาในแนวลึก (DFS) ซึ่งปัจจุบันเป็นวิธีที่นำเสนอขั้นตอนวิธีนี้โดยทั่วไป[3]

เป็นเวลาประมาณ 10 ปีหลังจากที่ขั้นตอนวิธีของฟอร์ด-เฟิลเกอร์สัน ถูกประดิษฐ์ขึ้น ไม่มีใครรู้ว่ามันสามารถมีจุดสิ้นสุดในเวลาพหุนามในกรณีทั่วไปของความจุที่มีค่าขอบเป็นจำนวนอตรรกยะได้หรือไม่ สิ่งนี้ทำให้ไม่มีขั้นตอนวิธีเวลาพหุนามที่รู้จักสำหรับการแก้ปัญหาการไหลสูงสุดในกรณีทั่วไป ขั้นตอนวิธีของดีนิทซ์ และขั้นตอนวิธีของเอ็ดมอนด์-คาป (เผยแพร่ในปี พ.ศ. 2515) ทั้งสองแบบต่างแสดงให้เห็นว่าในขั้นตอนวิธีของฟอร์ด-เฟิลเกอร์สัน หากวิถีแต่งเติมแต่ละเส้นสั้นที่สุด ความยาวของวิถีแต่งเติมจะไม่มีการลดลงและขั้นตอนวิธีจะมีจุดสิ้นสุดเสมอ

นิยาม แก้

ให้   เป็นเน็ตเวิร์ก มีเส้นเชื่อมจาก   ไป   โดยอนุญาตให้กระแสไหลผ่านได้   และมีกระแสไหลผ่านแล้ว  

กราฟความจุคงเหลิอ (residual capacity) เป็นกราฟที่ได้จาก   นิยามโดย
  1. เมื่อ  ,
  2. :  
  3. :  
  4. นอกเหนือจากนี้  
กราฟความจุคงเหลิอ คือกราฟ   ที่มี
 
วิถีแต่งเติม (augmenting path) คือวิถีจาก   ภายในกราฟความจุคงเหลิอ  
ให้   แทนวิถีสั้นสุดจาก   ไป   ในกราฟ  
จะได้ว่า กราฟระดับ (level graph) ของ   คือกราฟ   ที่มี
 
กระแสจำกัดการไหล คือกระแสจาก   ไป     ซึ่งทำให้   มี  และไม่มีวิถี   [a][4]

ขั้นตอนวิธี แก้

ขั้นตอนวิธีของดีนิซ

อินพุต : เน็ตเวิร์ก  
เอาต์พุต : กระแส   ที่มีค่ากระแสสูงสุด  
  1. กำหนด  สำหรับทุก  
  2. สร้าง   จาก   ของ   ถ้า   ให้หยุดและคืนค่า  
  3. หากระแสจำกัดการไหล   ใน  
  4. ขยายกระแส  ด้วย   จากนั้นกลับไปทำขั้นตอนที่ 2

วิเคราะห์ แก้

จะเห็นได้ว่าจำนวนของเส้นเชื่อมในทุก กระแสจำกัดการไหล จะเพิ่มขึ้นอย่างน้อยที่ละ 1 ในการวน 1 รอบ และจะเพิ่มจนมีค่าไม่เกิน   โดย   เป็นจำนวนปมทั้งหมดในเน็ตเวิร์ก กราฟระดับ   สามารถสร้างได้จาก การค้นตามแนวกว้าง ในเวลา   โดย   เป็นจำนวนเส้นเชื่อม และกระแสจำกัดการไหลในทุก ๆ กราฟระดับ จะสามารถหาได้ภายในเวลา   [b] ดังนั้นขั้นตอนวิธีของดีนิซจึงใช้เวลาในการทำงานเป็น   [5]

นอกจากนี้ยังสามารถทำให้ขั้นตอนวิธีของดีนิซมีประสิทธิภาพเพิ่มขึ้นด้วยการใช้โครงสร้างข้อมูลที่เรียกว่า ต้นไม้พลวัต (dynamic trees) ซึ่งจะทำให้เวลาการหากระแสจำกัดการไหลลดลงเป็น   ทำให้ขั้นตอนวิธีโดยรวมใช้ทำงานเพียง  

กรณีพิเศษ แก้

ในเน็ตเวิร์กที่มีความจุเอกลักษณ์ จะมีขอบเขตของเวลามากขึ้น แต่ละขั้นตอนการปิดกั้นการไหลสามารถพบได้ในเวลา   และสามารถแสดงให้เห็นว่าจำนวนเฟสไม่เกิน   และ   ดังนั้นขั้นตอนวิธีจะทำงานในเวลา   [6]

ในเน็ตเวิร์กที่เกิดจากปัญหาบบการจับคู่สองส่วน]] จำนวนเฟสจะถูกจำกัดด้วย   จึงนำไปสู่ขอบเขตเวลา   ขั้นตอนวิธีที่ได้นั้นเรียกอีกอย่างว่าขั้นตอนวิธีฮอปครอฟต์-คาป โดยทั่วไป ขอบเขตนี้มีไว้สำหรับเน็ตเวิร์กเอกลักษณ์ใด ๆ — เครือข่ายที่จุดยอดแต่ละจุด ยกเว้นต้นทางและปลายทาง อาจมีวิถีของความจุขาเข้าเดียว หรือวิถีความจุของขาออกเดียว และความจุอื่นทั้งหมดเป็นจำนวนเต็มใด ๆ[4]

ตัวอย่าง แก้

ให้ G เป็นเน็ตเวิร์กเริ่มต้น ซึ่งแต่ละเส้นเชื่อมจะมีขนาดของกระแสและความจุ   เป็นกราฟระดับ ปมที่มีเลขเป็นสีแดงคือค่าของ   และวิถีสีน้ำเงินคือกระแสจำกัดการไหล

     
1.      

กระแสจำกัดการไหลได้แก่

  1.   ด้วยกระแสขนาด 4 หน่วย
  2.   ด้วยกระแสขนาด 6 หน่วย และ
  3.   ด้วยกระแสขนาด 4 หน่วย

ดังนั้นกระแสจำกัดการไหลมีทั้งหมด 14 หน่วย และ กระแส   ทีค่าเท่ากับ 14 หมายเหตุ จะเห็นว่าทุก ๆ วิถีแต่งเติม ในกระแสจำกัดการไหลจะมี 3 เส้นเชื่อม

2.      

กระแสจำกัดการไหลได้แก่

  1.   ด้วยกระแสขนาด 5 หน่วย

ดังนั้นกระแสจำกัดการไหลมีทั้งหมด 5 หน่วย และ กระแส   ทีค่าเท่ากับ 14+5=19 หมายเหตุ จะเห็นว่าทุก ๆ วิถีแต่งเติม ในกระแสจำกัดการไหลจะมี 4 เส้นเชื่อม

3.      

จะเห็นว่าในกราฟ   ไม่มีวิถีที่จะไปถึง   ได้แล้ว ขั้นตอนวิธีก็จะจบลงและคืนค่ากระแสที่มีค่าสูงสุดนั้นก็คือ 19 หมายเหตุ จะเห็นว่าจำนวนเส้นเชื่อมในวิถีแต่งเติมจะเพิ่มขึ้นอย่างน้อย 1 ในทุก ๆ ครั้งที่หากระแสจำกัดการไหล

ดูเพิ่ม แก้

เชิงอรรถ แก้

  1. หมายถึงกราฟย่อยที่เกิดจากการลบวิถีที่อิ่มตัวทั้งหมด (วิถี   โดย  ) ไม่มีวิถีใด ๆ จาก   ถึง   กล่าวอีกนัยหนึ่งคือ การปิดกั้นการไหล นั้นทุกเส้นทางที่เป็นไปได้จาก   ถึง   มีวิถีอิ่มตัว
  2. การค้นหาการปิดกั้นการไหลสามารถทำได้ใน   รายวิถีโดยผ่านลำดับของการดำเนินการเดินหน้าและถอยกลับ (Advance and Retreat operations) ดูเพิ่มเติมที่ Blocking flows in unit-capacity graphs

อ้างอิง แก้

  1. Yefim Dinitz (1970). "Algorithm for solution of a problem of maximum flow in a network with power estimation" (PDF). Doklady Akademii Nauk SSSR. 11: 1277–1280.
  2. Ilan Kadar; Sivan Albagli (27 พฤศจิกายน 2009). "Dinitz's algorithm for finding a maximum flow in a network".
  3. Yefim Dinitz. "Dinitz's Algorithm: The Original Version and Even's Version" (PDF). คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ 2016-08-20. สืบค้นเมื่อ 2011-09-08.
  4. 4.0 4.1 Tarjan 1983, p. 102.
  5. Yefim Dinitz (2006). "Dinitz' Algorithm: The Original Version and Even's Version" (PDF). ใน Oded Goldreich; Arnold L. Rosenberg; Alan L. Selman (บ.ก.). Theoretical Computer Science: Essays in Memory of Shimon Even. Springer. pp. 218–240. ISBN 978-3-540-32880-3. คลังข้อมูลเก่าเก็บจากแหล่งเดิม (PDF)เมื่อ 2016-08-20. สืบค้นเมื่อ 2011-09-08.
  6. Even, Shimon; Tarjan, R. Endre (1975). "Network Flow and Testing Graph Connectivity". SIAM Journal on Computing. 4 (4): 507–518. doi:10.1137/0204043. ISSN 0097-5397.

บรรณานุกรม แก้