También llamado algoritmo de caminos mínimos, es un algoritmo para la determinación del camino más corto dado un vértice origen al resto de vértices en un grafo dirigido y con pesos en cada arista. Su nombre se refiere a Edsger Dijkstra, quien lo describió por primera vez en 1959.
La idea subyacente en este algoritmo consiste en ir explorando todos los caminos más cortos que parten del vértice origen y que llevan a todos los demás vértices; cuando se obtiene el camino más corto desde el vértice origen, al resto de vértices que componen el grafo, el algoritmo se detiene. El algoritmo es una especialización de la búsqueda de costo uniforme, y como tal, no funciona en grafos con aristas de costo negativo (al elegir siempre el nodo con distancia menor, pueden quedar excluidos de la búsqueda nodos que en próximas iteraciones bajarían el costo general del camino al pasar por una arista con costo negativo).
Sea L={1}
Para i=1 hasta n
Sea D(i)=W(1,i)
Fin_para
Mientras V(G)/L diferente a vacio
Elija K en V(G)/L con D(K) tan pequeño como sea posible
Ponga K en L
Para cada J en V(G)/L
Si D(j) > D(K) + W(K,j)
Reemplace D(j) * D(k) + W(K,j)
Termina para
Fin_mientras Fin