การค้นหาเส้นทางที่สั้นที่สุดในที่ที่มีวัฏจักรลบ


13

เมื่อพิจารณาจากกราฟวงจรที่น้ำหนักของแต่ละขอบอาจเป็นลบแนวคิดของ "เส้นทางที่สั้นที่สุด" นั้นจะสมเหตุสมผลหากไม่มีวงจรเชิงลบและในกรณีนี้คุณสามารถใช้อัลกอรึทึมของ Bellman-Ford ได้

อย่างไรก็ตามฉันสนใจที่จะค้นหาเส้นทางที่สั้นที่สุดระหว่างจุดยอดสองจุดที่ไม่เกี่ยวข้องกับการขี่จักรยาน (เช่น. ภายใต้ข้อ จำกัด ที่คุณไม่สามารถเยี่ยมชมจุดสุดยอดเดียวกันได้สองครั้ง) ปัญหานี้เรียนดีหรือไม่? ตัวแปรของอัลกอรึทึมของ Bellman-Ford สามารถใช้ได้หรือไม่และถ้าไม่มีวิธีอื่น

ฉันยังสนใจในปัญหาทุกคู่ที่เทียบเท่าซึ่งฉันอาจใช้ Floyd – Warshall

คำตอบ:


23

เส้นทางที่ไม่มีจุดยอดซ้ำ ๆ เรียกว่าเส้นทางแบบง่ายดังนั้นคุณจึงมองหาเส้นทางที่สั้นที่สุดในกราฟที่มีวงจรเป็นลบ

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

ดังนั้นปัญหาของคุณคือ NP-Hard


1
นี่คือคำตอบที่สวยงาม ฉันถามคน IRL นี้หลายคนโดยไม่มีวิธีแก้ปัญหาใด ๆ และเมื่อฉันอธิบายสิ่งนี้ให้พวกเขาปฏิกิริยาของพวกเขาเหมือนกับของฉัน - "แน่นอนฉันรู้สึกงี่เง่าตอนนี้"
jleahy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.