สำหรับปัญหาการไหลสูงสุดดูเหมือนว่าจะมีอัลกอริธึมที่ซับซ้อนจำนวนมากโดยมีการพัฒนาอย่างน้อยหนึ่งรายการเมื่อเร็ว ๆ นี้เมื่อปีที่แล้ว Maxของ Orlin ไหลในเวลา O (mn) หรือดีกว่าให้อัลกอริทึมที่ทำงานใน O (VE)
ในทางกลับกันอัลกอริทึมที่ฉันเห็นบ่อยที่สุดคือการใช้งาน (ฉันไม่ได้อ้างว่าได้ทำการค้นหาอย่างละเอียดแล้วนี่เป็นเพียงการสังเกตอย่างไม่เป็นทางการ):
- Edmonds-Karp: ,
- Push-relabel: หรือO ( V 3 )โดยใช้การเลือกจุดสุดยอด FIFO
- Dinic ของอัลกอริทึม: )
อัลกอริธึมที่มีเวลาทำงานเชิงซีมโทติคที่ดีกว่านั้นไม่สามารถใช้ได้จริงกับขนาดของปัญหาในโลกแห่งความเป็นจริงหรือไม่? นอกจากนี้ฉันเห็นว่า "ต้นไม้แบบไดนามิก" มีส่วนเกี่ยวข้องในอัลกอริทึมค่อนข้างน้อย เหล่านี้เคยใช้ในทางปฏิบัติหรือไม่
หมายเหตุ: คำถามนี้ถูกถามในตอนแรกเกี่ยวกับการล้นสแต็คที่นี่แต่ฉันบอกว่ามันจะดีกว่าที่นี่
แก้ไข : ฉันถามคำถามที่เกี่ยวข้องกับ cs.stackexchangeโดยเฉพาะเกี่ยวกับอัลกอริทึมที่ใช้ต้นไม้แบบไดนามิก (หรือที่รู้จักในชื่อ link-cut trees) ซึ่งอาจเป็นที่สนใจสำหรับผู้ที่ติดตามคำถามนี้