Está en la página 1de 11

UNIVERSIDAD MARIANO GÁLVEZ DE GUATEMALA

FACULTAD DE CIENCIAS DE LA COMPUTACION


ESCUELA DE INGENIERIA EN SISTEMAS DE INFORMACION

PLAN FIN DE SEMANA

ALGORITMO DE DJIKSTRA

JUAN MIGUEL DE LA CRUZ VALEY 0900 11 7990


GILDDER CACERES 0900-20-11689
ALAN GIRON 0900-12-2004
ESTEFANO CRUZ 0900-18-5202

Guatemala, octubre de 2020


Contenido

ALGORITMO DE DJIKSTRA...............................................................................................3
ALGORITMO................................................................................................................... 3
COMPLEJIDAD............................................................................................................... 4
TEOREMA....................................................................................................................... 4
PSEUDOCODIGO........................................................................................................... 4
EJEMPLOS DE UN ALGORITMO DE DIJKSTRA...........................................................5
APLICACIONES.............................................................................................................. 9
BIBLIOGRAFIA.................................................................................................................10
ALGORITMO DE DJIKSTRA

El algoritmo de Dijkstra, es también llamado algoritmo de caminos mínimos, es un


algoritmo para la determinación del camino más corto dado un vértice origen al resto de
vértices en un grafo dirigido y con pesos en cada arista. Su nombre se refiere a Edsger
Dijkstra (“11 de mayo de 1930 - 6 de agosto de 2002” fue un científico de la computación
de origen holandés.), quien lo describió por primera vez en 1959.

La idea subyacente en este algoritmo consiste en ir explorando todos los caminos más
cortos que parten del vértice origen y que llevan a todos los demás vértices; cuando se
obtiene el camino más corto desde el vértice origen, al resto de vértices que componen el
grafo, el algoritmo se detiene. El algoritmo es una especialización de la búsqueda de
costo uniforme, y como tal, no funciona en grafos con aristas de costo negativo (al elegir
siempre el nodo con distancia menor, pueden quedar excluidos de la búsqueda nodos que
en próximas iteraciones bajarían el costo general del camino al pasar por una arista con
costo negativo)

ALGORITMO

Teniendo un grafo dirigido ponderado de N nodos no aislados, sea x el nodo inicial, un


vector D de tamaño N guardará al final del algoritmo las distancias desde x al resto de los
nodos. 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.

Sea a = x (tomamos a como nodo actual).

Recorremos todos los nodos adyacentes de a, excepto los nodos marcados, llamaremos
a estos vi.

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; esta se sustituye con la segunda nombrada, estos
es:
si (Di > Da + d(a, vi)) entonces Di = Da + d(a, vi)

Marcamos como completo el nodo a.


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.

Una vez terminado al algoritmo, D estará completamente lleno.

COMPLEJIDAD

Orden de complejidad del algoritmo: O (|V|2+|E|) = O (|V|2) sin utilizar cola de prioridad, O
((|E|+|V|) log |V|) utilizando cola de prioridad (por ejemplo un montículo). Podemos estimar
la complejidad computacional del algoritmo de Dijkstra (en términos de sumas y
comparaciones). El algoritmo realiza a lo más n-1 iteraciones, ya que en cada iteración se
añade un vértice al conjunto distinguido. Para estimar el número total de operaciones
basta estimar el número de operaciones que se llevan a cabo en cada iteración. Podemos
identificar el vértice con la menor etiqueta entre los que no están en S k realizando n-1
comparaciones o menos. Después hacemos una suma y una comparación para actualizar
la etiqueta de cada uno de los vértices que no están en S k. Por tanto, en cada iteración se
realizan a lo sumo 2(n-1) operaciones, ya que no puede haber más de n-1 etiquetas por
actualizar en cada iteración. Como no se realizan más de n-1 iteraciones, cada una de las
cuales supone a lo más 2(n-1) operaciones, llegamos al siguiente teorema.

TEOREMA

El Algoritmo de Dijkstra realiza O (n 2) operaciones (sumas y comparaciones) para


determinar la longitud del camino más corto entre dos vértices de un grafo ponderado
simple, conexo y no dirigido con n vértices.

PSEUDOCODIGO
DIJKSTRA (Grafo G, nodo_fuente s)
para u ∈ V[G] hacer
distancia[u] = INFINITO
padre[u] = NULL
distancia[s] = 0
Encolar (cola, grafo)
mientras que cola no es vacía hacer
u = extraer_minimo(cola)
para v ∈ adyacencia[u] hacer
si distancia[v] > distancia[u] + peso (u, v) hacer
distancia[v] = distancia[u] + peso (u, v)
padre[v] = u
EJEMPLOS DE UN ALGORITMO DE DIJKSTRA

El siguiente ejemplo se desarrollará con el fin de encontrar el camino más corto desde a
hasta z:

Leyenda:

 Rojo: Aristas y vértices pertenecientes a la solución momentánea.


 Azul: Aristas y vértices candidatos.

Paso 1

En este primer paso, podemos apreciar que hay tres candidatos: Los vértices b, c y d. En
este caso, hacemos el camino desde el vértice a, hasta el vértice d, ya que es el camino
más corto de los tres.jump!!!
Solución momentánea:

 Camino: AD
 Distancia:5

Paso 2

Ahora, vemos que se añade un nuevo candidato, el vértice e, y el vértice c, pero esta vez
a través del d. Pero el camino mínimo surge al añadir el vértice c.

Solución momentánea:

 Camino: ADC
 Distancia:9

Paso 3

En este paso no se añade ningún candidato más puesto que el último vértice es el mismo
que en el paso anterior. En este caso el camino mínimo hallado es el siguiente:
Solución momentánea:

 Camino: ADCB
 Distancia:11

Paso 4

Como podemos comprobar, se han añadido dos candidatos nuevos, los vértices f y g,
ambos a través del vértice b. El mínimo camino hallado en todo el grafo hasta ahora es el
siguiente:

Solución momentánea:

 Camino: ADCBF
 Distancia:15

Paso 5
En este antepenúltimo paso, se añaden tres vértices candidatos, los vértices g, z y e. Este
último ya estaba pero en esta ocasión aparece a través del vértice f. En este caso el
camino mínimo, que cambia un poco con respecto al anterior, es:

Solución momentánea:

 Camino: ADCBF
 Distancia:17

Paso 6

En el penúltimo paso, vuelve a aparecer otro candidato: el vértice z, pero esta vez a
través del vértice g. De todas formas, el camino mínimo vuelve a cambiar para retomar el
camino que venía siguiendo en los pasos anteriores:

Solución momentánea:
 Camino: ADCBFE
 Distancia:18

Paso 7

Por fin, llegamos al último paso, en el que sólo se añade un candidato, el vértice z a
través del e. El camino mínimo y final obtenido es:

Solución Final:

 Camino: ADCBFEZ
 Distancia:23

APLICACIONES

Encaminamiento de paquetes por los Reuters: En un momento dado, un mensaje


puede tardar cierta cantidad de tiempo en atravesar cada línea (por ejemplo, por efectos
de congestión). En este caso, tenemos una red con dos nodos especiales, el de inicio y el
de llegada. Los pesos de las aristas serían los costes. El objetivo del algoritmo es
encontrar un camino entre estos dos nodos cuyo coste total sea el mínimo.

Aplicaciones para Sistemas de información geográficos: extracción de características


curvilíneas de imágenes usando técnicas de minimización del camino: La imagen se
representa como una matriz de puntos, cada uno con una intensidad. Cada nodo es un
punto (píxel) de la imagen. El peso de las aristas es la diferencia de color.

Reconocimiento de lenguaje hablado: Se puede construir un grafo cuyos vértices


correspondan a palabras posibles y las aristas unan palabras que pueden ir colocadas al
lado de las otras. Si el peso de las aristas corresponde a la probabilidad de que estén así
colocadas, el camino más corto en el grafo será la mejor interpretación de la frase.

Enrutamiento de aviones y tráfico aéreo: Consiste en un agente de solicitudes de viaje


software para hacer un programa de vuelos para los clientes. El agente tiene acceso a
una base de datos con todos los aeropuertos y los vuelos como el número de vuelo, el
aeropuerto de origen y destino y los horarios de salida y de llegada. La aplicación se usa
para determinar la hora de llegada más temprana para el destino dado un aeropuerto de
origen y hora de inicio.

Tratamiento de imágenes médicas.

Problemas reales en los que la solución es Dijkstra:

 Llegar a desde un punto de una ciudad hasta otro por el camino más rápido
 Estudios sobre la probabilidad de, por ejemplo, frases más usadas por los
españoles.
 Cómo rodear una montaña por el camino más corto
 Conocer el camino más rápido que sigue la información a través de las neuronas.

BIBLIOGRAFIA

https://es.wikipedia.org/wiki/Algoritmo_de_Dijkstra
https://es.scribd.com/document/349563306/Algoritmo-de-Dijkstra-pdf

https://jariasf.wordpress.com/2012/03/19/camino-mas-corto-algoritmo-de-dijkstra

https://sites.google.com/site/latexnine/aplicaciones-de-dijkstra

También podría gustarte