2. ◦ El problema del camino más corto puede ser
definido para grafos no dirigidos o dirigidos. La
siguiente es una definición para grafos no dirigidos,
en el caso de grafos dirigidos la definición de
camino requiere que los vértices adyacentes estén
conectados por una apropiada arista dirigida
3.
4. • El problema de los caminos más cortos desde un origen, en el cual tenemos
que encontrar los caminos más cortos de un vértice origen v a todos los demás
vértices del grafo.
• El problema de los caminos más cortos con un destino, en el cual tenemos
que encontrar los caminos más cortos desde todos los vértices del grafo a un
único vértice destino, esto puede ser reducido al problema anterior invirtiendo el
orden.
• El problema de los caminos más cortos entre todos los pares de vértices,
el cual tenemos que encontrar los caminos más cortos entre cada par de vértices
(v, v') en el grafo.
5. Algoritmos
• Algoritmo de Dijkstra, resuelve el problema de los caminos más cortos desde
un único vértice origen hasta todos los otros vértices del grafo.
• Algoritmo de Bellman - Ford, resuelve el problema de los caminos más cortos
desde un origen si la ponderación de las aristas es negativa.
• Algoritmo de Búsqueda A*, resuelve el problema de los caminos más cortos
entre un par de vértices usando la heurística para intentar agilizar la búsqueda.
• Algoritmo de Floyd - Warshall, resuelve el problema de los caminos más
cortos entre todos los vértices.
• Algoritmo de Johnson, resuelve el problema de los caminos más cortos entre
todos los vértices y puede ser más rápido que el de Floyd-Warshall en grafos de
baja densidad.
• Algoritmo de Viterbi, resuelve el problema del camino estocástico más corto
con un peso probabilístico adicional en cada vértice.
6. Ejemplo de Algoritmo de Dijkstra
◦ El siguiente ejemplo se mostrara como 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.
7. Se escoge de los nodos adyacentes aquel que
tiene una menor peso en la arista, en este caso, el
nodo d. En d
•Distancia:5
•Nodos procesados:A
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
•Nodos procesados:A,D
8. Solución momentánea:
•Camino: ADCB
•Distancia:11
•Nodos procesados:A,D,C
Como podemos comprobar, se han añadido un candidato
nuevo, el vértice f, 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
•Nodos procesados:A,D,C,B
9. 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: ADCBG
•Distancia:17
•Nodos procesados:A,D,C,B,F
En el penúltimo paso, vuelve a aparecer otro candidato: el
vértice e, pero esta vez a través del vértice f. 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
•Nodos procesados:A,D,C,B,F,G
10. Por fin, llegamos al último paso, en el que sólo se añade
un candidato, el vértice z a través del vértice e. El camino
mínimo y final obtenido es:
Solución Final:
•Camino: ADCBFEZ
•Distancia:23
•Nodos procesados:A,D,C,B,F,G,E
11. Ejemplo de Algoritmo de Bellman - Ford
◦ En el paso 0, inicializamos todas las distancias mínimas a INFINITO.
12. • En el paso 1, actualizamos el paso anterior, aplicando las fórmulas. En este caso
ponemos la distancia de los nodos que tienen accesos directos al vértice 1 y se
la sumamos a la distancia mínima acumulada que hay hasta el vértice oportuno.
Aquí esta distancia acumulada sería 0 para 1, debido a que sería la distancia a
él mismo, e infinito para el resto porque no han sido analizados todavía.
• En el paso 2, al saber ya una distancia mínima acumulada desde los nodos 2 y 3
hasta 1, podemos actualizar las distancias mínimas de los nodos 4 y 5.
13. ◦ En los pasos sucesivos, se van actualizando las distancias mínimas acumuladas
(D) de los distintos vértices hasta 1, y se van utilizando en los pasos siguientes
para optimizar el camino mínimo. El final del algoritmo se da cuando no hay
ningún cambio de un paso a otro, es decir, cuando ya no se puede encontrar un
camino más corto.