Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmo de Dijkstra
Pasos
Sea x el nodo inicial (nodo fuente del grafo), un vector D de tamaño N guardará al final
del algoritmo las distancias desde x al resto de los nodos.
1. Inicializar todas las distancias en D con un valor infinito relativo (∞,-) ya que son
desconocidas al principio, exceptuando la de x que se debe colocar en 0 debido a que la
distancia de x a x sería 0 (0,-).
2. Sea a = x (tomamos a como nodo actual).
3. Recorremos todos los nodos adyacentes de a, excepto los nodos marcados, llamaremos
a estos vi
4. Si la distancia desde x hasta vi guardada en D es mayor que la distancia desde x hasta
a sumada a la distancia desde a hasta vi; ésta se sustituye con la segunda nombrada, esto
es: si (Di > Da + d(a, vi)) entonces Di = Da + d(a, vi)
5. Marcamos como completo el nodo a.
6. Tomamos como próximo nodo actual el de menor valor en D (puede hacerse
almacenando los valores en una cola de prioridad) y volvemos al paso 3 mientras existan
nodos no marcados.
7. Una vez terminado al algoritmo, D estará completamente lleno
Ejemplo
Teniendo en cuenta la siguiente red, que tiene como origen el nodo 1:
Bermudez Errazuriz Ruddy
Iteración 0
En este paso, asignamos una etiqueta permanente para el nodo origen. Recordemos que
la etiqueta se compone por un valor acumulado, que en este caso debe ser 0, ya que es el
punto base y que no existe procedencia:
Iteración 1
En este paso, evaluamos a cuáles nodos se puede llegar desde el nodo 1. En este caso se
puede llegar a los nodos 2 y 3. De manera que debemos asignar las etiquetas para cada
nodo:
En este caso, podemos observar que la etiqueta del nodo 3, ya contiene el menor valor
acumulado posible para llegar a este. Ya que 30 es la mínima distancia posible, toda vez
que para llegar al nodo 3 por medio del nodo 2, tendrá que recorrer como mínimo el valor
absoluto del arco que une el origen con el nodo 2 = 100. Así entonces, la etiqueta del
nodo 3 pasa a ser permanente.
Bermudez Errazuriz Ruddy
Tabulamos la iteración 1:
Iteración 2:
En este paso, evaluamos las posibles salidas desde el nodo 3, es decir los nodos 4 y 5. De
manera que debemos asignar las etiquetas para cada nodo:
Etiqueta nodo 4 = [valor acumulado, procedencia] iteración
Iteración 3:
En este paso, evaluamos las posibles salidas desde el nodo 4, es decir los nodos 2 y 5. De
manera que debemos asignar las etiquetas para cada nodo:
En este caso, podemos observar que el nodo 2 ahora cuenta con 2 etiquetas temporales, y
definitivas, ya que no existe otra ruta hacia dicho nodo. De manera que se elige la etiqueta
que tenga el menor valor acumulado. Así entonces, la etiqueta del nodo 2 con procedencia
del nodo 4, pasa a ser permanente.
Bermudez Errazuriz Ruddy
Tabulamos la iteración 3:
Iteración 4:
En este paso, evaluamos las posibles salidas desde el nodo 2 y el nodo 5. Sin embargo, el
nodo 2 solo tiene un posible destino, el nodo 3, el cual ya tiene una etiqueta permanente,
de manera que no puede ser Re etiquetado. Ahora, evaluamos el nodo 5 y es un nodo que
no tiene destinos. Así entonces, su etiqueta temporal pasa a ser permanente, en este caso
cuenta con 2 etiquetas que tienen el mismo valor, es decir, alternativas óptimas. De esta
manera concluye el algoritmo de Dijkstra.
Bermudez Errazuriz Ruddy