นี่เป็นครั้งแรกที่ฉันได้อ่านเกี่ยวกับอัลกอริธึมการหน่วงเวลาพหุนามดังนั้นฉันจึงไม่แน่ใจ 100% สำหรับคำตอบของฉัน แต่ฉันคิดว่าสิ่งต่อไปนี้ควรใช้งานได้
รับการประชุมบางอย่างสำหรับการเป็นตัวแทนของเส้นทางที่มีการสั่งซื้อทั้งหมดธรรมชาติที่กำหนดไว้ในนั้น (ตัวอย่างหนึ่งจะเป็นเพียงการแสดงรายการจุดสุดยอดของเส้นทางและคำสั่งพจนานุกรม) เลือกที่คุณชื่นชอบในสถานที่ข้อมูลโครงสร้างDที่สนับสนุนการค้นหาลอการิทึมและแทรก (พูดต้นไม้สีแดงสีดำ) ให้Gเป็นกราฟของคุณ<DG
กำหนดอัลกอริทึม :F
:F( s , t , G ,* * * *D )
(ที่นี่∗ Dหมายถึงการอ้างอิงไปยังโครงสร้างข้อมูล inplace D )* * * *DD
- ขั้นตอนวิธีการเรียกใช้โพลีเวลาของคุณสำหรับการกลับมาคู่ของเส้นทางขอบเคลื่อนกับP < Qจากsไปที( P, Q )P< ถามsเสื้อ
ถ้าไม่ได้อยู่ในD( P, Q )D
2.1 แทรกลงในD (และเอาท์พุทถ้าคุณคิดว่าจะส่งออกในขณะที่อัลกอริทึมทำงาน)( P, Q )D
2.2 สำหรับแต่ละขอบทำงานF ( s , T , G - { ยูวี} , * D )คุณv ∈ E( P∪ Q )F( s , t , G - { u v } ,* * * *D )
ตอนนี้เพื่อระบุเส้นทางทั้งหมดของคุณสร้างที่ว่างเปล่าและแต่ละคู่s , เสื้อ∈ V ( G )กับs < T (ถ้ากราฟจะไม่มีทิศทาง, s ≠ เสื้ออื่น ๆ ) เรียกF ( s , T , G , * D ) คุณจะส่งออกทุกเส้นทางในครั้งแรกที่คุณเห็นพวกเขาและคุณจะมีโครงสร้างข้อมูลที่สามารถค้นหาได้ที่มีเส้นทางทั้งหมดเมื่อคุณทำเสร็จแล้ว โปรดทราบว่าอัลกอริทึมนี้ยังทำงานในเวลาพหุนามในขนาดของอินพุต + เอาต์พุต (เช่นเดียวกับอัลกอริทึมการหน่วงเวลาพหุนามใด ๆ )Ds , t ∈ V( G )s < ts ≠ tF( s , t , G , ∗ D )
PSPCEPSPCE