|
|
Using the Dijkstra algorithm, it is possible to determine the shortest distance (or the least effort / lowest cost) between a start node and any other node in a graph. The idea of the algorithm is to continiously calculate the shortest distance beginning from a starting point, and to exclude longer distances when making an update. It consists of the following steps:
| 1: | function Dijkstra(Graph, source): | |
| 2: | for each vertex v in Graph: | // Initialization |
| 3: | dist[v] := infinity | // initial distance from source to vertex v is set to infinite |
| 4: | previous[v] := undefined | // Previous node in optimal path from source |
| 5: | dist[source] := 0 | // Distance from source to source |
| 6: | Q := the set of all nodes in Graph | // all nodes in the graph are unoptimized - thus are in Q |
| 7: | while Q is not empty: | // main loop |
| 8: | u := node in Q with smallest dist[ ] | |
| 9: | remove u from Q | |
| 10: | for each neighbor v of u: | // where v has not yet been removed from Q. |
| 11: | alt := dist[u] + dist_between(u, v) | |
| 12: | if alt < dist[v] | // Relax (u,v) |
| 13: | dist[v] := alt | |
| 14: | previous[v] := u | |
| 15: | return previous[ ] |