|
Article on other languages:
|
Algorytm Bellmana-Forda rozwiązuje problem najkrótszej ścieżki, tj. pozwala znaleźć ścieżkę o najmniejszej wadze pomiędzy dwoma wierzchołkami w grafie ważonym. Idea algorytmu opiera się na metodzie relaksacji (dokładniej następuje relaksacja V − 1 razy każdej z krawędzi). W odróżnieniu od algorytmu Dijkstry, poprawność algorytmu Bellmana-Forda nie opiera się na założeniu, że wagi w grafie są nieujemne (nie może jednak występować cykl o łącznej ujemnej wadze osiągalny ze źródła). Za tę ogólność płaci się jednak wyższą złożonością czasową. Działa on w czasie O(V*E). Zapis w pseudokodzieDla grafu G, funkcji wagowej w i wierzchołka s otrzymamy tablicę d[u] odległości każdego wierzchołka grafu od wierzchołka s.
Bellman-Ford(G,w,s):
dla każdego wierzchołka v w V[G] wykonaj
d[v] = nieskończone
poprzednik[v] = niezdefiniowane
d[s] = 0
dla i od 1 do |V[G]| - 1 wykonaj
dla każdej krawędzi (u,v) w E[G] wykonaj
jeżeli d[v] > d[u] + w(u,v) to
d[v] = d[u] + w(u,v)
poprzednik[v] = u
Zobacz też: problem najkrótszej ścieżki, algorytm Dijkstry Linki zewnętrzne |
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.