1 / 23

Dijkstra’s Algorithm

Solve single-source shortest path problem in directed weighted graph using Dijkstra’s algorithm. Processed, partially processed, unprocessed nodes shown in colors, search tree pointers displayed. Heap structure used to store partially processed nodes.

mccranie
Download Presentation

Dijkstra’s Algorithm

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Dijkstra’s Algorithm We are given a directed weighted graph There are no negative weights. We need to solve the single source shortest path problem. The source is given to be 1.

  2. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 Processed nodes will be shown in red. Partially processed nodes will be shown in green. The partially processed nodes will be kept in a heap, where the key is value. Unprocessed nodes will be shown in black. Search tree pointers will be shown in red. The back pointers are the reverse of the search tree pointers.

  3. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 value 0 back *

  4. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 11:1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 9:2 20:27 value 0 2 1 34 27 back * 1 1 1 1 17:34 The value of a node is the weight of the shortest path found so far.

  5. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 9:2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 14:4 20:27 value 0 32 2 1 4 34 27 back * 11 1 1 11 1 1 17:34 6:32

  6. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 14:4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 10:4 20:27 value 0 32 2 4 1 4 34 27 back * 11 1 9 1 11 1 1 17:34 6:32

  7. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 10:4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 12:6 20:27 value 0 32 2 4 1 6 4 34 27 back * 11 1 9 1 14 11 1 1 17:34 6:32

  8. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 12:6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 6:32 20:8 value 0 32 2 4 1 6 4 34 8 back * 11 1 9 1 14 11 1 10 17:34 A better path to 20 is found; its value and backpointer are updated.

  9. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 20:8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 5:10 17:34 value 0 10 32 2 4 1 6 4 34 8 back * 12 11 1 9 1 14 11 1 10 6:32

  10. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 5:10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 3:15 19:28 value 0 15 10 32 2 4 1 6 4 30 34 28 8 back * 20 12 11 1 9 1 14 11 20 1 20 10 6:32 15:30 17:34

  11. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 3:14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 15:30 2:18 value 0 16 14 10 32 2 4 1 6 4 30 34 28 8 back * 5 5 12 11 1 9 1 14 11 20 1 20 10 6:32 17:34 19:28

  12. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 2:18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 15:30 8:22 value 0 16 14 10 32 22 2 4 1 6 4 30 34 28 8 back * 5 5 12 11 3 1 9 1 14 11 20 1 20 10 6:32 17:34 19:28

  13. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 8:18 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 15:30 7:25 value 0 16 14 10 32 25 18 2 4 1 6 4 30 34 28 8 back * 5 5 12 11 2 2 1 9 1 14 11 20 1 20 10 6:32 17:34 19:28

  14. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 7:25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 15:30 19:27 value 0 16 14 10 32 25 18 2 4 1 6 4 30 34 27 8 back * 5 5 12 11 2 2 1 9 1 14 11 20 1 8 10 6:32 17:34

  15. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 19:26 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 6:28 17:34 value 0 16 14 10 28 25 18 2 4 1 6 4 30 34 26 8 back * 5 5 12 7 2 2 1 9 1 14 11 20 1 7 10 15:30

  16. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 6:28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 15:30 17:30 value 0 16 14 10 28 25 18 2 4 1 6 4 30 30 26 8 back * 5 5 12 7 2 2 1 9 1 14 11 20 19 7 10

  17. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 17:30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 15:30 18:35 value 0 16 14 10 28 25 18 2 4 1 6 4 30 30 35 26 8 back * 5 5 12 7 2 2 1 9 1 14 11 20 19 6 7 10

  18. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 15:30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 18:35 value 0 16 14 10 28 25 18 2 4 1 6 4 30 30 35 26 8 back * 5 5 12 7 2 2 1 9 1 14 11 20 19 6 7 10

  19. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 18:35 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 4:37 16:35 value 0 16 14 37 10 28 25 18 2 4 1 6 4 30 35 30 35 26 8 back * 5 5 15 12 7 2 2 1 9 1 14 11 20 15 19 6 7 10

  20. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 16:35 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 4:37 value 0 16 14 37 10 28 25 18 2 4 1 6 4 30 35 30 26 8 back * 5 5 15 12 7 2 2 1 9 1 14 11 20 15 19 7 10

  21. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 4:37 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 13:40 value 0 16 14 37 10 28 25 18 2 4 1 6 40 4 30 35 30 35 26 8 back * 5 5 15 12 7 2 2 1 9 1 14 16 11 20 15 19 6 7 10

  22. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap 13:40 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 value 0 16 14 37 10 28 25 18 2 4 1 6 40 4 30 35 30 35 26 8 back * 5 5 15 12 7 2 2 1 9 1 14 16 11 20 15 19 6 7 10

  23. 29 34 27 22 32 26 27 20 2 2 4 7 8 9 4 3 5 1 9 10 20 3 8 19 17 15 16 9 5 8 7 6 3 6 1 1 1 3 7 3 5 5 7 6 2 2 4 8 2 8 1 6 5 5 5 5 5 5 2 7 2 8 6 2 2 6 3 3 9 7 9 4 4 3 3 2 4 6 9 3 7 8 8 11 14 12 5 2 7 6 18 4 13 3 4 7 7 3 2 1 1 2 22 28 30 35 31 31 heap empty 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 value 0 16 14 37 10 28 25 18 2 4 1 6 40 4 30 35 30 35 26 8 back * 5 5 15 12 7 2 2 1 9 1 14 16 11 20 15 19 6 7 10 The heap is empty and we are done.

More Related