อัลกอริทึมของ Dijkstra จะใช้เมื่อคุณมีแหล่งข้อมูลเดียวและคุณต้องการทราบเส้นทางที่เล็กที่สุดจากโหนดหนึ่งไปยังอีกโหนดหนึ่ง แต่ล้มเหลว [ในกราฟที่มีขอบลบ]
ssprevious[v]
โวลต์
พฤติกรรมของอัลกอริทึมของ Dijkstra ในกราฟที่มีขอบเป็นลบนั้นขึ้นอยู่กับตัวแปรที่แม่นยำภายใต้การสนทนา อัลกอริทึมบางอย่างเช่นเดียวกับในวิกิพีเดียทำงานได้อย่างรวดเร็วเสมอ แต่ไม่คำนวณเส้นทางที่สั้นที่สุดเมื่อมีขอบลบ ตัวแปรอื่น ๆ เช่นหนึ่งในบันทึกการบรรยายเหล่านี้จะคำนวณเส้นทางที่สั้นที่สุดอย่างถูกต้องเสมอ (เว้นแต่จะมีวัฏจักรเชิงลบที่สามารถเข้าถึงได้จากแหล่งที่มา) แต่อาจต้องใช้เวลาชี้แจงในกรณีที่เลวร้ายที่สุดหากมีขอบลบ
อัลกอริทึมของ Floyd-Warshall ใช้เมื่อทุกโหนดใด ๆ สามารถเป็นแหล่งกำเนิดได้ดังนั้นคุณจึงต้องการระยะทางที่สั้นที่สุดในการเข้าถึงโหนดปลายทางใด ๆ จากโหนดต้นทางใด ๆ สิ่งนี้จะล้มเหลวก็ต่อเมื่อมีรอบการลบเท่านั้น
ถูกต้อง. Floyd-Warshall เป็นตัวอย่างหนึ่งของอัลกอริธึมพา ธ ที่สั้นที่สุดของคู่ทั้งหมดซึ่งหมายความว่าคำนวณเส้นทางที่สั้นที่สุดระหว่างทุก ๆโหนดคู่ อีกตัวอย่างหนึ่งคือ "สำหรับแต่ละโหนด v ให้รัน Dijkstra ด้วย v เป็นโหนดต้นทาง" มีอีกหลายคน
Bellman-Ford ใช้เหมือนของ Dijkstra เมื่อมีเพียงแหล่งเดียว สิ่งนี้สามารถรองรับน้ำหนักเชิงลบและการทำงานของมันเหมือนกับของ Floyd-Warshall ยกเว้นแหล่งเดียวใช่ไหม
O ( V3)O ( V2E)O ( VE)เวลาสำหรับแต่ละจุดสุดยอดแหล่งที่มา
สำหรับรายละเอียดเพิ่มเติมโปรดอ่านตำราเรียนอัลกอริทึมที่คุณชื่นชอบ (คุณมีตำราอัลกอริทึมที่ชื่นชอบใช่ไหม?)