Algoritmo de Djikstra
Algoritmo de Djikstra
Algoritmo de Djikstra
ALGORITMO DE DJIKSTRA
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
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
Recorremos todos los nodos adyacentes de a, excepto los nodos marcados, llamaremos
a estos vi.
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
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:
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
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