การหาเส้นทางที่สั้นที่สุด ค32211 คณิตศาสตร์สำหรับคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ความแตกต่างของ Minimum Spaning Tree กับ Dijkstra’s Algorithm
ตัวอย่างการหาต้นไม้กระจายทั่วกราฟที่มีน้ำหนักต่ำสุด V A B C D E T น้ำหนัก U A 2 4 7 E,C 1 E C B 5 D C 6 E,B 3 1 3 B,A 2 B E A,D 4 A D
Dijkstra’s Algorithm A 1 2 7 B 5 D C 6 1 1 1 E Z
Edsger Wybe Dijkstra 1930 - 2002
Dijkstra’s Algorithm เป็นวิธีการที่ใช้ในการหาเส้นทางที่สั้นที่สุด จาก จุดเริ่มต้น ไปยังจุดสุดท้าย อาศัยหลักการ update ระยะทาง หากระยะทาง ไปถึงจุดนั้นใหม่สั้นกว่าเส้นทางเดิม ให้ใช้เส้นทาง ใหม่แทน
Dijkstra’s Algorithm Set ค่าเริ่มต้นให้ทุกจุดมีค่าเป็น อนันต์ While (เลือกยังไม่ครบทุกโหนด) { เลือกจุดที่สั้นที่สุดใส่ list ส่งข้อมูลไปยังจุดอื่นๆที่จุดนั้นเชื่อมต่ออยู่ หากเส้นทางใหม่สั้นกว่าให้ใช้เส้นทางใหม่ }
ตัวอย่างการหาเส้นทางที่สั้นที่สุด จาก a-z b c d e z 2 3 5 1 4 S a b c d e z - 0 ∞ ∞ ∞ ∞ ∞ a 0 2(a) 3(a) ∞ ∞ ∞ a,b 0 2(a) 3(a) 7(a,b) 4(a,b) ∞ a,b,c 0 2(a) 3(a) 7(a,b) 4(a,b) ∞ a,b,c,e 0 2(a) 3(a) 5(a,b,e) 4(a,b) 8(a,b,e) a,b,c,e,d 0 2(a) 3(a) 5(a,b,e) 4(a,b) 7(a,b,e,d) a,b,c,e,d,z
5 5 a b c d e f 4 3 2 6 1 5 g z 7 Ex2 S a b c d e f g z - 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ a 0 4(a) 3(a) ∞ ∞ ∞ ∞ ∞ a,c 0 4(a) 3(a) 6(a,c) 9(a,c) ∞ ∞ ∞ a,c,b 0 4(a) 3(a) 6(a,c) 9(a,c) ∞ ∞ ∞ a,c,b,d 0 4(a) 3(a) 6(a,c) 7(a,c,d) 11(a,c,d) ∞ ∞ a,c,b,d ,e 0 4(a) 3(a) 6(a,c) 7(a,c,d) 11(a,c,d) 12(a,c,d,e) ∞ a,c,b,d ,e,f 0 4(a) 3(a) 6(a,c) 7(a,c,d) 11(a,c,d) 12(a,c,d,e) 18(a,c,d,f) a,c,b,d ,e,f,g 0 4(a) 3(a) 6(a,c) 7(a,c,d) 11(a,c,d) 12(a,c,d,e) 16(a,c,d,e,g) a,c,b,d ,e,f,g,z