Algorytm Dijkstry jest używany tylko wtedy, gdy masz jedno źródło i chcesz poznać najmniejszą ścieżkę z jednego węzła do drugiego, ale zawodzi [na wykresach z ujemnymi krawędziami]
ssprevious[v]
v
Zachowanie algorytmu Dijkstry na wykresach z ujemnymi krawędziami zależy od dokładnie omawianego wariantu. Niektóre warianty algorytmu, takie jak ten w Wikipedii, zawsze działają szybko, ale nie obliczają poprawnie najkrótszych ścieżek, gdy występują ujemne krawędzie. Inne warianty, takie jak ten w notatkach z wykładów, zawsze poprawnie obliczają najkrótsze ścieżki (chyba że istnieje ujemny cykl dostępny ze źródła), ale w najgorszym przypadku mogą wymagać czasu wykładniczego, jeśli występują ujemne krawędzie.
Algorytm Floyda-Warshalla jest używany, gdy dowolny ze wszystkich węzłów może być źródłem, więc chcesz, aby najkrótsza odległość dotarła do dowolnego węzła docelowego z dowolnego węzła źródłowego. Nie udaje się to tylko wtedy, gdy występują cykle ujemne.
To jest poprawne. Floyd-Warshall jest jednym z przykładów algorytmu najkrótszej ścieżki złożonej z wszystkich par , co oznacza, że oblicza najkrótsze ścieżki między każdą parą węzłów. Innym przykładem jest „dla każdego węzła v uruchom Dijkstra z v jako węzłem źródłowym”. Istnieje kilka innych.
Bellman-Ford jest używany jak Dijkstra, gdy jest tylko jedno źródło. Może to obsługiwać ujemne wagi, a jego działanie jest takie samo jak Floyda-Warshalla, z wyjątkiem jednego źródła, prawda?
O ( V3))O ( V2)mi)O( Vmi)
Aby uzyskać więcej informacji, zapoznaj się z podręcznikiem ulubionych algorytmów. (Robisz mieć ulubione algorytmy podręcznik, prawda?)