= Dijkstra's Algorithm = Dijkstra's Algorithm was created by Edsger W. Dijkstra, and is an algorithm for finding the *shortest path between any two nodes in a graph*. This can be thought of finding the best route from point A to point B on something like a road map. This is also called a *routing protocol*. Dijkstra's Algorithm is a [[greedy_algorithm]]. == Algorithm == 1) Choose some initial node to start from. Create a set of distances from this node to all other nodes, and set their distance to infinite. This algorithm will change these distances and attempt to find the fastest way to each node. 2) Mark all nodes as 'unvisited'. All of these nodes are part of a set. 3) For the current node, consider all of its unvisited neighbors and calculate the distance from the start node to this node. - For example, if the current node is marked as a distance of 6 from the starting node, and the edge of neighbor _N1_ has a distance of 2, then N1's distance is 6+2 = 8. If the node was previously marked as having a different value, keep the smallest of the two values. 4) Once we have checked all of a nodes neighbors, remove it from the unvisited set. A visited node is never checked again. 5) If searching for a specific node, the algorithm can stop when the desired node is no longer in the 'unvisted' set. 6) If not, select the unvisted node with the smalled distance, and set it as the current node, and go back to step 3