Sunteți pe pagina 1din 11

Cerceta¼ri operaţionale


arb¼
acioru Iuliana Carmen
CURSUL 2
Cursul 2

2
Cuprins

1 Elemente de teoria grafurilor 5


1.1 Obiectul teoriei grafurilor. Noţiuni generale . . . . . . . . . . . . . 5
1.2 Concepte neorientate . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Determinarea drumului de valoare optim¼ a . . . . . . . . . . . . . . 5
1.3.1 Algoritmul Ford . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Algoritmul lui Dijkstra . . . . . . . . . . . . . . . . . . . . . 8
1.3.3 Algoritmul Bellman- Kalaba . . . . . . . . . . . . . . . . . . 9

Index 10

3
Cursul 2

4
Capitolul 1

Elemente de teoria grafurilor

1.1 Obiectul teoriei grafurilor. Noţiuni generale

1.2 Concepte neorientate

1.3 Determinarea drumului de valoare optim¼


a
Una din problemele teoriei grafurilor const¼ a în determinarea drumului de valoare
minim¼ a sau maxim¼ a dintre dou¼ a vârfuri xi ; xj 2 X ale grafului G = (X; ) =
(X; U ).
Fiec¼ arui arc ui 2 U i se asociaz¼ a un num¼ ar real notat cu v (ui ) 0 sau
v (xi ; xj ) 0 sau înc¼ a vij 0 numit valoarea arcului şi care, în funcţie de
problema economic¼ a ce urmeaz¼ a a … rezolvat¼ a, poate reprezenta:
- costul sau durata transportului pe ruta (xi ; xj );
- costul de fabricaţie al unui produs;
- timpul necesar execut¼ arii unui produs;
- productivitatea muncii, etc.

De…niţia 1.3.1 Fie drumul = (u1 ; u2 ; :::; uk ). M¼arimea v ( ) dat¼a de relaţia:

n
X
v( ) = v (ui ) (3.1)
i=1

se numeşte valoarea drumului .

5
Cursul 2

Observaţia 1.3.2 În general unui graf i se poate asocia o matrice A = (aij )1 i;j n
numit¼a matricea grafului. Elementele matricii se de…nesc astfel:
(
1; dac¼a (9) (xi ; xj ) 2 U
aij = (3.2)
0; dac¼a (@) (xi ; xj ) 2 U

De regul¼
a intereseaz¼
a valoarea optim¼ a a drumului format din succesiunea de
arce ui 2 U care leag¼ a nodul iniţial x1 cu cel …nal xn .
În continuare vom prezenta dou¼ a dintre metodele de a‡are a drumului de
valoare optim¼a dintr-un graf G = (X; ) f¼ ar¼
a circuite.

1.3.1 Algoritmul Ford


Fie G = (X; ) un graf în care arcele au valorile vij = v (xi ; xj ) 0.
Algoritmul lui Ford permite determinarea drumului de valoare minim¼ a de
la vârful x1 la vârful xn şi are la baz¼
a urm¼atoarele principii:
Fiec¼
arui vârf xk al grafului i se asociaz¼
a un marcaj ce reprezint¼ a valoarea unui
drum arbitrar de la vârful xh la vârful xk notat¼ a ahk .
Pentru un arc (xi ; xj ) 2 U pot ap¼ area urm¼
atoarele situaţii :

a) ahk ahj < vjk (3.3)


b) ahk ahj = vjk (3.3)
c) ahk ahj > vjk (3.3)

Figura 3.1

Din (3.3), rezult¼


a ahk < ahj vjk adic¼ a drumul direct de la vârful de la xh
la vârful xk are o valoare mai mic¼a decât drumul de la xh prin xj la xk .
Din (3.3), rezult¼
a c¼
a cele dou¼
a drumuri au aceeaşi valoare.
Din (3.3), rezult¼
a c¼
a drumul de la xh la xk prin vârful xj are o valoare mai
mic¼a decât drumul direct de la xj la xk .

6
Cercet¼
ari Operaţionale B¼
arb¼
acioru Iuliana Carmen

Algoritmul 1.3.3 (Algoritmul Ford) Este o operaţie secvenţial¼a ce se des-


f¼aşoar¼a în urm¼atoarele etape:
Etapa I-a Fiec¼arui vârf al grafului i se asociaz¼a un marcaj a0k ; k = 1; n,
reprezentând valoarea unui drum arbitrar de la x1 la xk . În particular se ia
a01 = 0.
Etapa a II-a Vom conveni c¼a 1 1 = 0!;
Pasul 1 Se compar¼a diferenţa dintre marcajul vârfului …nal şi marcajul vârfului
iniţial pe …ecare arc a0k a0h cu valoarea arcului vhk şi se modi…c¼a marcajul
vârfului …nal astfel:
(
a0h + vhk ; dac¼a a0k a0h > vhk
a1k = (3.4)
a0k ; dac¼a a0k a0h vhk

Pasul 2 Cu noile marcaje a01 = 0; a12 ; :::; a1n se procedeaz¼a în acelaşi mod,
(
a1h + vhk ; dac¼a a1k a1h > vhk
a2k =
a1k ; dac¼a a1k a1h vhk

Pasul 3 Procedeul continu¼a pân¼a când, dup¼a ajust¼ari succesive ale marcajelor
vârfurilor, (vom presupune s num¼arul acestora) se obţin numai inegalit¼aţi de
forma:
ask ash vhk ; (8) (xh ; xk ) 2 U
În acest moment ask este valoarea minim¼a a drumurilor de la x1 la xk ;
Etapa a III-a Pentru identi…carea vârfurilor prin care trece drumul de valoare
minim¼a, din iteraţia s se aleg relaţiile satisf¼acute prin egalit¼aţi, parcurgând graful
de la xn spre x1 . Fie egalit¼aţile:

asn asjp = vjpn


asjp asjp 1
= vjp 1 jp

:::::::::::::::: = ::::::::
asj1 as1 = v1j1

Adunând aceste egalit¼aţi membru cu membru obţinem:

asn = v1j1 + v1j2 + ::: + vjp 1 jp + vjpn

şi cum asn este valoarea minim¼a a drumurilor dintre x1 şi xn acest drum
este:
min = x1 ; xj1 ; :::; xjp 1 ; xjp ; xn

7
Cursul 2

Observaţia 1.3.4 Algoritmul lui Ford poate … aplicat şi în scopul determin¼arii
drumului de valoare maxim¼a între dou¼a vârfuri ale unui graf f¼ar¼a circuite modi…cându-
se doar criteriul de îmbun¼at¼aţire a marcajelor vârfurilor din etapa 2:
(
1 a0h + vhk ; dac¼a a0k a0h < vhk
ak =
a0k ; dac¼a a0k a0h vhk

Procedeul se opreşte la pasul s, când sunt satisf¼acute inegalit¼aţile: a0k a0h vhk ;
(8) (xh ; xk ) 2 U .

1.3.2 Algoritmul lui Dijkstra


În algoritmul lui Ford, pentru a g¼ asi valoarea vârfului …nal, deci a drumului
optim, plec¼am de la nodul iniţial în toate direcţiile posibile, p¼astrând de …ecare
dat¼
a toate vârfurile analizate. Acest fapt duce la un consum inutil de timp,
deoarece foarte multe dintre aceste vârfuri nu vor face parte din drumul optim.
Pentru a elimina acest neajuns, algoritmul lui Dijkstra încearc¼ a s¼
a p¼
astreze la
…ecare iteraţie mulţimea minim¼a de vârfuri care s¼ a le conţin¼
a pe toate cele care
vor forma efectiv drumul optim. În plus, algoritmul se poate aplica şi în drumuri
cu circuite. Ca un minus este faptul c¼ a se aplic¼
a doar la probleme de minim.

Algoritmul 1.3.5 (Algoritmul lui Dijkstra) Algoritmul are urm¼atorii paşi:


Pasul 1 Atribuim vârfului iniţial valoarea zero: w (x1 ) = 0;
Pasul 2 Se construieşte mulţimea A format¼a din vârful iniţial: A = fx1 g ;
Pasul 3 Se analizeaz¼a vârfurile din afara mulţimii A;
3.1. Dac¼a exist¼a vârfuri în care se poate ajunge prin arce directe din A ( nu doar
de la vârfurile mulţimii A, ca la algoritmul lui Ford ) se calculeaz¼a pentru toate
acestea:
w (xi ) = min (w (xi ) + v (xi ; xj ))
xj 2 A
9 (xi ; xj )

şi se adaug¼a la mulţimea A doar cel pentru care se obţine valoarea minim¼a, apoi
se trece la pasul 4.
3.2. Dac¼a nu exist¼a nici un vârf de acest tip atunci nu exist¼a nici un drum de la
x1 la xn :
Pasul 4 Se analizeaz¼a mulţimea A;
4.1. Dac¼a xn 2 A atunci valoarea sa reprezint¼a valoarea drumului optim de la x1
la xn : Pentru g¼asirea acestui drum se porneşte de la vârful …nal spre cel iniţial

8
Cercet¼
ari Operaţionale B¼
arb¼
acioru Iuliana Carmen

şi se g¼asesc vârfurile xk1 = xn ; xk2 = x 1 ; :::; xkr = x1 care formeaz¼a drumul
c¼autat, unde …ecare indice ki+1 este acela pentru care

w xki+1 + v xki+1 ; xki = w (xki )

4.2. Dac¼a xn 2
= A atunci se reia algoritmul de la pasul 3.

1.3.3 Algoritmul Bellman- Kalaba


Se bazeaz¼ a pe principiul general al program¼ arii dinamice care în cazul de faţ¼
a
cap¼
at¼
a urm¼ atoarea formulare:
Dac¼a drumul de valoare minim¼ a (maxim¼ a) care uneşte x1 cu xn trece prin
vârfurile intermediare xh şi xk atunci drumul parţial care uneşte xh cu xk este
drumul de valoare minim¼ a (maxim¼ a) între aceste dou¼a vârfuri.
Vom presupune în continuare c¼ a se cere determinarea drumului de valoare
minim¼ a din graful G = (X; ).
Ataş¼
am grafului G matricea C = (cij )1 i;j n în care elementele cij se
de…nesc astfel:
8
>
>
< v (xi ; xj ) daca (xi ; xj ) 2 U (i 6= j)
cij = 1 daca (xi ; xj ) 2
= U (i 6= j) (3.6)
>
>
: 0 daca i=j

Fiec¼
arui vârf xi al grafului i se asociaz¼a o variabil¼
a vi care are semni…caţia
de valoare a drumului care uneşte xi cu xn . Soluţia problemei se obţine prin
rezolvarea sistemului de ecuaţii:
8
< vi = min (vi + cij ) i = 1; n 1, j = 1; n 1
cij = i6=j (3.7)
: v =0
n

Într-adev¼ar, se poate ar¼ ata c¼


a, dac¼
a v1 ; v2 ; :::; vn este soluţia acestui sistem de
ecuaţii, atunci v1 reprezint¼ a valoarea minim¼ a a drumului care uneşte pe x1 cu
xn .
Pentru rezolvarea sistemului (3.6) se utilizeaz¼ a un procedeu iterativ care
pleac¼ a de la condiţia iniţial¼
a:
( (0)
vi = cin ; i = 1; n 1
(0)
vn = 0

9
Cursul 2

Fiecare iteraţie k; (k = 1; 2; :::) const¼


a în rezolvarea sistemului:
8
< v (k) = min v (k 1) + cij i = 1; n 1, j = 1; n , k = 1; 2; :::
i i
i6=j (3.8)
: v (k) = 0
n

Procesul de calcul se încheie atunci când se g¼


aseşte:
(k 1) (k)
vi = vi ; i = 1; n
(k)
Atunci vi = vi , i = 1; n , iar valoarea minim¼
a a drumului care uneşte x1
(k)
cu xn este v1 = v1 .
(k)
Determinarea arcelor drumului de valoare minim¼
a v1 = v1 se face astfel:
Fie xj1 vârful pentru care:
(k) (k 1) (k 1)
v1 = min vi + c1j = vj1 + c1j1
i6=1

(k 1)
Drumul de lungime minim¼ a ce trece prin xj1 şi vj1 reprezint¼
a valoarea
minim¼a a drumului care uneşte xj1 cu xn .
În continuare s¼
a presupunem c¼ a:
(k 1) (k 2) (k 2)
vj1 = min vj + cj1 j = vj2 + cj1 j2
j6=j1

Drumul c¼ autat va trece prin xj2 .


(k 2) (0)
Repet¼
am procedura plecând de la vj2 pân¼
a când se va ajunge la vjk = cjk n .
Drumul de valoare minim¼ a va …:

= (x1 ; xj1 ; xj2 ; :::; xjk ; xn )

Este clar c¼
a dac¼
a unul dintre vârfurile intermediare nu este unic determinat
vor exista mai multe drumuri de valoare minim¼ a.

Observaţia 1.3.6 Pentru aplicarea algoritmului Bellman- Kalaba în vederea de-


termin¼arii drumului de valoare maxim¼a se introduc urm¼atoarele modi…c¼ari:

1. La de…nirea elementelor matricei C, dac¼a (xi ; xj ) 2


= U atunci cij = 1.

2. În relaţiile (3.7) şi (3.8) se înlocuieşte operatorul de minim cu operatorul


de maxim.

10
Index

Algoritmul
Bellman - Kalaba, 9
Dijkstra, 8
Ford, 6

Matricea
grafului, 6

Valoarea
arcului, 5
drumului, 5

11

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