O algoritmo de Dijkstra é usado apenas quando você tem uma única fonte e deseja conhecer o menor caminho de um nó para outro, mas falha [em gráficos com arestas negativas]
ssprevious[v]
v
O comportamento do algoritmo de Dijkstra em gráficos com arestas negativas depende da variante precisa em discussão. Algumas variantes do algoritmo, como a da Wikipedia, sempre são executadas rapidamente, mas não calculam corretamente os caminhos mais curtos quando existem arestas negativas. Outras variantes, como a destas notas de aula, sempre calculam os caminhos mais curtos corretamente (a menos que haja um ciclo negativo acessível a partir da fonte), mas podem exigir tempo exponencial na pior das hipóteses, se houver arestas negativas.
O algoritmo de Floyd-Warshall é usado quando qualquer um dos nós pode ser uma fonte, portanto, você deseja que a distância mais curta alcance qualquer nó de destino a partir de qualquer nó de origem. Isso só falha quando há ciclos negativos.
Está correto. Floyd-Warshall é um exemplo de algoritmo de caminho mais curto para todos os pares , o que significa que ele calcula os caminhos mais curtos entre todos os pares de nós. Outro exemplo é "para cada nó v, execute Dijkstra com v como o nó de origem". Existem vários outros.
Bellman-Ford é usado como o de Dijkstra, quando há apenas uma fonte. Isso pode lidar com pesos negativos e seu trabalho é igual ao de Floyd-Warshall, exceto por uma fonte, certo?
O ( V3)O ( V2E)O ( VE)
Para mais detalhes, consulte o seu livro de algoritmos favorito. (Você tem um livro de algoritmos favorito, não é?)