Dijkstra's - from a starting node, visit all adjacent nodes and update their shortest distance, and record the node they were visited from. Then visit the next unvisited node with the shortest distance. Continue to update distances if they are shorter. Once a node is visited, we know the shortest path to it has been found.