Documente Academic
Documente Profesional
Documente Cultură
Problema celui mai scurt drum este des intalnita. Presupunem ca avem un graf si fiecarui arc (i, j) al
grafului ii asociem un cost sau o lungime aij . Lungimea drumului (i, i1 , . . . , ik , j) de la nudul i la nodul j
cu arcele (i, i1 ), . . . , (ik , j) este definita de suma lungimii arcelor aii1 + · · · + aik j . Problema este de a gasi
drumul de lungime minima de la nodul i la nodul j.
Aplicatii ale problemei drumului de lungime minima:
• probleme de cautare;
• probleme de control optim;
• subrutine in rezolvarea altor probleme mari.
Problema drumului minim este un caz particular al programarii dinamice care trateaza probleme de de-
cizie optima. Pornind din nodul i, prima decizie este de a alege unarc (i, i1 ), apoi de a alege un arc (i1 , i2 ),
si asa mai departe pana la nodul 1. Pentru prima decizie trebuie sa facem o balanta intre a alege un arc de
lungime mica si dorinta de a evita alegerea unui nod j foarte departe de destinatie. Aceasta problema este
captata in ecuatia:
x∗1 = 0
care va fi satisfacuta de drumul minim x∗i , i = 1, . . . , n.
Algoritmul de programare dinamica pentru problema drumului minim are forma:
xi = min(aij + xj ), i = 2, . . . , n
j
x1 = 0
Acest algoritm este potrivit pentru o implementare paralela sau distribuita deoarece minimizarea peste j
poate fi implementata paralel pentru toate nodurile i ̸= 1.
1
x∗1 = 0
Iteratia
xi = min (aij + xj ), i = 2, . . . , n
j∈A(i)
x1 = 0
cunoscuta sub denumirea de algoritmul Bellman-Ford converge la o solutie pentru un vector initial arbitrar x
cu x1 = 0.
2 Algoritmul Bellman-Ford
Iteratia k a argoritmului Bellman-Ford are forma:
xk1 = 0
In ceea ce priveste conditiile initiale, presupunem ca x01 = 0 si x0i ∈ R pentru i = 2, . . . , n. Spunem ca
algoritmul se termina dupa iteratia k daca xki = xk−1
i , i = 1, . . . , n.
Dandu-se nodurile i ̸= 1 si j ̸= 1 definim:
k
wij =drumul de lungime dintre nodurile i si j si care are k arce
Theorem 2.1 • Exista un cel mai scurt drum de la fiecare nod i la 1 care are cel mult n-1 arce.
• Pentru orice set de conditii initiale algoritmul Bellman-Ford se termina dupa un numar finit k de
iteratii.
• Daca x0i ≤ x∗i , algoritmul Bellman-Ford se termina in cel mult m∗ iteratii, unde
m∗ = max mi ≥ n − 1
i=2,...,n
si mi este cel mai mic numar de arce continut intr-un drum minim de la i la 1.
• Cea mia mica distanta x∗i reprezinta solutia unica a ecuatiei Bellman.
Figura 1 prezinta un exemplu in care algoritmul esueaza daca ciclurile au lungime nenegativa.
Numarul de iteratii depinde foarte mult de conditiile initiale. Pentru anumite conditii initiale, acest numar
poate fi foarte mare si poate depinde si de dimensiunea arcelor (figura 2).
2
Figure 1: Problema drumului de cost minim in cazul in care avem un ciclu de lungime 0
Theorem 2.2 Algoritmul Bellman-Ford se termina dupa cel mult k + 1 iteratii, unde
∗
m , daca β ≤ 0
k= n − 1, daca β > 0si graf ul este aciclic
n − 2 + [Lβ
], daca β > 0si graf ul are cicluri
m∗ este dat de
m∗ = max mi ≥ n − 1
i=2,...,n
si mi este cel mai mic numar de arce continut intr-un drum minim de la i la 1.
3
Figure 2: Relatia dintre numarul de iteratii si lungimile arcelor pentru algoritmul Bellman-Ford
4
Figure 3: Numarul de iteratii - algoritmul Bellman-Ford