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

- เมื่อ
- กราฟความจุคงเหลิอ คือกราฟ
ที่มี
.
- วิถีแต่งเติม (augmenting path) คือวิถีจาก
ภายในกราฟความจุคงเหลิอ
.
- ให้
แทนวิถีสั้นสุดจาก
ไป
ในกราฟ 
- จะได้ว่า กราฟระดับ (level graph) ของ
คือกราฟ
ที่มี
.
- กระแสจำกัดการไหล คือกระแสจาก
ไป
ซึ่งทำให้
มี
และไม่มีวิถี 
[แก้] ขั้นตอนวิธี
ขั้นตอนวิธีของดีนิซ
- อินพุท: เน็ตเวิร์ค
. - เอาต์พุต: กระแส
ที่มีค่ากระแสสูงสุด 
- กำหนด
สำหรับทุก
. - สร้าง
จาก
ของ
ถ้า
ให้หยุดและคืนค่า
. - หากระแสจำกัดการไหล
ใน
. - ขยายกระแส
ด้วย
จากนั้นกลับไปทำขั้นตอนที่ 2
[แก้] วิเคราะห์
จะเห็นได้ว่าจำนวนของเส้นเชื่อมในทุก กระแสจำกัดการไหล จะเพิ่มขึ้นอย่างน้อยที่ละ 1 ในการวน 1 รอบ และจะเพิ่มจนมีค่าไม่เกิน
โดย
เป็นจำนวนปมทั้งหมดในเน็ตเวิร์ค กราฟระดับ
สามารถสร้างได้จาก การค้นตามแนวกว้าง (Breadth-first search) ในเวลา
โดย
เป็นจำนวนเส้นเชื่อม และกระแสจำกัดการไหลในทุก ๆ กราฟระดับ จะสามารถหาได้ภายในเวลา
ดังนั้นขั้นตอนวิธีของดีนิซจึงใช้เวลาในการทำงานเป็น 
นอกจากนี้ยังสามารถทำให้ขั้นตอนวิธีของดีนิซมีประสิทธิภาพเพิ่มขึ้นด้วยการใช้โครงสร้างข้อมูลที่เรียกว่า ต้นไม้พลวัต (dynamic trees) ซึ่งจะทำให้เวลาการหากระแสจำกัดการไหลลดลงเป็น
ทำให้ขั้นตอนวิธีโดยรวมใช้ทำงานเพียง 
[แก้] ตัวอย่าง
ให้ G เป็นเน็ตเวิร์คเริ่มต้น ซึ่งแต่ละเส้นเชื่อมจะมีขนาดของกระแสและความจุ
เป็นกราฟระดับ ปมที่มีเลขเป็นสีแดงคือค่าของ
และวิถีสีน้ำเงินคือกระแสจำกัดการไหล
[แก้] ดูเพิ่ม
[แก้] บรรณานุกรม
- Yefim Dinitz (2006). "Dinitz' Algorithm: The Original Version and Even's Version". In Oded Goldreich, Arnold L. Rosenberg, and Alan L. Selman. Theoretical Computer Science: Essays in Memory of Shimon Even. Springer. pp. 218–240. ISBN 978-3540328803. http://www.cs.bgu.ac.il/~dinitz/Papers/Dinitz_alg.pdf.
- Tarjan, R. E. (1983). Data structures and network algorithms.
- B. H. Korte, Jens Vygen (2008). "8.4 Blocking Flows and Fujishige's Algorithm". Combinatorial Optimization: Theory and Algorithms (Algorithms and Combinatorics, 21). Springer Berlin Heidelberg. pp. 174–176. ISBN 978-3-540-71844-4.
นิยามโดย
,



ที่มี
.
ภายในกราฟความจุคงเหลิอ
.
ไป
ที่มี
.
ซึ่งทำให้
มี
และไม่มีวิถี
สำหรับทุก
.
ถ้า
ให้หยุดและคืนค่า
ใน
ด้วย
ด้วยกระแสขนาด 4 หน่วย
ด้วยกระแสขนาด 6 หน่วย และ
ด้วยกระแสขนาด 4 หน่วย
ทีค่าเท่ากับ 14 หมายเหตุ จะเห็นว่าทุก ๆ วิถีแต่งเติม ในกระแสจำกัดการไหลจะมี 3 เส้นเชื่อม
ด้วยกระแสขนาด 5 หน่วย