Documentos de Académico
Documentos de Profesional
Documentos de Cultura
6 Dijkstra
6 Dijkstra
1 Deptartamento de Matemática
26 de octubre de 2020
1 D EFINICIONES Y EJEMPLOS
2 A LGORITMO DE D IJKSTRA
1 D EFINICIONES Y EJEMPLOS
2 A LGORITMO DE D IJKSTRA
b 7
h 4
e
5 4
f 4
3
6 3 g
4 13
4 2
a 8
7 d
H
c
9
D EFINICI ÓN
Sean a, b ∈ V tales que existe un camino dirigido de a hacia b en G.
Llamamos camino más corto de a a b al a − b camino dirigido P para el cual el
valor ∑e∈E(P) p(e) es el menor posible.
Definimos la función d : V × V → R+ ∪ {∞} tal que d(a, b) = ∑e∈E(P) p(e)
cuando P es el a − b camino más corto, y d(a, b) = ∞ cuando no existe un
a − b camino en G. El valor d(a, b) es llamado distancia de a hacia b. Además
definimos d(a, a) = 0 para todo a ∈ V .
Ejemplo:
8
f
c
9
6
4
6
g
1 11
5 4
b 7 4
a
3 h
Ejemplo (cont.):
8
f
c
9
6
4
6
g
1 11
5 4
b 7 4
a
3 h
O BJETIVO
1) Determinar d(v0 , v) para cualquier v ∈ V .
2) Obtener camino dirigido más corto de v0 a v si d(v0 , v) < ∞.
D EFINICI ÓN
La distancia de v0 a S̄ es
Veamos un ejemplo:
8
f
c
9
6
4
6 g
11
5 4
b 7 4
a
S 3 h
a=vo
Observación Cuando d(v0 , S̄) < ∞, entonces d(v0 , S̄) representa la longitud
de un camino más corto dirigido de v0 a un vértice v ∈ S̄. Es decir, existe un
vértice vm+1 ∈ S̄ tal que d(v0 , S̄) = d(v0 , vm+1 ) y existe un camino simple
dirigido P : (v0 , v1 ), (v1 , v2 ), . . . , (vm−1 , vm ), (vm , vm+1 ) en G, que además es el
camino más corto entre v0 y vm+1 .
Veamos un ejemplo:
8
f
c
9
6
4
6 g
11
5 4
b 7 4
a
S 3 h
a=vo
Ejemplo(cont.)
8
f
c
9
6
4
6 g
11
5 4
b 7 4
a
S 3 h
a=vo
Ejemplo(cont.)
8
f
c
9
6
4
6 g
11
5 4
b 7 4
a
S 3 h
a=vo
L EMA
Sea G = (V, E) grafo dirigido y ponderado. Para cada arista (a, b) ∈ E,
p(a, b) ∈ R+ . Si (a, b) ∈ / E, p(a, b) = ∞. Sea v0 ∈ V y sea S ⊂ V tal que v0 ∈ S
y S̄ = V − S. Supongamos que d(v0 , S̄) = d(v0 , vm+1 ) y
P : (v0 , v1 ), (v1 , v2 ), . . . , (vm−1 , vm ), (vm , vm+1 ) es un camino más corto entre v0
y vm+1 en G.
Entonces:
{v0 , v1 , . . . , vm } ⊂ S,
Pk : (v0 , v1 ), (v1 , v2 ), . . . , (vk−1 , vk ) es el camino más corto entre v0 y vk
en G, para todo 1 ≤ k ≤ m.
Demostración
Ejercicio
C OROLARIO
Sea G = (V, E) grafo dirigido, conexo, ponderado. Sea v0 ∈ S ⊂ V y
S̄ = V − S. Entonces
Sigue que existen x ∈ S e y ∈ S̄ tales que d(v0 , S̄) = d(v0 , x) + p(x, y).
El algoritmo comienza con S0 = {v0 } y calcula
1 D EFINICIONES Y EJEMPLOS
2 A LGORITMO DE D IJKSTRA
Algoritmo de Dijkstra
3 (cont.)
I Sea vi+1 ∈ S̄i tal que L(vi+1 ) = min{L(v) : v ∈ S̄i } (si hay más de uno
elegir cualquiera).
I Sea Si+1 = Si ∪ {vi+1 }.
I i := i + 1. Si i = n − 1, las etiquetas del grafo tienen la información
buscada. Si i < n − 1 ir al Paso 2.
Vamos a aplicar el algoritmo en este grafo:
b 7
h 4
e
5 4
f 4
3
6 3 g
4 13
4 2
a 8
7 d
H
c
9
7 d
(L(c)=6,f) H
c
9
7 d
(L(c)=6,f) H
c
9
7 d
(L(c)=6,f) H
c
9
7 d
(L(c)=6,f) H
c
9
7 d
(L(c)=6,f) H
c
9
7 d
(L(c)=6,f) H
c
9
1 D EFINICIONES Y EJEMPLOS
2 A LGORITMO DE D IJKSTRA
D EFINICI ÓN
Dado G = (V, E) ponderado con n = |V|, sea f (n) el número máximo de
operaciones que realiza el Algoritmo para encontrar el camino más corto.
f (n) ∈ O(n2 ).