Sunteți pe pagina 1din 8

ALGORITMUL BELLMAN-FORD

ALGORITMUL BELLMAN
FORD
Algoritmul Bellman Ford determin vrfurile minime de la un vrf de
start x0 la toate celelalte vrfuri in graf, chiar dac exist costuri
negative pe arce. Se consider c exist soluie doar in cazul n
care vrful de start nu se ajunge la un circuit de cost negativ,
deoarece acesta ar duce la minimizarea drumului la infinit.
Algoritmul ncearc s minimizeze succesiv costul drumului de la x0
la orice vrf k din graf (d[k]) pn la obinerea costului minim, astfel
se verific pentru fiecare arc (j, k) dac particip la minimizarea
distanei de la x0 la k, adic dac respect condiia: d[k]> d[j]+ c[j]
[k].
Operaia de minimizare a distanelor se repet de n ori.
n final dac variabila ok va avea valoarea 1, semn c s-a
descoperit un circuit negativ, un mesaj cu acest text va fi afiat.
PSEUDOCOD:
IMPLEMENTARE ALGORITM:
Limbajul Pascal Limbajul C++
EXEMPLU:
RECONSTRUIREA DRUMULUI
Reconstruirea drumului de poate realiza att iterativ,
ct si recursiv. n ambele variante, vom reconstitui
drumul napoi, placnd de la vrful destinaiei y.
n vectorul tata[y] este memorat predecesorul vrfului
y pe drumul de cost minim de la x0 la y, .a.m.d.
Reconstituirea drumului se termin atunci cnd
ajungem n vrful de start.
Observai c drumul va fi obinut n ordine invers.
Pentru a obine drumul n ordinea corect n varianta
iterativ vom memora drumul ntr-un vector, pe care
ulterior l vom parcurge de la sfrit ctre nceput.
n varianta recursiv, vom utiliza proprietile stivei.
OBSERVAIE
Algoritmul Bellman Ford astfel prezentate reine cte un
singur drum de cost minim de la vrful surs la fiecare dintre
celelalte vrfuri ale grafului.
Pentru a obine toate drumurile de cost minim de la surs la
fiecare dintre celelalte vrfuri, se pot reine, pentru fiecare
vrf y din graf, toate vrfurile care l preced pe y pe un drum
de cost minim de la x0 la y. Pentru aceasta, tata va fi un
tablou bidimensional n care informaiile sunt reinute astfel:
- tata[i][0] este numrul vrfurilor din care se poate atinge vrful i
obinnd un cost minim
- tata[i][k] este cel de-al k-lea nod din care se poate atinge vrful
i obinnd un cost minim, unde k este strict pozitiv.
COMPLEXITATE
Complexitatea algoritmului Bellman Ford este O(n
3
),
deoarece algoritmul execut de n ori secvena de
minimizare distanelor avnd complexitatea O(n
2
).
Dac graful este memorat n liste de adiacen,
complexitatea algoritmului este O(nxm).

S-ar putea să vă placă și