อัลกอริทึมของ Dinic
อัลกอริทึมของ Dinicหรืออัลกอริทึมของ Dinitzเป็น อัลกอริทึม พหุนามที่แข็งแกร่งสำหรับการคำนวณการไหลสูงสุดในเครือข่ายการไหลซึ่งคิดค้นขึ้นในปี 1970 โดยนักวิทยาศาสตร์คอมพิวเตอร์ชาวอิสราเอล (อดีตสหภาพโซเวียต) Yefim Dinitz [ 1 ] อัลกอริทึมทำงานในเวลาและคล้ายกับอัลกอริทึม Edmonds–Karpซึ่งทำงานในข้อดีของอัลกอริธึมของ Dinic คือใช้เส้นทางเสริมที่สั้นที่สุด การนำแนวคิดของกราฟระดับและการไหลที่ถูกปิดกั้นมาใช้ทำให้อัลกอริธึมของ Dinic สามารถทำงานได้อย่างมีประสิทธิภาพ
ประวัติศาสตร์
Dinitz คิดค้นอัลกอริทึมนี้ในเดือนมกราคม พ.ศ. 2512 ขณะเป็นนักศึกษาปริญญาโทในกลุ่มของGeorgy Adelson-Velsky ไม่กี่ทศวรรษต่อมา เขาจะเล่าว่า: [ 2 ]
ในชั้นเรียนวิชาอัลกอริธึมของ Adel'son-Vel'sky อาจารย์ผู้สอนมีนิสัยชอบให้โจทย์ที่จะอภิปรายในครั้งต่อไปเป็นแบบฝึกหัดแก่นักเรียน อัลกอริทึม DA ถูกคิดค้นขึ้นเพื่อตอบสนองต่อแบบฝึกหัดดังกล่าว ในขณะนั้น ผู้คิดค้นยังไม่ทราบข้อเท็จจริงพื้นฐานเกี่ยวกับ [ อัลกอริทึม Ford–Fulkerson ]…
⋮ บางครั้งความไม่รู้ก็มีข้อดี เป็นไปได้มากว่า DA จะไม่ถูกคิดค้นขึ้นมาหากผู้เขียนรู้ถึงความเป็นไปได้ของการลดความอิ่มตัวของขอบภาพ
ในปี 1970 Dinitz ได้ตีพิมพ์คำอธิบายของอัลกอริทึมในDoklady Akademii Nauk SSSRในปี 1974 Shimon Evenและ (นักศึกษาปริญญาเอกของเขาในขณะนั้น) Alon Itai ที่Technionใน Haifa ต่างก็สงสัยและสนใจอัลกอริทึมของ Dinitz รวมถึง แนวคิดที่เกี่ยวข้องของ Alexander V. Karzanovเกี่ยวกับการปิดกั้นการไหล อย่างไรก็ตาม พวกเขาพบว่าการถอดรหัสเอกสารทั้งสองฉบับนั้นยาก เนื่องจากแต่ละฉบับจำกัดไว้ที่สี่หน้าเพื่อให้เป็นไปตามข้อจำกัดของวารสารDoklady Akademii Nauk SSSR Even ไม่ยอมแพ้ และหลังจากพยายามสามวัน เขาก็สามารถเข้าใจเอกสารทั้งสองฉบับได้ ยกเว้นปัญหาการบำรุงรักษาเครือข่ายแบบเลเยอร์ ในช่วงสองสามปีต่อมา Even ได้บรรยายเกี่ยวกับ "อัลกอริทึมของ Dinic" โดยออกเสียงชื่อผู้เขียนผิดในขณะที่เผยแพร่อัลกอริทึมนี้ Even และ Itai ยังได้มีส่วนร่วมในอัลกอริทึมนี้โดยการรวมBFSและDFSซึ่งเป็นวิธีการนำเสนออัลกอริทึมที่ใช้กันทั่วไปในปัจจุบัน[ 2 ]
เป็นเวลากว่า 10 ปีหลังจากที่คิดค้นอัลกอริทึม Ford–Fulkerson ขึ้นมา ก็ยังไม่มีใครทราบว่าอัลกอริทึมนี้จะสามารถทำงานได้ในเวลาพหุนามในกรณีทั่วไปที่มีความจุของขอบเป็นจำนวนอตรรกยะหรือไม่ นี่จึงเป็นสาเหตุที่ทำให้ไม่มีอัลกอริทึมใดที่สามารถแก้ปัญหาการไหลสูงสุดในกรณีทั่วไปได้ในเวลาพหุนาม อัลกอริทึมของ Dinitz และอัลกอริทึม Edmonds–Karp (ตีพิมพ์ในปี 1972) ต่างก็แสดงให้เห็นโดยอิสระว่า ในอัลกอริทึม Ford–Fulkerson ถ้าเส้นทางเสริมแต่ละเส้นเป็นเส้นทางที่สั้นที่สุด ความยาวของเส้นทางเสริมจะไม่ลดลง และอัลกอริทึมจะสิ้นสุดลงเสมอ
คำนิยาม
อนุญาตเป็นเครือข่ายกับและความจุและการไหลของขอบตามลำดับ
- ความจุคงเหลือคือการแมปกำหนดไว้ดังนี้
- ถ้า,
- ถ้า,
- มิฉะนั้น.
- ถ้า,
- กราฟส่วนเหลือเป็นกราฟที่ไม่มีน้ำหนัก, ที่ไหน
- .
- เส้นทางเสริมคือ–เส้นทางในกราฟส่วนเหลือ.
- กำหนดให้เป็นความยาวของเส้นทางที่สั้นที่สุดจากถึงในจากนั้นกราฟระดับของคือกราฟ, ที่ไหน
- .
- การไหลที่ถูกปิดกั้นคือ–ไหลโดยที่กราฟกับไม่มี–เส้นทาง[หมายเหตุ 1 ] [ 3 ]
อัลกอริทึม
อัลกอริทึมของ Dinic
- อินพุต : เครือข่าย.
- ผลลัพธ์ : แอน–ไหลของค่าสูงสุด
- ชุดสำหรับแต่ละคน.
- สร้างจากของ. ถ้าหยุดและส่งออก.
- ค้นหาสิ่งกีดขวางการไหลใน.
- เพิ่มการไหลโดยแล้วกลับไปที่ขั้นตอนที่ 2
การวิเคราะห์
สามารถแสดงให้เห็นได้ว่าจำนวนชั้นในแต่ละกระแสการปิดกั้นจะเพิ่มขึ้นอย่างน้อย 1 ชั้นในแต่ละครั้ง ดังนั้นจึงมีจำนวนชั้นอย่างมากที่สุดการปิดกั้นการไหลในอัลกอริทึม สำหรับแต่ละกรณี:
- กราฟระดับสามารถสร้างได้โดยใช้การค้นหาแบบกว้าง (breadth-first search ) ในเวลา
- การไหลที่ถูกปิดกั้นในกราฟระดับสามารถพบได้ในเวลา[หมายเหตุ 2 ]
ด้วยระยะเวลาการวิ่งทั้งหมดสำหรับแต่ละชั้น ดังนั้น เวลาในการทำงานของอัลกอริทึมของ Dinic จึงเป็น[ 2 ]
การใช้โครงสร้างข้อมูลที่เรียกว่าต้นไม้แบบไดนามิกสามารถลดเวลาในการค้นหาสิ่งกีดขวางการไหลในแต่ละเฟสลงได้ดังนั้น เวลาในการทำงานของอัลกอริทึมของ Dinic จึงสามารถปรับปรุงให้ดีขึ้นได้.
กรณีพิเศษ
ในเครือข่ายที่มีความจุเป็นหน่วย จะมีข้อจำกัดด้านเวลาที่เข้มงวดกว่ามาก การไหลที่ปิดกั้นแต่ละครั้งสามารถพบได้ในเวลา และสามารถแสดงได้ว่าจำนวนเฟสไม่เกินและ[หมายเหตุ 3 ]ดังนั้นอัลกอริทึมจึงทำงานในเวลา[ 4 ]
ในเครือข่ายที่เกิดขึ้นจาก ปัญหา การจับคู่แบบทวิภาคีจำนวนเฟสจะถูกจำกัดโดยดังนั้นจึงนำไปสู่ขอบเขตเวลา อัลกอริทึมที่ได้นี้ยังเป็นที่รู้จักในชื่ออัลกอริทึม Hopcroft–Karpโดยทั่วไปแล้ว ขอบเขตนี้ใช้ได้กับเครือข่ายหน่วย ใดๆ — เครือข่ายที่แต่ละจุดยอด ยกเว้นแหล่งกำเนิดและจุดปลาย จะมีขอบขาเข้าเพียงเส้นเดียวที่มีความจุหนึ่ง หรือขอบขาออกเพียงเส้นเดียวที่มีความจุหนึ่ง และความจุอื่นๆ ทั้งหมดเป็นจำนวนเต็มใดๆ[ 3 ]
ตัวอย่าง
ต่อไปนี้เป็นการจำลองอัลกอริทึมของ Dinic ในกราฟระดับจุดยอดที่มีป้ายกำกับสีแดงคือค่าต่างๆเส้นทางสีน้ำเงินก่อให้เกิดการไหลเวียนที่กีดขวาง
ดูเพิ่มเติม
หมายเหตุ
- ↑หมายความว่ากราฟย่อยที่ได้จากการลบขอบอิ่มตัวทั้งหมด (ขอบ)กับ) ไม่มีเส้นทางใดๆ จากถึงกล่าวอีกนัยหนึ่งการไหลที่ปิดกั้นนั้นเป็นเช่นนั้น ทุกเส้นทางที่เป็นไปได้จากถึงมีขอบที่อิ่มตัว
- ↑การค้นหาเส้นทางการไหลที่กีดขวางสามารถดำเนินการได้ในต่อเส้นทางผ่านลำดับการดำเนินการเดินหน้าและถอยหลัง ดูรายละเอียดเพิ่มเติมได้ที่ http://courses.csail.mit.edu/6.854/06/scribe/scribe11.pdf
- ↑เดอะขอบเขตนี้ถือว่าไม่มีเส้นขอบสองเส้นใดเชื่อมต่อจุดยอดคู่เดียวกันในทิศทางเดียวกัน ในขณะที่bound ไม่ได้ตั้งสมมติฐานเช่นนั้น
- ↑ EA Dinic (1970). "อัลกอริทึมสำหรับการแก้ปัญหาการไหลสูงสุดในเครือข่ายที่มีการประมาณกำลังไฟฟ้า" (PDF) . Doklady Akademii Nauk SSSR . 11 : 1277– 1280.
- 1 2 3 Dinitz, Yefim (2006). "อัลกอริทึมของ Dinitz: เวอร์ชันดั้งเดิมและเวอร์ชันของ Even"ในOded Goldreich ; Arnold L. Rosenberg ; Alan L. Selman (บรรณาธิการ). วิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี: บทความเพื่อรำลึกถึงShimon Even . Lecture Notes in Computer Science. เล่มที่3895. Springer. หน้า218–240 . doi : 10.1007/11685654_10 . ISBN 978-3-540-32880-3.
- 1 2 Tarjan 1983 , หน้า 102.
- ↑ Even, Shimon; Tarjan, R. Endre (1975). "การไหลของเครือข่ายและการทดสอบการเชื่อมต่อกราฟ" SIAM Journal on Computing . 4 (4): 507– 518. doi : 10.1137/0204043 . ISSN 0097-5397 .