Sunteți pe pagina 1din 5

Problema drumului de cost minim

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∗i = min(aij + x∗j ), i = 2, . . . , n


j

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 Problema celui mai scurt drum


Presupunem ca avem un graf ce contine n noduri numerotate de la 1 la n. Notam cu A(i) multimea nodurilor
j pentru care exista un arc (i, j) de la nodul i. Nodul 1 este un nod special numit destinatie. Presupunme
ca A(1) este vida. Pentru fiecare arc (i, j) avem un scalar aij care reprezinta lungimea arcului. Lungimea
drumului {(i, i1 ), . . . , (ik , j)} care incepe din nodul i si se termina in nodul j prin suma aii1 + · · · + aik j . Se
pune problema gasirii delui mai scurt drum sau a unui drum de lungime minima pornind din fiecare nod i.
Presupunem ca exista un drum de la fiecare nod i = 2, . . . , n la nodul destinatie 1 si ca fiecare ciclu are
lungime pozitiva.
Drumul de lungime minma reprezinta solutia sitemului (obtinand astfel ecuatia Bellman):

x∗i = min (aij + x∗j ), i = 2, . . . , n


j∈A(i)

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:

xki = min (aij + xk−1


j ), i = 2, . . . , n
j∈A(i)

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

Lemma 2.1 Avem urmatoarea relatie:

xki = min (wij


k
+ x0j ), ∀i = 2, . . . , n, k ≤ 1
j=1,...,n

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.

xki este egal cu cea mai mica distanta xai st

• 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.

In figura 3 este prezentat cazul in care graful are cicluri.

3 Alte metode paralele pentru determinarea drumului de cost minim


• Algoritmul Floyd-Warshall
Incepe cu conditiile initiale:
{
aij , dacaj ∈ A(i)
x0ij =
∞, altf el

si genereaza secvential pentru k = 0, 1, . . . , n − 1 si pentru tpate nodurile i si j


{
min{xkij , xkik+1 + xkk+1j }, dacaj ̸= i
xk+1 =
ij ∞, altf el

• Algoritmul de dublare este dat de urmatoarele formule:



 aij , dacaj ∈ A(i)
x1ij = 0, dacai = j

∞, altf el
{
min{xkim + xkjm }, dacaj ̸= i
xk+1
ij = m
0, dacai = j

3
Figure 2: Relatia dintre numarul de iteratii si lungimile arcelor pentru algoritmul Bellman-Ford

4
Figure 3: Numarul de iteratii - algoritmul Bellman-Ford

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