กราฟที่เหลือในการไหลสูงสุด


14

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

ทุกคนสามารถช่วยฉันเข้าใจแนวคิดของกราฟที่เหลือได้หรือไม่

อัลกอริทึมเปลี่ยนไปอย่างไรในกราฟที่ไม่ได้บอกทิศทาง

คำตอบ:


28

สัญชาตญาณการกระทำกราฟที่เหลือในปัญหาการไหลสูงสุดจะถูกนำเสนอได้ดีมากในการบรรยายนี้ คำอธิบายจะเป็นดังนี้

สมมติว่าเรากำลังพยายามที่จะแก้ปัญหาการไหลสูงสุดสำหรับเครือข่ายต่อไปนี้ (ซึ่งแต่ละป้ายE / C Eหมายถึงทั้งการไหลอีผลักดันให้ผ่านขอบอีและจุอีขอบนี้):Gfe/cefeece

ตัวอย่างการวิ่ง

แนวทางโลภที่เป็นไปได้วิธีหนึ่งคือ:

  1. เลือกพลaugmentingเส้นทางที่จะไปจากจุดสุดยอดแหล่งที่มาของการจมจุดสุดยอดเสื้อดังกล่าวว่าอีPst ); นั่นคือขอบทั้งหมดใน Pมีความจุที่พร้อมใช้งานe(ePfe<ceP
  2. ผลักดันการไหลเป็นไปได้สูงสุดผ่านเส้นทางนี้ ค่าของΔถูกกำหนดโดยคอขวดของP ; นั่นคือขอบที่มีความจุต่ำสุดที่มีอยู่ อย่างเป็นทางการΔ = นาทีอีP ( อี - เอฟอี )ΔΔPΔ=mineP(cefe)
  3. ไปที่ขั้นตอนที่ 1 จนกว่าจะไม่มีเส้นทางเพิ่ม

นั่นคือค้นหาพา ธ ที่มีความจุที่ใช้ได้ส่งโฟลว์ไปตามเส้นทางนั้นและทำซ้ำ

ในการดำเนินการฮิวริสติกที่เป็นไปได้จะพบเส้นทางการเติมสามเส้นทางคือP 1 , P 2และP 3ตามลำดับนี้ เส้นทางเหล่านี้มีการไหล 2, 2 และ 1 หน่วยตามลำดับสำหรับการไหลรวม 5:GP1P2P3

การดำเนินการที่เป็นไปได้ของวิธีการโลภสำหรับการไหลสูงสุด

การเลือกเส้นทางในคำสั่งนี้จะนำไปสู่ทางออกที่ดีที่สุด แต่สิ่งที่เกิดขึ้นถ้าเราเลือกครั้งแรก (กล่าวคือก่อนที่P 1และP 2 )?P3P1P2

เส้นทางการบล็อก

wv

ไหลย้อนกลับ

การเข้ารหัสการดำเนินงานได้รับอนุญาตให้ยกเลิกเหล่านี้เป็นเป้าหมายหลักของกราฟที่เหลือ

RGGe=(u,v)G

  • e=(u,v)cefecefe>0

  • e=(v,u)fefe>0

ตัวอย่างเช่นพิจารณากราฟที่เหลือที่ได้รับหลังจากการวนซ้ำครั้งแรกของฮิวริสติกแบบโลภเมื่อฮิวริสติกเลือกก่อน (นั่นคือเมื่อได้รับโฟลว์การบล็อก):RP3

กราฟที่เหลือ

โปรดทราบว่าการดำเนินการเลิกทำที่ผลัก 2 หน่วยการไหลจากถึงถูกเข้ารหัสเป็นเส้นทางไปข้างหน้า (การเพิ่ม) เส้นทางจากถึงใน :wvstR

เส้นทางที่เพิ่มขึ้นในกราฟที่เหลือ

โดยทั่วไป:

เมื่อเลือกเส้นทางการเติมในกราฟที่เหลือ :PR

  • ขอบทุกอันในที่สอดคล้องกับขอบด้านหน้าในเพิ่มการไหลโดยใช้ขอบที่มีความจุที่มีอยู่PG
  • ขอบทุกอันในที่สอดคล้องกับขอบไปข้างหลังในการไหลที่ถูกผลักไปในทิศทางไปข้างหน้าในอดีตPG

นี่คือแนวคิดหลักที่อยู่เบื้องหลังวิธีการฟอร์ด Fulkerson

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

ให้เครือข่าย , การไหลเป็นค่าสูงสุดในหากไม่มีเส้นทางในกราฟที่เหลือGfGst


มีตัวอย่างที่พา ธ ถูกเพิ่มตามลำดับความยาวสั้นที่สุดตามที่อธิบายไว้ในอัลกอริทึม Edmonds-Karp หรือไม่? ในตัวอย่างตัวนับของคุณเส้นทางแรกคือความยาว 3 ในขณะที่สามารถหาเส้นทางที่สั้นกว่า (เช่น 2) และจะถูกเพิ่มก่อนหากเราทำ Edmonds-Karp
รอย

คุณก็สามารถทำให้ทุกเส้นทางในกราฟเดิมมีความยาว3ต้องการทำเช่นนั้นแยกจุดสุดยอดเป็นสองจุดและv_2จากนั้นแยกเข้าและw_2เพิ่มอีกสองขอบและที่มีความจุ2ขอบที่เดิมไปจากเพื่อตอนนี้จะไปจากเพื่อw_2เราสามารถได้รับชนิดเดียวกันของการปิดกั้นการไหลถ้าเราเลือกแรกเส้นทางที่มีขอบw_2)st3vv1v2ww1w2(v1,v2)(w1,w2)2vwv1w2(v1,w2)
Mario Cervera

ตัวอย่างของคุณสมเหตุสมผลแล้ว เราสามารถขยายกราฟบนขอบอื่น ๆ ในการตัดเพื่อทำให้ขอบของคำถามนั้นเป็นหนึ่งในเส้นทางที่สั้นที่สุด
Roy

3

สัญชาตญาณที่อยู่เบื้องหลังเครือข่ายที่เหลือคือมันช่วยให้เราสามารถ "ยกเลิก" การไหลที่ได้รับมอบหมายแล้วถ้าเราได้กำหนด 2 หน่วยการไหลจากถึงแล้วผ่าน 1 หน่วยการไหลจากถึงถูกตีความว่าเป็นการยกเลิกหนึ่งหน่วย ของการไหลต้นฉบับจากไปBABBAAB

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.