E N D
Sa intelegem… Algoritmul Bellman-Ford determina drumurile minime de la un varf de start la toate celelalte varfuri in graf,chiar daca exista costuri negative pe arce. Exista solutie doar daca in varful de start nu se ajunge la un drum de cost negativ, deoarece acesta ar duce la minimizarea drumului la infinit.
…maimult… Algoritmulincearcasareducasuccesivcostuldrumului de la nodul de plecare la oricevarf k din graf (d[k]) pana la obtinereacostului minim, astfel se verificapentrufiecare arc(j,k) dacaparticipa la minimizareadistantei de la nodul de plecare la nodul k (adicadacarespectaconditia d[k]>d[j]+c[j][k]).
Drumul… Drumul se poaterealizaatatiterativ,catsirecursiv. In ambelevariantevomreconsruidrumul “inapoi”,plecand de la varfuldestinatieiy. in vectorultata[y] estememoratpredecesorulvarfului y pedrumul de cost minim de la x0 la y siasamaideparte. Reconstruireadrumului se terminaatuncicandajungem in varful de start.
CHESTII IMPORTANTE: 1)Observati ca drumul va fi obtinut in ordine inversa. Pentru a obtine drumul in ordinea corecta in varianta iterativa, vom memora drumul intr-un vector,pe care ulterior il vom parcurge de la sfarsit la inceput;
Chestii importante 2 • 2)In varianta recursiva, vom utiliza proprietatile stivei. 3) Algoritmul Bellman Ford astfel prezentate reține câte un singur drum de cost minim de la vârful sursă la fiecare dintre celelalte vârfuri ale grafului.
Alte chestii importante • Pentru a obtine drumurile de cost minim, se vor retine pentru fiecare varf Y din graf toate varfurile care il preceda pe y pe un drum de cost minim de la X0 la Y.
Continuare • Acestlucru se va face astfel: • tata[i][0] este numărul vârfurilor din care se poate atinge vârful i obținând • un cost minim • tata[i][k] este cel de-al k-lea nod din care se poate atinge vârful i obținând • un cost minim, unde k este strict pozitiv.
Complexitate • Complexitatea algoritmului Bellman Ford este O(n^3), deoarece algoritmulexecută de n ori secvența de minimizare distanțelor având complexitatea O(n^2). • Dacă graful este memorat în liste de adiacență, complexitatea algoritmului este O(nxm).