Problemas de la ruta más corta

Anuncio
Problemas de la ruta más
corta
Algoritmo de Dijkstra’
Int
od ccion
Introduccion
Muchos problemas pueden ser
modelados usando graficas con pesos
asignados a las conexiones:
„
„
„
Tiempos
p de vuelo p
para las aerolineas
Costos de telecomunicaciones
Tiempos
p de respuesta
p
para redes de
p
computadoras.
Tok o Subway
Tokyo
S b a Map
Algo
itmo de Dijkst
a
Algoritmo
Dijkstra
Sea ui la distancia más corta del nodo fuente 0 hasta el nodo i y
se define dij como la longitud de arco (i, j). Entonces el
algoritmo define la etiqueta de un nodo inmediato posterior j
como
[uj, i]=[ui+ dij, i]
La etiqueta del nodo de inicio es [0, -], que indica que el nodo
no tiene p
predecesor.
Algo itmo de Dijkstra
Algoritmo
Dijkst a
1. Las etiquetas de nodos son de dos clases: temporales y
permanentes. Una etiqueta temporal se modifica si se puede
encontrar una ruta más corta a un nodo. Cuando se ve que no
se pueden
d encontrar mejores,
j
cambia
bi ell estado
d de
d la
l etiqueta
i
temporal a permanente.
2. Etiquetar el nodo fuente (nodo 1) con la etiqueta permanente
[0 -].
[0,
] Igualar
I
l i=1.
i 1
3. Calcular las etiquetas temporales [ui+ dij, i] para cada nodo j al
que pueda llegarse desde el nodo i, siempre y cuando j no
t
tenga
etiqueta
ti
t permanente.
t Si ell nodo
d j ya esta
t etiquetado
ti
t d con
[uj, k] por otro nodo k, y si ui+ dij < uj sustituir [uj, k] por [ui+
dij, i]
Algo itmo de Dijkstra
Algoritmo
Dijkst a
5. Si todos los nodos tienen etiquetas permanentes, detenerse.
En caso contrario seleccionar la etiqueta [ur, s] que tenga la
distancia más corta (ur) entre todas las etiquetas temporales
(l empates se rompen arbitrariamente).
(los
bi
i
)
6. Hacer i=r
7. Repetir desde el paso 3
Distancia acumulada Nodo de procedencia
Al nodo
d inicial
i i i l
anterior
t i
Número d
Nú
de
iteración
Ejemplo 1
Ejemplo 2
2
2
1
3
1
5
3
3
2
3
3
2
6
1
4
2
7
3
Eje cicio 2
Ejercicio
Descargar