ปัญหาอยู่ที่หลังจากทั้งหมด ฉันจะให้คำตอบก่อนหน้าในขณะที่มันยังสามารถใช้ได้กับกรณีที่ผู้กำกับ (ซึ่งเป็น NPC เป็นคำตอบในคำถามอื่น ๆ ) และแสดงให้เห็นว่ามันเป็นF P Tด้วยความเคารพต่อลิตรPFPTl
ในกรณีที่ไม่ได้บอกทิศทางมันสามารถแก้ไขได้กำหนดผ่านการไหลของต้นทุนต่ำสุด (สิ่งนี้อาจใช้ไม่ได้กับเครื่องชั่งที่คุณอ้างถึงในคำถาม แต่ดีกว่าอัลกอริธึมแบบเอ็กซ์โปเนนเชียล
ขั้นตอนต่อไปนี้จะตัดสินว่าขอบบางควรเป็นส่วนหนึ่งของกราฟผลลัพธ์หรือไม่ เพื่อที่จะตอบปัญหาเดิมเพียงแค่วนรอบขอบทั้งหมดe=(u,v)∈E
ในการสร้างเครือข่ายการไหลให้ทำดังนี้:
ขั้นตอนที่ 1: ขยายเพื่อให้จุดสุดยอดx eและแทนที่eด้วยขอบ( u , x e ) , ( x e , u ) , ( v , x e ) , ( x e , v ) (พวกเขาถูกชี้นำเป็น ส่วนหนึ่งของเครือข่ายการไหล) ตั้งค่าเป็น 0exee(u,xe),(xe,u),(v,xe),(xe,v)
ขั้นตอนที่ 2: เปลี่ยนทุกจุดสุดยอดยกเว้นx อีสองจุดT -และT +และเพิ่มขอบ( T - , เสื้อ+ ) กำหนดค่าขอบเหล่านี้เป็น 1txet−t+(t−,t+)
ขั้นตอนที่ 3: แทนที่ของทุกขอบกับขอบ( + , ข- ) , ( B + , - ) กำหนดค่าขอบเหล่านี้เป็น 0{a,b}∈E(a+,b−),(b+,a−)
ขั้นตอนที่ 4: เพิ่มใหม่ยอดและเพิ่มขอบ( s , Y E ) , ( T , Y อี )ที่มีค่าใช้จ่าย 0ye(s,ye),(t,ye)
ขั้นตอนที่ 5: ตั้งค่าความจุทั้งหมดเป็น 1
ตอนนี้ใช้อัลกอริทึมนาทีไหลค่าใช้จ่ายในการค้นหาสำหรับการไหลของมูลค่า 2 จากเพื่อYอีxeye
วิเคราะห์:
- ทุก 2 มูลค่าไหลจากเพื่อY อีเป็นสหภาพของเส้นทางx อี ⇝ s → Y อีและเส้นทางx อี ⇝ เสื้อ→ Yอีxeyexe⇝s→yexe⇝t→ye
- เส้นทางมีเคล็ดเนื่องจากทุกจุดสุดยอดมีเพียง 1 ความจุใน( T - , เสื้อ+ )โค้งt(t−,t+)
- เส้นทางที่ส่งคืนเป็นเส้นทางสองเส้นทางที่มีระยะทางรวมน้อยที่สุดและนั่นก็เป็นต้นทุนของการไหลที่พบ สิ่งนี้ทำให้เราสามารถเพิ่มไปยังกราฟผลลัพธ์หรือลบอย่างอื่นได้e