SlideShare una empresa de Scribd logo
1 de 9
Descargar para leer sin conexión
Acerca del Algoritmo de Dijkstra
Alvaro H. Salas S.*
Resumen
In this paper we prove the correctness of Dijkstra’s algorithm. We also discuss it and at the
end we show an application.
En este artı́culo realizamos una descripción detallada del algoritmo de Dijkstra, justificando su
correctitud, discutiéndolo y mostrando algunas de sus aplicaciones.
Palabras claves: grafo, digrafo, digrafo ponderado, digrafo pesado, peso de un camino, camino de
coste mı́nimo, camino minimal.
1. Introduccción
Dado un grafo con etiquetas no negativas, se trata de calcular el coste del camino mı́nimo desde
un vértice dado al resto (ing., single-source shortest paths). La utilidad de un procedimiento que
solucione esta cuestión es clara: el caso más habitual es disponer de un grafo que represente una
distribución geográfica, donde las aristas den el coste (en precio, en distancia o similares) de la
conexión entre dos lugares y sea necesario averiguar el camino más corto para llegar a un punto
partiendo de otro (es decir, determinar la secuencia de aristas para llegar a un nodo a partir del
otro con un coste mı́nimo). La solución más eficiente a este problema es el denominado algoritmo de
Dijkstra, en honor a su creador, E.W. Dijkstra. Formulado en 1959 en .A
note on two problems in
connexion with graphs”, Numerical Mathematica, 1, pp. 269-271, sobre grafos dirigidos, el algoritmo
de Dijkstra es un algoritmo voraz (algoritmo goloso) que genera uno a uno los caminos de un nodo
a al resto por orden creciente de longitud; usa un conjunto S de vértices donde, a cada paso del
algoritmo, se guardan los nodos para los que ya se sabe el camino mı́nimo y devuelve un vector
indexado por vértices, de modo que para cada uno de estos vértices podemos determinar el coste
de un camino más económico (de peso mı́nimo) de a a tales vértices. Cada vez que se incorpora un
nodo a la solución, se comprueba si los caminos todavı́a no definitivos se pueden acortar pasando
por él.
*Departamento de Matemáticas, Universidad de Caldas, Departamento de Matemáticas, Universidad Nacional de
Colombia, Manizales. email : asalash2002@yahoo.com
1
arXiv:0810.0075v1
[cs.DS]
1
Oct
2008
2. Preliminares
Recordemos que un digrafo (eng. directed graph) es una pareja G = (V, E), en donde V es un
conjunto y E es una relación binaria irreflexiva sobre V , es decir, un subconjunto de V × V tal que
(x, x) /
∈ E para todo x ∈ E. Decimos que V es el conjunto de vértices y que E es el conjunto de
aristas (eng. edges). En los sucesivo supondremos que V es finito. Dada una arista (u, v), decimos
que los vértices u y v son adyacentes y que la arista es incidente en ellos (u, v). Se llama camino de
u a v, denotado por u − v, a toda sucesión finita de vértices
u = x0, x1, . . . , xi, xi+1, . . . , xm−1, xm = v, (2.1)
de modo que (xi, xi+1) es una arista para cada i = 0, 1, . . . , m−1. Por definición, (2.1) es un camino
Figura 1: Un camino u − v
de longitud m, u es su vértice inicial, v es su vértice terminal y x1, x2,..., xm−1 son sus vértices
internos.
Un digrafo es ponderado o pesado, si a cada arista (u, v) se le asigna un número real, denotado por
p(u, v) y llamado su peso. En lo sucesivo consideraremos un digrafo ponderado G con pesos positivos
: p(u, v) > 0 para toda arista (u, v) ∈ E. El peso del camino (2.1) se define como la suma de los
pesos de sus aristas :
p(u − v) = p(x0, x1) + p(x1, x2) + · · · + p(xm−1, xm). (2.2)
Un camino es de coste mı́nimo si no es posible encontrar ningún camino de u a v cuyo peso sea
menor que p(u − v). En otras palabras, dado cualquier camino de u a v
u = y0, y1, . . . , yk−1, yk = v,
se debe tener
p(u, y1) + p(y1, y2) + · · · + p(yk−1, v) ≥ p(u − v).
2
3. El algoritmo de Dijkstra. Descripción y sustentación de
su correctitud.
Sea G = (V, E) un digrafo ponderado con pesos positivos de n vértices. Supongamos que a y z
son dos vértices en V , de modo que z 6= a y existe al menos un camino de a a z. Nuestro principal
objetivo consiste en hallar un camino a − z de coste mı́nimo. Este problema se resuelve de manera
eficiente mediante el algoritmo de Dijkstra. El algoritmo inicia en el vértice a y construye un camino
de coste mı́nimo
a = u0, u1, . . . , um−1, um = z,
tal que a − ui es un camino de coste mı́nimo para cada i = 0, 1, . . . , m.
3.1. Algoritmo de Dijkstra
Entrada: Grafo ponderado dirigido de n vértices con pesos positivos; a y z vértices distintos tales
que existe algún camino de a a z.
Salida: Peso de un camino de coste mı́nimo de a a z.
Paso 1 : Definimos S0 = ∅, T0 = V . Asignamos a cada vértice v en V una etiqueta (eng.
label) como sigue : L(v) = 0 si v = a y L(v) = ∞ para v 6= a.
Paso 2 : Para i = 1, 2, . . . , n : Supongamos que hemos construido los conjuntos S0, S1,...,
Si−1. Hacemos Ti−1 = V  Si−1. Si z ∈ Si−1, definimos S = Si−1 y detenemos la construcción.
En caso contrario, escogemos el primer vértice u en Ti−1 con la menor eqtiqueta, es decir,
L(u) = mı́n{L(v) | v ∈ Ti−1}.
Definimos ui−1 = u, Si = Si−1 ∪{ui−1} = {u0, u1, . . . , ui−1} (decimos que u entra), Ti = V Si
y para cada vértice v en Ti adyacente a u cambiamos su etiqueta L(v) por la nueva etiqueta
mı́n{L(v), L(u) + p(u, v)} :
L(v) ← mı́n{L(v), L(u) + p(u, v)},
es decir, actualizamos la etiqueta de los ”vecinos”de u por fuera de Si.
Paso 3 : Si i = n, definimos S = Sn y nos detenemos. Si i < n, hacemos i = i + 1 y vamos al
Paso 2.
El algoritmo de Dijkstra termina en el momento en que encontramos el primer ı́ndice m para el cual
z ∈ Sm. En ese momento, S = Sm.
3
3.2. Correctitud del algoritmo de Dijktra
La justificación de la correctitud de este notable algoritmo se basa en el siguiente
Teorema 1 Al finalizar la ejecución del algoritmo de Dijkstra tenemos que, para todo u ∈ S con
u 6= a,
A. Cualquier camino a − u tiene peso al menos L(u) : L(u) ≤ p(a − u)
B. Existe un camino de a a u de peso igual a L(u). En particular, L(u) es finita : L(u) < ∞.
Demostración. Haremos la demostración por inducción sobre i ≥ 1. Sea i = 1. Inicialmente (esto
es, antes del Paso 2) S0 = ∅, T0 = V . Es claro que z /
∈ S0. De acuerdo al Paso 2, escogemos el vértice
a por cuanto su etiqueta es la menor (los demás vértices tienen etiqueta ∞ > 0), ası́ que el vértice
a = u0 entra y S1 = {u0}. Entonces T1 = V  S1. Por hipótesis, existe al menos un camino de a a z.
Sea
a = x0, x1, . . . , xm−1, xm = z (3.3)
dicho camino. Entonces x1 ∈ T1 es un vecino de u0, ası́ que el conjunto de los vecinos de u0 por
fuera de S0 es no vacı́o. De acuerdo al Paso 2, actualizamos las etiquetas de estos vecinos. Sea v
cualquiera de ellos. Su nueva etiqueta es
mı́n{L(v), L(a) + p(a, v)} = mı́n{∞, 0 + p(a, v)} = p(a, v).
Según esto, la etiqueta de v (que en este momento es ∞) se cambia por el peso de la arista (a, v).
Supongamos que u1 es un vecino con la menor etiqueta (el vecino más económico o más cercano a
u0 = a; puede haber más de uno, en cuyo caso podemos escoger cualquiera de ellos), esto es,
L(u1) = mı́n{p(a, v) | v ∈ T1, siendo v un vecino de a} = p(a, u1).
Sea (3.3) cualquier camino a − z. Tenemos:
L(u1) ≤ p(a, x1) ≤ p(a, x1) + p(x1, x2) + · · · + p(xm−1, z) = p(a − z),
de modo que la condición A se cumple para i = 1. De otro lado, B es verdadera, ya que a, u1 es un
camino a − u1 de peso p(a − u1) = p(a, u1) = L(u1).
De acuerdo con los anteriores argumentos, el teorema es válido para i = 1.
Supongamos que este teorema se cumple para todos los vértices ui ∈ S con 1 ≤ i ≤ k. Veamos que
este teorema también es válido para el vértice uk+1.
Consideremos cualquier camino de a a v = uk+1 (ver Figura 2). Veamos que L(v) ≤ p(a−v). Si esto
fuera falso, se tendrı́a L(v) > p(a − v). Supongamos que y es el primer vértice de este camino por
4
Figura 2: Un camino arbitrario u − v
fuera de Sk+1 y sea u el predecesor de y en dicho camino. Entonces u ∈ Sk+1 = {u0, u1, . . . , ..., uk}.
De acuerdo con nuestra hipótesis inductiva, L(u) ≤ p(a−u). Además, L(v) = L(uk+1) ≤ L(y), luego
L(v) ≤ L(y) ≤ L(u) + p(u, y) ≤ p(a − u) + p(u, y) = p(a − y) ≤ p(a − v) < L(v),
lo cual es una contradicción. En consecuencia, la parte A del teorema se cumple para i = k + 1.
Supongamos que en el camino (3.3) el vértice y = xj es el primero que se encuentra por fuera de
Sk+1 = {u0, u1, . . . , uk}. Ver Figura 3. Entonces y = xj es vecino de u = xj−1 ∈ Sk+1. Por hipótesis
Figura 3: Existencia de un camino de a hacia uk+1 de peso L(uk+1)
inductiva, existe un camino a, b, . . . , t, u de a a u de peso L(u), luego L(u) es finito. Cuando u entró a
S, la etiqueta de su vecino y fue actualizada, de modo que L(y) ≤ L(u)+p(u, y) < ∞. Ahora, ambos,
y y uk+1, están por fuera de Sk+1, ası́ que L(uk+1) ≤ L(y) < ∞. Inicialmente (esto es, antes del
Paso 2), el vértice uk+1 tenı́a etiqueta ∞ (observemos que uk+1 6= a, ya que a = u0 y k + 1 6= 0).
En el momento actual, por lo que acabamos de demostrar, este vértice tiene etiqueta finita. Esto
significa que en algún momento fue actualizada y cambió de ∞ a L(uj) + p(uj, uk+1) para algún j
con j ≤ k. Sin pérdida de generalidad, podemos suponer que este es el valor actual de L(uk+1), es
decir,
L(uk+1) = L(uj) + p(uj, uk+1). (3.4)
5
De acuerdo a nuestra hipótesis inductiva, existe un camino de a − uj de peso L(uj). Agregando a
este camino la arista (uj, uk+1) obtenemos un camino de peso L(uj) + p(uj, uk+1) = L(uk+1), de
modo que B también se satisface para i = k + 1. Teorema demostrado. 
Del teorema antwerior se sigue que :
a. El algoritmo termina.
En efecto, probemos por inducción sobre i ≥ 1 que los elementos de Si son distintos.
Para i = 1, S1 = {u0} y en este caso no hay nada que demostrar. Supongamos que todos
los elementos de Si son distintos para algún i ≥ 1, de modo que z /
∈ Si. Sea x el último
vértice en Si ⊆ S de un camino u − z y y su vecino. Cuando x entró a S, la etiqueat de y se
actualizó, luego L(y) ≤ L(x)  ∞. Por lo tanto, es posible escoger en Ti = V  Si un elemento
con etiqueta mı́nima finita ≤ L(y). Uno de ellos es precisamente el elemento ui. Entonces
definimos Si+1 = {u0, u1, . . . , ui−1, ui}. Es claro que todos los elementos de Si+1 son distintos.
Por consiguiente, i ≤ n y el algoritmo debe terminar.
b. L(u) es el peso de un camino de coste mı́nimo de a a u para todo u ∈ S  {a}.
En efecto, puede haber más de un camino de coste mı́nimo. Sin embargo, es fácil ver que todos
ellos tienen el mismo peso. Si consideramos uno de estos caminos, su peso q es menor o igual
que el peso del camino de a a u cuya existencia se garantiza en la parte B del teorema, esto
es, q ≤ L(u). De otro lado, según la parte A de este teorema, todo camino a − u tiene peso al
menos L(u), esto es, q ≥ L(u). Concluimos que q = L(u). En particular, tomando u = z ∈ S,
obtenemos que L(z) es el peso de un camino de coste mı́nimo de a hacia z.
c. Si um = z, entonces
L(u0) ≤ L(u1) ≤ · · · ≤ L(uj) ≤ L(uj+1) ≤ · · · ≤ L(um).
En efecto, antes de que los elementos uj y uj+1 entren a S = Sm, éstos se encuentran en
Tj = V  Sj. Se escoge uj por cuanto este es uno de los elementos con etiqueta mı́nima, luego
L(uj) ≤ L(uj+1).
4. Discusión
Supongamos que aplicamos el algoritmo de Dijkstra empezando en un vértice arbitrario a. En
calidad de z tomamos cualquier vértice distinto de a. Si existe un camino de a a z, el algoritmo
funciona. Supongamos que no existe tal camino. En este caso, z no pertenece a ninguno de los
conjuntos Si. Al aplicar los pasos del algoritmo, nos detenemos en el momento en que todas las
6
etiquetas de los vértices que aún no han entrado sea ∞. Por lo tanto, dados dos vértices arbitrarios
distintos a y z, al tomar a como vértice inicial, si ejecutamos los pasos del algoritmo, deteniéndonos
en el momento en que
mı́n{L(v) | v ∈ Ti} = ∞,
obtenemos un conjunto S ⊆ V de vértices. Si z /
∈ S, entonces no hay ningún camino a − z. En par-
ticular, si S = {a}, entonces no existe ninguna arista que parta de a, es decir, a no tiene vecinos. En
este caso decimos que a es un vértice aislado. Si S = V , entonces existe un camino de a a cualquier
otro vértice y las etiquetas finales de dichos vértices nos dan un camino de peso mı́nimo desde a.
Cabe anotar que el peso de un camino de coste mı́nimo de a a z puede ser distinto del peso de un
camino de coste mı́nimo de z a a. Por ejemplo, a y z pueden representar ciudades vecinas. Digamos
que el peso de las aristas (a, z) y (z, a) representa el coste de transportar cierta mercancı́a de una
ciudad a otra. En general, p(a, z) 6= p(z, a). El algoritmo de Dijkstra nos proporciona L(z) = p(a, z)
al tomar a como vértice inicial y L(a) = p(z, a) si z es el vértice inicial.
En el caso en que en el grafo G = (V, E) sea una relación simétrica, decimos que el grafo es no
dirigido y las aristas son bidireccionales ( sobre las aristas no colocamos ninguna flecha ) y en este
caso L(a) = L(z) para cualquier par de vértices del grafo.
5. Algoritmo de Dijkstra modificado
En algunas ocasiones nos interesa conocer no solamente el peso de un camino de coste mı́nimo
entre dos vértices dados, sino también la ruta a seguir para llegar de uno de estos dos vértices al
otro. En este caso a cada vértice distinto de a le agregamos una etiqueta adicional, es decir, a cada
vértice v 6= a le asociamos una pareja L(v) de la siguiente manera. En el Paso 1, L(v) = (∞, ?). Si
al ejecutar el Paso 2 éste vértice es vecino de a, entonces su nueva etiqueta es L(v) = (p(u, v), u).
En caso contrario, esta etiqueta inicial es (∞, ?). Supongamos que en determinado momento la
etiqueta de cierto vértice v /
∈ S se actualiza, es decir que v es un vecino de un vértice u que aca-
ba de entrar a S, de modo que L(u) + p(u, v)  L(v). Entonces la etiqueta de v se cambia por
L(v) = (L(u) + p(u, v), u). El vértice u es predecesor de un camino de coste mı́nimo de a a v. De
esta manera, si al terminar el algoritmo la etiqueta de v es L(v) = (L(v), u), entonces observamos
la etiqueta de u. Sea L(u) = (L(u), t). Entonces un camino de coste mı́nimo de a a v debe ser de
la forma a, . . . , t, u, v. Al observar la etiqueta de t, obtenemos otro predecesor. Procedemos de esta
manera hasta llegar a un vértice b cuya etiqueta sea L(b) = (L(b), a). En ese momento habremos
obtenido un camino a, b, . . . , t, u, v de coste mı́nimo igual a L(v).
7
6. Aplicación
En esta sección mostraremos una aplicación del algoritmo de Dijkstra en un caso concreto. La
Figura 4 muestra un grafo no dirigido ponderado. Hallemos un camino de coste mı́nimo de a a z.
Figura 4: Grafo ponderado.
La ejecución del algoritmo se ilustra a continuación :
8
De acuerdo a la Figura 12, un camino de coste mı́nimo de a a z es a, b, c, d, z. Este camino tiene peso
igual a 10.
Referencias
[1] R. Johnsonbaugh, Matemáticas Discretas, Prentice Hall, Cuarta Edición, pag. 338–343.
9

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Compilado controles-mec
Compilado controles-mecCompilado controles-mec
Compilado controles-mec
 
Lagrange
LagrangeLagrange
Lagrange
 
Oem
OemOem
Oem
 
Ejercicio de Cinematica.curso
Ejercicio de Cinematica.cursoEjercicio de Cinematica.curso
Ejercicio de Cinematica.curso
 
Cap6
Cap6Cap6
Cap6
 
Ejercicios lagrangiano
Ejercicios lagrangianoEjercicios lagrangiano
Ejercicios lagrangiano
 
Semana12 (1)
Semana12 (1)Semana12 (1)
Semana12 (1)
 
Ejercicios transformada de laplace
Ejercicios transformada de laplaceEjercicios transformada de laplace
Ejercicios transformada de laplace
 
Ejercicios dinamica
Ejercicios dinamicaEjercicios dinamica
Ejercicios dinamica
 
Semana03
Semana03Semana03
Semana03
 
Algebra lineal 2014-08-03
Algebra lineal 2014-08-03Algebra lineal 2014-08-03
Algebra lineal 2014-08-03
 
Aplicaciones de ecuaciones diferenciales
Aplicaciones de ecuaciones diferencialesAplicaciones de ecuaciones diferenciales
Aplicaciones de ecuaciones diferenciales
 
Propagación de Ondas Electromagnéticas
Propagación de Ondas ElectromagnéticasPropagación de Ondas Electromagnéticas
Propagación de Ondas Electromagnéticas
 
Aplicaciones de las ed de segundo orden
Aplicaciones de las ed de segundo ordenAplicaciones de las ed de segundo orden
Aplicaciones de las ed de segundo orden
 
Apunte usm resolución ed os
Apunte usm    resolución ed osApunte usm    resolución ed os
Apunte usm resolución ed os
 
Derivadas
DerivadasDerivadas
Derivadas
 
Tema6 Ondas en sólidos elásticos y fluidos
Tema6 Ondas en sólidos elásticos y fluidosTema6 Ondas en sólidos elásticos y fluidos
Tema6 Ondas en sólidos elásticos y fluidos
 
Espacios vectoriales ita
Espacios vectoriales itaEspacios vectoriales ita
Espacios vectoriales ita
 
Exámenes álgebra lineal segundo y tercera evaluación
Exámenes álgebra lineal segundo y tercera evaluaciónExámenes álgebra lineal segundo y tercera evaluación
Exámenes álgebra lineal segundo y tercera evaluación
 
Derivada direccional yerinson
Derivada direccional yerinsonDerivada direccional yerinson
Derivada direccional yerinson
 

Similar a Acerca del algoritmo de dijkstra compressed

Flyd+Warshall
Flyd+WarshallFlyd+Warshall
Flyd+Warshallgrupo6tic
 
Campos esc y_vect
Campos esc y_vectCampos esc y_vect
Campos esc y_vectJrg Rouco
 
Regla de la cadena
Regla de la cadenaRegla de la cadena
Regla de la cadenaAna Cristina
 
Regla de la cadena
Regla de la cadenaRegla de la cadena
Regla de la cadenaAna Cristina
 
Espacios vectoriales Conceptos
Espacios vectoriales ConceptosEspacios vectoriales Conceptos
Espacios vectoriales Conceptoscarogf9015
 
05 CAMBIO DE INTEGRALES EN INTEGRAL DOBLE
05 CAMBIO DE INTEGRALES EN INTEGRAL DOBLE05 CAMBIO DE INTEGRALES EN INTEGRAL DOBLE
05 CAMBIO DE INTEGRALES EN INTEGRAL DOBLEleonardobenitez32
 
Calculo 3 ejer 1
Calculo 3 ejer 1Calculo 3 ejer 1
Calculo 3 ejer 1izarra1530
 
Ecuación de continuidad - Fenómenos de transporte
Ecuación de continuidad - Fenómenos de transporteEcuación de continuidad - Fenómenos de transporte
Ecuación de continuidad - Fenómenos de transportewww.youtube.com/cinthiareyes
 
Tabla de integrales (integrales trigonometricas)
Tabla de integrales (integrales trigonometricas)Tabla de integrales (integrales trigonometricas)
Tabla de integrales (integrales trigonometricas)waltergomez627
 
Transformaciones lineales
Transformaciones lineales Transformaciones lineales
Transformaciones lineales mirabal21
 
Articulo de Variable Compleja: Un Paseo a través de lo Inédito
Articulo de Variable Compleja: Un Paseo a través de lo InéditoArticulo de Variable Compleja: Un Paseo a través de lo Inédito
Articulo de Variable Compleja: Un Paseo a través de lo InéditoMynorRios
 
Unidad ii material complementario vectores
Unidad ii material complementario vectoresUnidad ii material complementario vectores
Unidad ii material complementario vectoresSistemadeEstudiosMed
 
Problemario de Álgebra Lineal
Problemario de Álgebra LinealProblemario de Álgebra Lineal
Problemario de Álgebra LinealJuliho Castillo
 

Similar a Acerca del algoritmo de dijkstra compressed (20)

Flyd+Warshall
Flyd+WarshallFlyd+Warshall
Flyd+Warshall
 
Ensayo polanco euan_elias
Ensayo polanco euan_eliasEnsayo polanco euan_elias
Ensayo polanco euan_elias
 
Campos esc y_vect
Campos esc y_vectCampos esc y_vect
Campos esc y_vect
 
Regla de la cadena
Regla de la cadenaRegla de la cadena
Regla de la cadena
 
Regla de la cadena
Regla de la cadenaRegla de la cadena
Regla de la cadena
 
Ortogonalidad
OrtogonalidadOrtogonalidad
Ortogonalidad
 
Rutamascorta1
Rutamascorta1Rutamascorta1
Rutamascorta1
 
Espacios vectoriales Conceptos
Espacios vectoriales ConceptosEspacios vectoriales Conceptos
Espacios vectoriales Conceptos
 
05 CAMBIO DE INTEGRALES EN INTEGRAL DOBLE
05 CAMBIO DE INTEGRALES EN INTEGRAL DOBLE05 CAMBIO DE INTEGRALES EN INTEGRAL DOBLE
05 CAMBIO DE INTEGRALES EN INTEGRAL DOBLE
 
Calculo 3 ejer 1
Calculo 3 ejer 1Calculo 3 ejer 1
Calculo 3 ejer 1
 
Ecuación de continuidad - Fenómenos de transporte
Ecuación de continuidad - Fenómenos de transporteEcuación de continuidad - Fenómenos de transporte
Ecuación de continuidad - Fenómenos de transporte
 
Tabla de integrales (integrales trigonometricas)
Tabla de integrales (integrales trigonometricas)Tabla de integrales (integrales trigonometricas)
Tabla de integrales (integrales trigonometricas)
 
Transformaciones lineales
Transformaciones lineales Transformaciones lineales
Transformaciones lineales
 
Articulo de Variable Compleja: Un Paseo a través de lo Inédito
Articulo de Variable Compleja: Un Paseo a través de lo InéditoArticulo de Variable Compleja: Un Paseo a través de lo Inédito
Articulo de Variable Compleja: Un Paseo a través de lo Inédito
 
Sev resueltos
Sev resueltosSev resueltos
Sev resueltos
 
Familia de rectas
Familia de rectasFamilia de rectas
Familia de rectas
 
Unidad ii material complementario vectores
Unidad ii material complementario vectoresUnidad ii material complementario vectores
Unidad ii material complementario vectores
 
Archivo con demostraciones de espacios vectoriales
Archivo con demostraciones de espacios vectorialesArchivo con demostraciones de espacios vectoriales
Archivo con demostraciones de espacios vectoriales
 
Al ap 02
Al ap 02Al ap 02
Al ap 02
 
Problemario de Álgebra Lineal
Problemario de Álgebra LinealProblemario de Álgebra Lineal
Problemario de Álgebra Lineal
 

Más de hubapla

Actividades desconectadas para estudiantes
Actividades desconectadas para estudiantesActividades desconectadas para estudiantes
Actividades desconectadas para estudianteshubapla
 
Algoritmo de dijkstra tutorial interactivo
Algoritmo de dijkstra tutorial interactivoAlgoritmo de dijkstra tutorial interactivo
Algoritmo de dijkstra tutorial interactivohubapla
 
Expectativas y compromisos 2021 hb
Expectativas y compromisos 2021 hbExpectativas y compromisos 2021 hb
Expectativas y compromisos 2021 hbhubapla
 
Guias mcd mcm 601 hbp mat 2019
Guias mcd mcm 601 hbp mat 2019Guias mcd mcm 601 hbp mat 2019
Guias mcd mcm 601 hbp mat 2019hubapla
 
Guias 601 hbp mat 2019
Guias 601 hbp mat 2019Guias 601 hbp mat 2019
Guias 601 hbp mat 2019hubapla
 
Guias 3 4 trigon 2019
Guias 3 4 trigon 2019Guias 3 4 trigon 2019
Guias 3 4 trigon 2019hubapla
 
Dba v1 v2 mat decimo
Dba  v1 v2 mat decimoDba  v1 v2 mat decimo
Dba v1 v2 mat decimohubapla
 
Dba v1 v2 mat undecimo
Dba  v1 v2 mat undecimoDba  v1 v2 mat undecimo
Dba v1 v2 mat undecimohubapla
 
Dba v1 v2 mat noveno
Dba  v1 v2 mat novenoDba  v1 v2 mat noveno
Dba v1 v2 mat novenohubapla
 
Ejercicios de media, moda y mediana
Ejercicios de media, moda y medianaEjercicios de media, moda y mediana
Ejercicios de media, moda y medianahubapla
 
Malla matematicas 6 a 11
Malla  matematicas 6 a 11Malla  matematicas 6 a 11
Malla matematicas 6 a 11hubapla
 
Malla matemáticas 6 a 11 2018
Malla matemáticas 6 a 11 2018Malla matemáticas 6 a 11 2018
Malla matemáticas 6 a 11 2018hubapla
 
Medellinmatematicas
MedellinmatematicasMedellinmatematicas
Medellinmatematicashubapla
 
Autorizaciones salidas estudiantes
Autorizaciones salidas estudiantesAutorizaciones salidas estudiantes
Autorizaciones salidas estudianteshubapla
 
Formato prestamo de libros
Formato prestamo de librosFormato prestamo de libros
Formato prestamo de libroshubapla
 

Más de hubapla (15)

Actividades desconectadas para estudiantes
Actividades desconectadas para estudiantesActividades desconectadas para estudiantes
Actividades desconectadas para estudiantes
 
Algoritmo de dijkstra tutorial interactivo
Algoritmo de dijkstra tutorial interactivoAlgoritmo de dijkstra tutorial interactivo
Algoritmo de dijkstra tutorial interactivo
 
Expectativas y compromisos 2021 hb
Expectativas y compromisos 2021 hbExpectativas y compromisos 2021 hb
Expectativas y compromisos 2021 hb
 
Guias mcd mcm 601 hbp mat 2019
Guias mcd mcm 601 hbp mat 2019Guias mcd mcm 601 hbp mat 2019
Guias mcd mcm 601 hbp mat 2019
 
Guias 601 hbp mat 2019
Guias 601 hbp mat 2019Guias 601 hbp mat 2019
Guias 601 hbp mat 2019
 
Guias 3 4 trigon 2019
Guias 3 4 trigon 2019Guias 3 4 trigon 2019
Guias 3 4 trigon 2019
 
Dba v1 v2 mat decimo
Dba  v1 v2 mat decimoDba  v1 v2 mat decimo
Dba v1 v2 mat decimo
 
Dba v1 v2 mat undecimo
Dba  v1 v2 mat undecimoDba  v1 v2 mat undecimo
Dba v1 v2 mat undecimo
 
Dba v1 v2 mat noveno
Dba  v1 v2 mat novenoDba  v1 v2 mat noveno
Dba v1 v2 mat noveno
 
Ejercicios de media, moda y mediana
Ejercicios de media, moda y medianaEjercicios de media, moda y mediana
Ejercicios de media, moda y mediana
 
Malla matematicas 6 a 11
Malla  matematicas 6 a 11Malla  matematicas 6 a 11
Malla matematicas 6 a 11
 
Malla matemáticas 6 a 11 2018
Malla matemáticas 6 a 11 2018Malla matemáticas 6 a 11 2018
Malla matemáticas 6 a 11 2018
 
Medellinmatematicas
MedellinmatematicasMedellinmatematicas
Medellinmatematicas
 
Autorizaciones salidas estudiantes
Autorizaciones salidas estudiantesAutorizaciones salidas estudiantes
Autorizaciones salidas estudiantes
 
Formato prestamo de libros
Formato prestamo de librosFormato prestamo de libros
Formato prestamo de libros
 

Último

Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 

Último (20)

Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdfResolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
Resolucion de Problemas en Educacion Inicial 5 años ED-2024 Ccesa007.pdf
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 

Acerca del algoritmo de dijkstra compressed

  • 1. Acerca del Algoritmo de Dijkstra Alvaro H. Salas S.* Resumen In this paper we prove the correctness of Dijkstra’s algorithm. We also discuss it and at the end we show an application. En este artı́culo realizamos una descripción detallada del algoritmo de Dijkstra, justificando su correctitud, discutiéndolo y mostrando algunas de sus aplicaciones. Palabras claves: grafo, digrafo, digrafo ponderado, digrafo pesado, peso de un camino, camino de coste mı́nimo, camino minimal. 1. Introduccción Dado un grafo con etiquetas no negativas, se trata de calcular el coste del camino mı́nimo desde un vértice dado al resto (ing., single-source shortest paths). La utilidad de un procedimiento que solucione esta cuestión es clara: el caso más habitual es disponer de un grafo que represente una distribución geográfica, donde las aristas den el coste (en precio, en distancia o similares) de la conexión entre dos lugares y sea necesario averiguar el camino más corto para llegar a un punto partiendo de otro (es decir, determinar la secuencia de aristas para llegar a un nodo a partir del otro con un coste mı́nimo). La solución más eficiente a este problema es el denominado algoritmo de Dijkstra, en honor a su creador, E.W. Dijkstra. Formulado en 1959 en .A note on two problems in connexion with graphs”, Numerical Mathematica, 1, pp. 269-271, sobre grafos dirigidos, el algoritmo de Dijkstra es un algoritmo voraz (algoritmo goloso) que genera uno a uno los caminos de un nodo a al resto por orden creciente de longitud; usa un conjunto S de vértices donde, a cada paso del algoritmo, se guardan los nodos para los que ya se sabe el camino mı́nimo y devuelve un vector indexado por vértices, de modo que para cada uno de estos vértices podemos determinar el coste de un camino más económico (de peso mı́nimo) de a a tales vértices. Cada vez que se incorpora un nodo a la solución, se comprueba si los caminos todavı́a no definitivos se pueden acortar pasando por él. *Departamento de Matemáticas, Universidad de Caldas, Departamento de Matemáticas, Universidad Nacional de Colombia, Manizales. email : asalash2002@yahoo.com 1 arXiv:0810.0075v1 [cs.DS] 1 Oct 2008
  • 2. 2. Preliminares Recordemos que un digrafo (eng. directed graph) es una pareja G = (V, E), en donde V es un conjunto y E es una relación binaria irreflexiva sobre V , es decir, un subconjunto de V × V tal que (x, x) / ∈ E para todo x ∈ E. Decimos que V es el conjunto de vértices y que E es el conjunto de aristas (eng. edges). En los sucesivo supondremos que V es finito. Dada una arista (u, v), decimos que los vértices u y v son adyacentes y que la arista es incidente en ellos (u, v). Se llama camino de u a v, denotado por u − v, a toda sucesión finita de vértices u = x0, x1, . . . , xi, xi+1, . . . , xm−1, xm = v, (2.1) de modo que (xi, xi+1) es una arista para cada i = 0, 1, . . . , m−1. Por definición, (2.1) es un camino Figura 1: Un camino u − v de longitud m, u es su vértice inicial, v es su vértice terminal y x1, x2,..., xm−1 son sus vértices internos. Un digrafo es ponderado o pesado, si a cada arista (u, v) se le asigna un número real, denotado por p(u, v) y llamado su peso. En lo sucesivo consideraremos un digrafo ponderado G con pesos positivos : p(u, v) > 0 para toda arista (u, v) ∈ E. El peso del camino (2.1) se define como la suma de los pesos de sus aristas : p(u − v) = p(x0, x1) + p(x1, x2) + · · · + p(xm−1, xm). (2.2) Un camino es de coste mı́nimo si no es posible encontrar ningún camino de u a v cuyo peso sea menor que p(u − v). En otras palabras, dado cualquier camino de u a v u = y0, y1, . . . , yk−1, yk = v, se debe tener p(u, y1) + p(y1, y2) + · · · + p(yk−1, v) ≥ p(u − v). 2
  • 3. 3. El algoritmo de Dijkstra. Descripción y sustentación de su correctitud. Sea G = (V, E) un digrafo ponderado con pesos positivos de n vértices. Supongamos que a y z son dos vértices en V , de modo que z 6= a y existe al menos un camino de a a z. Nuestro principal objetivo consiste en hallar un camino a − z de coste mı́nimo. Este problema se resuelve de manera eficiente mediante el algoritmo de Dijkstra. El algoritmo inicia en el vértice a y construye un camino de coste mı́nimo a = u0, u1, . . . , um−1, um = z, tal que a − ui es un camino de coste mı́nimo para cada i = 0, 1, . . . , m. 3.1. Algoritmo de Dijkstra Entrada: Grafo ponderado dirigido de n vértices con pesos positivos; a y z vértices distintos tales que existe algún camino de a a z. Salida: Peso de un camino de coste mı́nimo de a a z. Paso 1 : Definimos S0 = ∅, T0 = V . Asignamos a cada vértice v en V una etiqueta (eng. label) como sigue : L(v) = 0 si v = a y L(v) = ∞ para v 6= a. Paso 2 : Para i = 1, 2, . . . , n : Supongamos que hemos construido los conjuntos S0, S1,..., Si−1. Hacemos Ti−1 = V Si−1. Si z ∈ Si−1, definimos S = Si−1 y detenemos la construcción. En caso contrario, escogemos el primer vértice u en Ti−1 con la menor eqtiqueta, es decir, L(u) = mı́n{L(v) | v ∈ Ti−1}. Definimos ui−1 = u, Si = Si−1 ∪{ui−1} = {u0, u1, . . . , ui−1} (decimos que u entra), Ti = V Si y para cada vértice v en Ti adyacente a u cambiamos su etiqueta L(v) por la nueva etiqueta mı́n{L(v), L(u) + p(u, v)} : L(v) ← mı́n{L(v), L(u) + p(u, v)}, es decir, actualizamos la etiqueta de los ”vecinos”de u por fuera de Si. Paso 3 : Si i = n, definimos S = Sn y nos detenemos. Si i < n, hacemos i = i + 1 y vamos al Paso 2. El algoritmo de Dijkstra termina en el momento en que encontramos el primer ı́ndice m para el cual z ∈ Sm. En ese momento, S = Sm. 3
  • 4. 3.2. Correctitud del algoritmo de Dijktra La justificación de la correctitud de este notable algoritmo se basa en el siguiente Teorema 1 Al finalizar la ejecución del algoritmo de Dijkstra tenemos que, para todo u ∈ S con u 6= a, A. Cualquier camino a − u tiene peso al menos L(u) : L(u) ≤ p(a − u) B. Existe un camino de a a u de peso igual a L(u). En particular, L(u) es finita : L(u) < ∞. Demostración. Haremos la demostración por inducción sobre i ≥ 1. Sea i = 1. Inicialmente (esto es, antes del Paso 2) S0 = ∅, T0 = V . Es claro que z / ∈ S0. De acuerdo al Paso 2, escogemos el vértice a por cuanto su etiqueta es la menor (los demás vértices tienen etiqueta ∞ > 0), ası́ que el vértice a = u0 entra y S1 = {u0}. Entonces T1 = V S1. Por hipótesis, existe al menos un camino de a a z. Sea a = x0, x1, . . . , xm−1, xm = z (3.3) dicho camino. Entonces x1 ∈ T1 es un vecino de u0, ası́ que el conjunto de los vecinos de u0 por fuera de S0 es no vacı́o. De acuerdo al Paso 2, actualizamos las etiquetas de estos vecinos. Sea v cualquiera de ellos. Su nueva etiqueta es mı́n{L(v), L(a) + p(a, v)} = mı́n{∞, 0 + p(a, v)} = p(a, v). Según esto, la etiqueta de v (que en este momento es ∞) se cambia por el peso de la arista (a, v). Supongamos que u1 es un vecino con la menor etiqueta (el vecino más económico o más cercano a u0 = a; puede haber más de uno, en cuyo caso podemos escoger cualquiera de ellos), esto es, L(u1) = mı́n{p(a, v) | v ∈ T1, siendo v un vecino de a} = p(a, u1). Sea (3.3) cualquier camino a − z. Tenemos: L(u1) ≤ p(a, x1) ≤ p(a, x1) + p(x1, x2) + · · · + p(xm−1, z) = p(a − z), de modo que la condición A se cumple para i = 1. De otro lado, B es verdadera, ya que a, u1 es un camino a − u1 de peso p(a − u1) = p(a, u1) = L(u1). De acuerdo con los anteriores argumentos, el teorema es válido para i = 1. Supongamos que este teorema se cumple para todos los vértices ui ∈ S con 1 ≤ i ≤ k. Veamos que este teorema también es válido para el vértice uk+1. Consideremos cualquier camino de a a v = uk+1 (ver Figura 2). Veamos que L(v) ≤ p(a−v). Si esto fuera falso, se tendrı́a L(v) > p(a − v). Supongamos que y es el primer vértice de este camino por 4
  • 5. Figura 2: Un camino arbitrario u − v fuera de Sk+1 y sea u el predecesor de y en dicho camino. Entonces u ∈ Sk+1 = {u0, u1, . . . , ..., uk}. De acuerdo con nuestra hipótesis inductiva, L(u) ≤ p(a−u). Además, L(v) = L(uk+1) ≤ L(y), luego L(v) ≤ L(y) ≤ L(u) + p(u, y) ≤ p(a − u) + p(u, y) = p(a − y) ≤ p(a − v) < L(v), lo cual es una contradicción. En consecuencia, la parte A del teorema se cumple para i = k + 1. Supongamos que en el camino (3.3) el vértice y = xj es el primero que se encuentra por fuera de Sk+1 = {u0, u1, . . . , uk}. Ver Figura 3. Entonces y = xj es vecino de u = xj−1 ∈ Sk+1. Por hipótesis Figura 3: Existencia de un camino de a hacia uk+1 de peso L(uk+1) inductiva, existe un camino a, b, . . . , t, u de a a u de peso L(u), luego L(u) es finito. Cuando u entró a S, la etiqueta de su vecino y fue actualizada, de modo que L(y) ≤ L(u)+p(u, y) < ∞. Ahora, ambos, y y uk+1, están por fuera de Sk+1, ası́ que L(uk+1) ≤ L(y) < ∞. Inicialmente (esto es, antes del Paso 2), el vértice uk+1 tenı́a etiqueta ∞ (observemos que uk+1 6= a, ya que a = u0 y k + 1 6= 0). En el momento actual, por lo que acabamos de demostrar, este vértice tiene etiqueta finita. Esto significa que en algún momento fue actualizada y cambió de ∞ a L(uj) + p(uj, uk+1) para algún j con j ≤ k. Sin pérdida de generalidad, podemos suponer que este es el valor actual de L(uk+1), es decir, L(uk+1) = L(uj) + p(uj, uk+1). (3.4) 5
  • 6. De acuerdo a nuestra hipótesis inductiva, existe un camino de a − uj de peso L(uj). Agregando a este camino la arista (uj, uk+1) obtenemos un camino de peso L(uj) + p(uj, uk+1) = L(uk+1), de modo que B también se satisface para i = k + 1. Teorema demostrado. Del teorema antwerior se sigue que : a. El algoritmo termina. En efecto, probemos por inducción sobre i ≥ 1 que los elementos de Si son distintos. Para i = 1, S1 = {u0} y en este caso no hay nada que demostrar. Supongamos que todos los elementos de Si son distintos para algún i ≥ 1, de modo que z / ∈ Si. Sea x el último vértice en Si ⊆ S de un camino u − z y y su vecino. Cuando x entró a S, la etiqueat de y se actualizó, luego L(y) ≤ L(x) ∞. Por lo tanto, es posible escoger en Ti = V Si un elemento con etiqueta mı́nima finita ≤ L(y). Uno de ellos es precisamente el elemento ui. Entonces definimos Si+1 = {u0, u1, . . . , ui−1, ui}. Es claro que todos los elementos de Si+1 son distintos. Por consiguiente, i ≤ n y el algoritmo debe terminar. b. L(u) es el peso de un camino de coste mı́nimo de a a u para todo u ∈ S {a}. En efecto, puede haber más de un camino de coste mı́nimo. Sin embargo, es fácil ver que todos ellos tienen el mismo peso. Si consideramos uno de estos caminos, su peso q es menor o igual que el peso del camino de a a u cuya existencia se garantiza en la parte B del teorema, esto es, q ≤ L(u). De otro lado, según la parte A de este teorema, todo camino a − u tiene peso al menos L(u), esto es, q ≥ L(u). Concluimos que q = L(u). En particular, tomando u = z ∈ S, obtenemos que L(z) es el peso de un camino de coste mı́nimo de a hacia z. c. Si um = z, entonces L(u0) ≤ L(u1) ≤ · · · ≤ L(uj) ≤ L(uj+1) ≤ · · · ≤ L(um). En efecto, antes de que los elementos uj y uj+1 entren a S = Sm, éstos se encuentran en Tj = V Sj. Se escoge uj por cuanto este es uno de los elementos con etiqueta mı́nima, luego L(uj) ≤ L(uj+1). 4. Discusión Supongamos que aplicamos el algoritmo de Dijkstra empezando en un vértice arbitrario a. En calidad de z tomamos cualquier vértice distinto de a. Si existe un camino de a a z, el algoritmo funciona. Supongamos que no existe tal camino. En este caso, z no pertenece a ninguno de los conjuntos Si. Al aplicar los pasos del algoritmo, nos detenemos en el momento en que todas las 6
  • 7. etiquetas de los vértices que aún no han entrado sea ∞. Por lo tanto, dados dos vértices arbitrarios distintos a y z, al tomar a como vértice inicial, si ejecutamos los pasos del algoritmo, deteniéndonos en el momento en que mı́n{L(v) | v ∈ Ti} = ∞, obtenemos un conjunto S ⊆ V de vértices. Si z / ∈ S, entonces no hay ningún camino a − z. En par- ticular, si S = {a}, entonces no existe ninguna arista que parta de a, es decir, a no tiene vecinos. En este caso decimos que a es un vértice aislado. Si S = V , entonces existe un camino de a a cualquier otro vértice y las etiquetas finales de dichos vértices nos dan un camino de peso mı́nimo desde a. Cabe anotar que el peso de un camino de coste mı́nimo de a a z puede ser distinto del peso de un camino de coste mı́nimo de z a a. Por ejemplo, a y z pueden representar ciudades vecinas. Digamos que el peso de las aristas (a, z) y (z, a) representa el coste de transportar cierta mercancı́a de una ciudad a otra. En general, p(a, z) 6= p(z, a). El algoritmo de Dijkstra nos proporciona L(z) = p(a, z) al tomar a como vértice inicial y L(a) = p(z, a) si z es el vértice inicial. En el caso en que en el grafo G = (V, E) sea una relación simétrica, decimos que el grafo es no dirigido y las aristas son bidireccionales ( sobre las aristas no colocamos ninguna flecha ) y en este caso L(a) = L(z) para cualquier par de vértices del grafo. 5. Algoritmo de Dijkstra modificado En algunas ocasiones nos interesa conocer no solamente el peso de un camino de coste mı́nimo entre dos vértices dados, sino también la ruta a seguir para llegar de uno de estos dos vértices al otro. En este caso a cada vértice distinto de a le agregamos una etiqueta adicional, es decir, a cada vértice v 6= a le asociamos una pareja L(v) de la siguiente manera. En el Paso 1, L(v) = (∞, ?). Si al ejecutar el Paso 2 éste vértice es vecino de a, entonces su nueva etiqueta es L(v) = (p(u, v), u). En caso contrario, esta etiqueta inicial es (∞, ?). Supongamos que en determinado momento la etiqueta de cierto vértice v / ∈ S se actualiza, es decir que v es un vecino de un vértice u que aca- ba de entrar a S, de modo que L(u) + p(u, v) L(v). Entonces la etiqueta de v se cambia por L(v) = (L(u) + p(u, v), u). El vértice u es predecesor de un camino de coste mı́nimo de a a v. De esta manera, si al terminar el algoritmo la etiqueta de v es L(v) = (L(v), u), entonces observamos la etiqueta de u. Sea L(u) = (L(u), t). Entonces un camino de coste mı́nimo de a a v debe ser de la forma a, . . . , t, u, v. Al observar la etiqueta de t, obtenemos otro predecesor. Procedemos de esta manera hasta llegar a un vértice b cuya etiqueta sea L(b) = (L(b), a). En ese momento habremos obtenido un camino a, b, . . . , t, u, v de coste mı́nimo igual a L(v). 7
  • 8. 6. Aplicación En esta sección mostraremos una aplicación del algoritmo de Dijkstra en un caso concreto. La Figura 4 muestra un grafo no dirigido ponderado. Hallemos un camino de coste mı́nimo de a a z. Figura 4: Grafo ponderado. La ejecución del algoritmo se ilustra a continuación : 8
  • 9. De acuerdo a la Figura 12, un camino de coste mı́nimo de a a z es a, b, c, d, z. Este camino tiene peso igual a 10. Referencias [1] R. Johnsonbaugh, Matemáticas Discretas, Prentice Hall, Cuarta Edición, pag. 338–343. 9