He estado estudiando los tres y estoy declarando mis inferencias de ellos a continuación. ¿Podría alguien decirme si los he entendido con la suficiente precisión o no? Gracias.
El algoritmo de Dijkstra se usa solo cuando tiene una sola fuente y desea conocer la ruta más pequeña de un nodo a otro, pero falla en casos como este .
El algoritmo Floyd-Warshall se usa cuando cualquiera de los nodos puede ser una fuente, por lo que desea que la distancia más corta llegue a cualquier nodo de destino desde cualquier nodo fuente. Esto solo falla cuando hay ciclos negativos.
Bellman-Ford se usa como Dijkstra, cuando solo hay una fuente. Esto puede manejar pesos negativos y su funcionamiento es el mismo que Floyd-Warshall, excepto por una fuente, ¿verdad? (De esto estoy menos seguro).
fuente
Respuestas:
previous[v]
El comportamiento del algoritmo de Dijkstra en gráficos con bordes negativos depende de la variante precisa en discusión. Algunas variantes del algoritmo, como la de Wikipedia, siempre se ejecutan rápidamente pero no calculan correctamente las rutas más cortas cuando hay bordes negativos. Otras variantes, como la de estas notas de clase, siempre calculan los caminos más cortos correctamente (a menos que haya un ciclo negativo accesible desde la fuente) pero pueden requerir un tiempo exponencial en el peor de los casos si hay bordes negativos.
Eso es correcto. Floyd-Warshall es un ejemplo de un algoritmo de ruta más corta de todos los pares , lo que significa que calcula las rutas más cortas entre cada par de nodos. Otro ejemplo es "para cada nodo v, ejecute Dijkstra con v como el nodo fuente". Hay varios otros.
Para más detalles, consulte su libro de texto de algoritmos favoritos. (Usted tiene un libro de texto de algoritmos favorito, ¿verdad?)
fuente
Los tres algoritmos están cubiertos en las diapositivas de la conferencia por el Prof. Jaehyun Park (Universidad de Stanford). Aquí está el enlace Algoritmos de ruta más corta
fuente
La página de Wikipedia sobre el problema de la ruta más corta describe dos problemas diferentes: SSSP y APSP.
Ruta más corta de fuente única (SSSP):
Algoritmo Bellman-Ford: resuelve el problema de fuente única si los pesos de los bordes pueden ser negativos. Esta es una mejora en Dijkstra, donde ahora también es capaz de manejar pesos negativos.
Todos los pares de ruta más corta (APSP):
Por lo tanto, Floyd – Warshall no es lo mismo que BFS, aunque la metodología subyacente es la misma, programación dinámica.
fuente
Quizás esto debería ser un comentario en lugar de una respuesta, pero es una distinción entre estos algoritmos que otras respuestas no mencionan.
La gente tiende a llamar al algoritmo de Floyd Floyd-Warshall , pero los algoritmos de Floyd y Warshall no son lo mismo.
fuente