Caminos Mas Cortos Modificado

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 28

Universidad Nacional Hermilio Valdizán

Matemáticas Discretas
Algoritmos de Dijkstra

DOCENTE: Ing. Gissela Antohané Lovatón Navarro

2021
Problemas de caminos más cortos

El conductor del camión estudia la hoja de ruta de la Figura 1, con la esperanza de encontrar la ruta
de Alpha a Omega que será la más corta en términos de millas recorridas. El número que etiqueta
cada arista del gráfico es el número de millas entre las ciudades representadas por los vértices.
Problemas de caminos más cortos

The Harried Traveler estudia el mapa de la aerolínea en la Figura 2, con la esperanza de encontrar la
ruta de Beta a Gamma que será la más corta en términos de tiempo requerido para viajar. El número
que etiqueta cada borde del gráfico es el tiempo requerido para volar entre las ciudades
representadas por los vértices.
Problemas de caminos más cortos

El Contralor estudia el gráfico de la Figura 3, con la esperanza de encontrar la ruta menos costosa para trasladar un
envío de Kappa a Sigma. El número que etiqueta cada borde del gráfico es el costo en dólares para mover el envío
entre las dos terminales representadas por los vértices.
Los gráficos de las Figuras 1, 2 y 3 son ejemplos de gráficos ponderados, gráficos que tienen
un número adjunto a cada borde. El número adjunto a cada borde de una ruta ponderada se
denomina peso del borde. La longitud de una ruta en un gráfico ponderado es la suma de los
pesos de los bordes de la ruta. En cada una de las tres situaciones descritas anteriormente, el
problema es encontrar la ruta de menor longitud entre un par específico de vértices.

Una estrategia para resolver un problema de “ruta más corta” es obvia: simplemente
determine todas las rutas simples entre los dos vértices, determine la longitud de cada
ruta y elija la ruta de menor longitud. En el Ejemplo 1 usaremos esta estrategia para
encontrar el camino más corto de Kappa a Sigma.
Grafos ponderados
Matriz de pesos
Cálculo de caminos
Peso de un camino
Ejemplo1
Encuentre el camino más corto para el gráfico de Kappa a Sigma en la Figura 3 identificando todos los
caminos simples de Kappa a Sigma y encontrando la longitud de cada uno.

Hay siete caminos de Kappa a Sigma que no repiten bordes.


Desafortunadamente, aunque esta solución se describe fácilmente conceptualmente, no
se logra tan fácilmente en gráficos con un gran número de vértices. Cuando se utilizan
gráficos para modelar y resolver problemas, a menudo es fácil concebir alguna solución
al problema, pero es mucho más difícil encontrar una solución que sea lo
suficientemente eficiente como para ser implementada en gráficos con muchos vértices
y aristas. Por lo tanto, gran parte del trabajo creativo en la teoría de gráficos implica
diseñar algoritmos eficientes que logren las tareas deseadas.

A lo largo de los años, se han desarrollado varios algoritmos para


encontrar el camino más corto a través de un gráfico ponderado.
Examinaremos un algoritmo desarrollado por el matemático holandés
Edsger Dijkstra en 1959. La versión que describiremos encontrará el
camino más corto en gráficos simples ponderados en los que todos los
pesos son positivos. (Recuerde que los gráficos simples son gráficos
sin aristas paralelas o bucles). Antes de describir el algoritmo,
examinaremos un algoritmo geométrico que proporciona intuición para
comprender el algoritmo de Dijkstra.
UN ALGORITMO GEOMÉTRICO DE CAMINO MÁS CORTO

Este algoritmo encontrará la longitud del camino más corto entre dos
vértices. Puede describirse con los siguientes tres pasos:

Algoritmo geométrico de ruta más corta:

1. Suponga que el vértice en el que desea comenzar es a y el vértice en el que desea terminar es
z. encierre en un círculo a.
2. Examine cada vértice adyacente a y encuentre los pesos de las aristas correspondientes.
Elija el borde (y el vértice correspondiente) con el menor peso. (Si hay dos o más aristas
incidentes con a con el mismo peso mínimo, rompa el empate arbitrariamente.) Sombree la
arista que elija y encierre en un círculo el vértice que esta arista comparte con a.
3. Hasta que z esté encerrado en un círculo.
Examine todos los vértices sin círculo que son adyacentes a algún
vértice con círculo en la gráfica. Para cada vértice x sin círculo que
se está examinando y cada arista E incidente con x y un vértice con
círculo, encuentre todos los caminos simples desde a hasta x que,
además de x y E, contienen solo bordes de sombra y vértices
encerrados en un círculo. Encuentre la longitud de todos estos
caminos.
Elija el vértice x y el borde E que se encuentran en el camino con la
longitud más pequeña (rompa los lazos arbitrariamente). Encierra en
un círculo el vértice x y sombrea el borde E. Regresa al comienzo del
paso 3

Cuando z está encerrado en un círculo, la ruta sombreada de la a a la z es la ruta más corta.


Ejemplo1
Utilice el algoritmo de ruta más corta geométrica para encontrar
la ruta más corta desde el vértice a al vértice z en la ruta
ponderada de la Figura 4
Pasos 1 y 2:
Primero rodeamos con un círculo el vértice desde el que deseamos comenzar, el vértice
a. Los dos vértices adyacentes al vértice a son los vértices b y c. El peso de {a, b} es 4 y
el peso de {a, c} es 3. Por lo tanto, sombreamos el borde {a, c} y el vértice c del círculo.
(Consulte la Figura 5 (a)).
Primera iteración del Paso 3: Los vértices sin círculo adyacentes a los vértices los
círculo son b y d. La única ruta de a hacia b que cumple los requisitos del paso 3 es la
ruta (a, b) de longitud 4. La única ruta de a hacia d que cumple los requisitos del paso
3 es (a, c, d) de longitud 5. Por lo tanto, sombrea el borde {a, b} y el vértice del círculo
b. (Consulte la Figura 5 (b)).
Segunda iteración del Paso 3: Los vértices adyacentes a los vértices encerrados en un
círculo son d y e. La única ruta simple de a hacia e que (con la excepción de e y el borde que
le incide) consta de bordes sombreados y vértices encerrados en círculos es (a, b, e) de
longitud 8. De manera similar, la única ruta de a hacia d que cumple los requisitos. del Paso
3 es (a, c, d) de longitud 5. Por lo tanto, sombreamos el borde {c, d} y rodeamos el vértice d.
Figura 5 (c)).
Tercera iteración del paso 3: los vértices adyacentes a los vértices encerrados en un
círculo son e y f. Los senderos simples de a hacia e que (con la excepción de e y el
borde incidente a él) consisten en bordes sombreados y vértices en círculos son (a,
b, e) de longitud 8 (a, c, d, e) de longitud 6

De manera similar, el único camino desde a hasta f que cumple los requisitos es (a, c, d, f)
de longitud 9. Sombreamos el borde {d, e} y el vértice e del círculo. Figura 6 (a)
Cuarta iteración del Paso 3: Los vértices adyacentes a los vértices encerrados en un
círculo son f y z. El camino simple de a hacia f que (con la excepción de f y el borde
incidente a él) consiste en bordes sombreados y vértices en círculos es (a, c, d, f) de
longitud 9. De manera similar, el camino de a hacia z que cumple con los requisitos es
(a, c, d, e, z) de longitud 8. La trayectoria de la longitud más corta tiene la longitud 8.
Encerramos z sombreamos {e, z}. (Figura 6 (b).

Vemos que el camino de menor longitud tiene


una longitud de 8 y que un camino que tiene
esta longitud es (a, c, d, e, z)
Aunque el algoritmo de ruta más corta
geométrica es una mejora con respecto al
método de prueba y error descrito
anteriormente, sigue siendo complicado de
completar. El hecho de que cada vez que nos
preparamos para encontrar un nuevo vértice
para trazar un círculo, debamos calcular la
longitud de las trayectorias hasta el vértice
inicial es un defecto grave para las gráficas
muy grandes. Al idear una forma inteligente de
etiquetar los vértices a medida que se eligen,
Dijkstra creó el algoritmo mucho más eficiente
que lleva su nombre.

ALGORITMO DE CAMINO MÁS


CORTO DE DIJKSTRA
ALGORITMO DE CAMINO MÁS CORTO DE DIJKSTRA
Para describir cuidadosamente cómo realizar el algoritmo de Dijkstra, necesitamos acordar
formas de mantenernos al día con lo que hemos aprendido en cada etapa del proceso. Lo
lograremos etiquetando cada vértice de una manera útil y luego volviendo a etiquetar
algunos de los vértices en cada paso. Más específicamente:
(a) Inicialmente, rodearemos el vértice desde el que deseamos comenzar el camino. A
medida que avanzamos en el gráfico, rodearemos vértices adicionales.
(b) Inicialmente, etiquetaremos el vértice inicial a con un 0, lo que indica que el camino
más corto de a hacia a es de longitud 0.
(c) Inicialmente, usaremos el peso de {a, u} como etiqueta para todos los vértices u
adyacentes a a. Esta etiqueta representa la longitud de la ruta más obvia de a a u.
(d) Inicialmente, etiquetaremos cada vértice que no sea adyacente a a con ∞. Esto indica
que todavía no hemos identificado una ruta desde a hasta este vértice.
(e) Cuando rodeamos un nuevo vértice u, etiquetamos todos los vértices v no rodeados
por un círculo que son adyacentes a u con un número que nos ayudará a encontrar la
distancia más corta desde un vértice. a v
En el algoritmo denotaremos el peso del borde {u, v} como peso {u, v} y denotaremos
la etiqueta del vértice u por L (u). El algoritmo de Dijkstra para encontrar la longitud de
un camino más corto desde el vértice a al vértice z se puede describir de la siguiente
manera
El algoritmo de ruta más corta de Dijkstra

1. Encierra en un círculo el vértice inicial, vértice a, y rotúlalo con un 0 (L (a) = 0)


2. Para cada vértice u adyacente hacia a, rotula u con peso {a, u} (L (u) = peso { a, u}).
Etiquete todos los demás vértices con el símbolo de infinito.
3. Hasta que z esté encerrado en un círculo, busque el vértice u sin círculo con la etiqueta
más pequeña y encierre en un círculo (si varios de estos vértices tienen la misma
etiqueta, elija cualquiera de ellos). vértices en un círculo v adyacentes a u, vuelva a
etiquetar v con el mínimo de {L (v), L (u) + peso {u, v}}. Regrese al comienzo del paso 3

Como cada vértice u está encerrado en un círculo, su etiqueta es la longitud del camino más
corto de a a u. En particular, después de que z esté encerrado en un círculo, la etiqueta de z
es la longitud del camino más corto de la a a la z
Ejemplo2
Utilice el algoritmo de Dijkstra para encontrar la longitud de la ruta más
corta de Kappa (K) a Sigma (S) en el gráfico ponderado de la Figura 3.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy