Es una variante del algoritmo de Dijkstra.