Dijkstra Shortest Path Algorithm ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยบูรพา
ตัวอย่างสำหรับ Dijkstra’s Algorithm เริ่มต้น 4 6 A A B C D(v) Pred(v) A infinity 7 3 5 5 B infinity 3 C infinity F D D infinity 4 E infinity 7 5 F infinity G infinity G E 4
รอบที่ 1 4 6 7 3 5 5 A 3 4 7 5 4 รอบที่ โหนดที่มีสีแดง Adjacency Node Arc ที่พิจารณา Weight(i,j) Weight(i,j)+d(i) d(v) 1 A B (A,B) 4 4 4 F (A,F) 5 5 5 เลือก B 4 6 A B B C D(v) Pred(v) A 7 3 5 5 A B 4 infinity 3 C infinity F D D infinity 4 E infinity 7 5 F infinity G infinity G E 4
รอบที่ 2 4 6 7 3 5 5 A 3 4 7 5 A 4 รอบที่ โหนดที่มีสีแดง Adjacency Node Arc ที่พิจารณา Weight(i,j) Weight(i,j)+d(i) d(v) 2 A,B C (B,C) 6 10 10 F (A,F) 5 5 5 (B,F) 3 7 5 4 6 A B B C D(v) Pred(v) A เลือก F 7 3 5 5 A B 4 3 C infinity F F D D infinity 4 E infinity 7 5 A F 5 infinity G infinity G E 4
รอบที่ 3 4 6 7 3 5 5 A 3 F 4 7 5 A 4 รอบที่ โหนดที่มีสีแดง Adjacency Node Arc ที่พิจารณา Weight(i,j) Weight(i,j)+d(i) d(v) 3 A,B,F C (B,C) 6 10 10 D (F,D) 3 8 8 E (F,E) 4 9 9 G (F,G) 7 12 12 4 6 A B B C D(v) Pred(v) A 7 3 5 5 A เลือก D B 4 3 C infinity F F D D F D infinity 8 4 E infinity 7 5 A F 5 G infinity G E 4
รอบที่ 4 4 6 7 3 5 5 A 3 F F 4 7 5 A 4 รอบที่ โหนดที่มีสีแดง Adjacency Node Arc ที่พิจารณา Weight(i,j) Weight(i,j)+d(i) d(v) 4 A,B,D,F C (B,C) 6 10 10 (D,C) 5 13 10 E (F,E) 4 9 9 (D,E) 5 13 9 G (F,G) 7 12 12 4 6 A B B C D(v) Pred(v) A 7 3 5 5 A B 4 3 C infinity F F D D F D 8 F 4 E infinity 9 7 5 A F 5 เลือก E G infinity G E E 4
รอบที่ 5 4 6 7 3 5 5 A B 3 F F 4 7 5 A 4 รอบที่ โหนดที่มีสีแดง Adjacency Node Arc ที่พิจารณา Weight(i,j) Weight(i,j)+d(i) d(v) 5 A,B,D,E,F C (B,C) 6 10 10 (D,C) 5 13 10 G (E,G) 4 13 12 (F,G) 7 12 12 เลือก C 4 6 A B B C C D(v) Pred(v) A 7 3 5 5 A B 4 B 3 C 10 infinity F F D D F D 8 F 4 E 9 7 5 A F 5 G infinity G E E 4
รอบที่ 6 4 6 7 3 5 5 A B 3 F F 7 4 5 A 4 รอบที่ โหนดที่มีสีแดง Adjacency Node Arc ที่พิจารณา Weight(i,j) Weight(i,j)+d(i) d(v) 6 A,B,C,D,E,F G (E,G) 4 13 12 (F,G) 7 12 12 4 6 A B B C C D(v) Pred(v) A 7 3 5 5 A B 4 B 3 C 10 F F D D F D 8 F 7 4 E 9 5 เลือก G A F 5 G infinity G G E E 4
รอบที่ 6 4 6 7 3 5 5 A B 3 F F 7 4 5 A F 4 รอบที่ โหนดที่มีสีแดง Adjacency Node Arc ที่พิจารณา Weight(i,j) Weight(i,j)+d(i) d(v) 6 A,B,C,D,E,F G (E,G) 4 13 12 (F,G) 7 12 12 4 6 A B B C C D(v) Pred(v) A 7 3 5 5 A B 4 B 3 C 10 F F D D F D 8 F 7 4 E 9 5 A F 5 F G 12 G G E E 4
Dijkstra’s Algorithm ( ต่อ ) เราจะได้ระยะทางที่สั้นที่สุดจากเมือง A ยังเมืองต่างๆ เช่น ถ้าเราต้องการเดินทางจากเมือง A ไปยังเมือง E ต้องเดินทางผ่านเมือง F แล้วมีระยะทางในการเดินทาง เท่ากับ 9
สรุป Dijkstra’s Algorithm เป็นขั้นตอนวิธีที่ใช้ในการหาเส้นทางที่สั้นที่สุด ที่ใช้เวลาในการค้นหาเส้นทางที่สั้นที่สุดน้อย และมีขั้นตอนวิธีที่ไม่ยุ่งยากซับซ้อนมากจนเกินไป และเราสามารถเอา dijkstra’s algorithm มาประยุกต์ใช้ในงานต่างๆได้ ไม่ว่าจะเป็นการค้นหาเส้นทางที่สั้นที่สุดบนแผนที่หรือไปประยุกต์ใช้ในงานทางด้าน network ได้เป็นต้น
เอกสารอ้างอิง http://www.cs.kau.se/~donald/ds_alg/lectures/graphs1.ppt http://www.cs.kau.se/cs/education/courses/davb03/lectures/graphs1.pdf http://www.cs.vassar.edu/~walter/cs241index/lectures/PDF/graphs.pdf http://www.cs.nott.ac.uk/~mzt/G6DSWE2002/pdfs/graphs4.pdf http://www.cs.montana.edu/~defrance/classes/spring-2003/cs223/Lectures/graphs.html http://www.cs.kau.se/~donald/ds_alg/lectures/graphs1.ppt
คำถาม ? Question