Dijkstra
Also known as: Dijkstra's algorithm, Dijkstra shortest path
Dijkstra’s algorithm computes single-source shortest paths on a directed or undirected graph with nonnegative edge weights. It repeatedly settles the unsettled node with smallest tentative distance (greedy choice), then relaxes its outgoing edges.
With a binary heap / priority queue, time is $O((V + E) \log V)$ (or $O(E + V \log V)$ with a Fibonacci heap in theory). Nonnegative weights are required; negative edges need Bellman-Ford.
When every edge weight is $1$, Dijkstra specializes to BFS. In code, the decrease-key vs “insert duplicates and skip stale entries” detail is the usual implementation fork.