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 gráficos con bordes negativos]
ssprevious[v]
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.
El algoritmo de Floyd-Warshall se usa cuando cualquiera de todos 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.
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.
Bellman-Ford se usa como Dijkstra, cuando solo hay una fuente. Esto puede manejar pesos negativos y su funcionamiento es el mismo que el de Floyd-Warshall, excepto por una fuente, ¿verdad?
O(V3)O(V2E)O(VE) para cada vértice fuente).
Para más detalles, consulte su libro de texto de algoritmos favoritos. (Usted tiene un libro de texto de algoritmos favorito, ¿verdad?)