Sunteți pe pagina 1din 11

Cercetari operationale

B
arb
acioru Iuliana Carmen
CURSUL 2

Cursul 2

Cuprins
1 Elemente de teoria grafurilor
1.1 Obiectul teoriei grafurilor. Notiuni generale
1.2 Concepte neorientate . . . . . . . . . . . . .
1.3 Determinarea drumului de valoare optim
a .
1.3.1 Algoritmul Ford . . . . . . . . . . .
1.3.2 Algoritmul lui Dijkstra . . . . . . . .
1.3.3 Algoritmul Bellman- Kalaba . . . . .
Index

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

5
5
5
5
6
8
9
10

Cursul 2

Capitolul 1

Elemente de teoria grafurilor


1.1

Obiectul teoriei grafurilor. No


tiuni 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 vrfuri 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 si care, n functie de
problema economic
a ce urmeaz
a a rezolvat
a, poate reprezenta:
- costul sau durata transportului pe ruta (xi ; xj );
- costul de fabricatie al unui produs;
- timpul necesar execut
arii unui produs;
- productivitatea muncii, etc.
Deni
tia 1.3.1 Fie drumul

= (u1 ; u2 ; :::; uk ). Marimea v ( ) data de relatia:


v( ) =

n
X
i=1

se nume
ste valoarea drumului

.
5

v (ui )

(3.1)

Cursul 2
Observa
tia 1.3.2 n general unui graf i se poate asocia o matrice A = (aij )1 i;j n
numita matricea grafului. Elementele matricii se denesc astfel:
(
1; daca (9) (xi ; xj ) 2 U
aij =
(3.2)
0; daca (@) (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 initial x1 cu cel nal xn .
n continuare vom prezenta dou
a dintre metodele de aare 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 vrful x1 la vrful xn si are la baz
a urm
atoarele principii:
Fiec
arui vrf xk al grafului i se asociaz
a un marcaj ce reprezint
a valoarea unui
drum arbitrar de la vrful xh la vrful xk notat
a ahk .
Pentru un arc (xi ; xj ) 2 U pot ap
area urm
atoarele situatii :
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 vrful de la xh
la vrful xk are o valoare mai mic
a dect drumul de la xh prin xj la xk .
Din (3.3), rezult
a c
a cele dou
a drumuri au aceeasi valoare.
Din (3.3), rezult
a c
a drumul de la xh la xk prin vrful xj are o valoare mai
mic
a dect drumul direct de la xj la xk .
6

Cercet
ari Opera
tionale B
arb
acioru Iuliana Carmen
Algoritmul 1.3.3 (Algoritmul Ford) Este o operatie secventiala ce se desfasoara n urmatoarele etape:
Etapa I-a Fiecarui vrf al grafului i se asociaza un marcaj a0k ; k = 1; n,
reprezentnd valoarea unui drum arbitrar de la x1 la xk . n particular se ia
a01 = 0.
Etapa a II-a Vom conveni ca 1 1 = 0!;
Pasul 1 Se compara diferenta dintre marcajul vrfului nal si marcajul vrfului
initial pe ecare arc a0k a0h cu valoarea arcului vhk si se modica marcajul
vrfului nal astfel:
(
a0h + vhk ; daca a0k a0h > vhk
a1k =
(3.4)
a0k ;
daca a0k a0h vhk
si mod,
Pasul 2 Cu noile marcaje a01 = 0; a12 ; :::; a1n se procedeaza n acela
(
a1h + vhk ; daca a1k a1h > vhk
a2k =
a1k ;
daca a1k a1h vhk
Pasul 3 Procedeul continua pna cnd, dupa ajustari succesive ale marcajelor
vrfurilor, (vom presupune s numarul acestora) se obtin numai inegalitati de
forma:
ask ash vhk ; (8) (xh ; xk ) 2 U

n acest moment ask este valoarea minima a drumurilor de la x1 la xk ;


Etapa a III-a Pentru identicarea vrfurilor prin care trece drumul de valoare
minima, din iteratia s se aleg relatiile satisfacute prin egalitati, parcurgnd graful
de la xn spre x1 . Fie egalitatile:
asn
asjp

asjp
asjp

= vjpn
= vjp

1 jp

:::::::::::::::: = ::::::::
asj1

as1 = v1j1

Adunnd aceste egalitati membru cu membru obtinem:


asn = v1j1 + v1j2 + ::: + vjp
si cum
este:

1 jp

+ vjpn

asn este valoarea minima a drumurilor dintre x1


min

= x1 ; xj1 ; :::; xjp 1 ; xjp ; xn


7

si

xn acest drum

Cursul 2
Observa
tia 1.3.4 Algoritmul lui Ford poate aplicat si n scopul determinarii
drumului de valoare maxima ntre doua vrfuri ale unui graf fara circuite modicnduse doar criteriul de mbunatatire a marcajelor vrfurilor din etapa 2:
(
a0h + vhk ; daca a0k a0h < vhk
1
ak =
a0k ;
daca a0k a0h vhk
Procedeul se opre
ste la pasul s, cnd sunt satisfacute inegalitatile: a0k
(8) (xh ; xk ) 2 U .

1.3.2

a0h

vhk ;

Algoritmul lui Dijkstra

n algoritmul lui Ford, pentru a g


asi valoarea vrfului nal, deci a drumului
optim, plec
am de la nodul initial n toate directiile posibile, p
astrnd de ecare
dat
a toate vrfurile analizate. Acest fapt duce la un consum inutil de timp,
deoarece foarte multe dintre aceste vrfuri nu vor face parte din drumul optim.
Pentru a elimina acest neajuns, algoritmul lui Dijkstra ncearc
a s
a p
astreze la
ecare iteratie multimea minim
a de vrfuri care s
a le contin
a pe toate cele care
vor forma efectiv drumul optim. n plus, algoritmul se poate aplica si 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 urmatorii pa
si:
Pasul 1 Atribuim vrfului initial valoarea zero: w (x1 ) = 0;
Pasul 2 Se construie
ste multimea A formata din vrful initial: A = fx1 g ;
Pasul 3 Se analizeaza vrfurile din afara multimii A;
3.1. Daca exista vrfuri n care se poate ajunge prin arce directe din A ( nu doar
de la vrfurile multimii A, ca la algoritmul lui Ford ) se calculeaza pentru toate
acestea:
w (xi ) =
min
(w (xi ) + v (xi ; xj ))
xj 2 A
9 (xi ; xj )

si se adauga la multimea A doar cel pentru care se obtine valoarea minima, apoi
se trece la pasul 4.
3.2. Daca nu exista nici un vrf de acest tip atunci nu exista nici un drum de la
x1 la xn :
Pasul 4 Se analizeaza multimea A;
4.1. Daca xn 2 A atunci valoarea sa reprezinta valoarea drumului optim de la x1
la xn : Pentru gasirea acestui drum se porne
ste de la vrful nal spre cel initial
8

Cercet
ari Opera
tionale B
arb
acioru Iuliana Carmen
si se gasesc vrfurile xk1 = xn ; xk2 = x 1 ; :::; xkr = x1 care formeaza drumul
cautat, unde ecare indice ki+1 este acela pentru care
w xki+1 + v xki+1 ; xki = w (xki )
4.2. Daca 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 fata
cap
at
a urm
atoarea formulare:
Dac
a drumul de valoare minim
a (maxim
a) care uneste x1 cu xn trece prin
vrfurile intermediare xh si xk atunci drumul partial care uneste xh cu xk este
drumul de valoare minim
a (maxim
a) ntre aceste dou
a vrfuri.
Vom presupune n continuare c
a se cere determinarea drumului de valoare
minim
a din graful G = (X; ).
Atasam grafului G matricea C = (cij )1 i;j n n care elementele cij se
denesc astfel:
8
>
>
< v (xi ; xj ) daca (xi ; xj ) 2 U (i 6= j)
cij =
(3.6)
1
daca (xi ; xj ) 2
= U (i 6= j)
>
>
: 0
daca
i=j
Fiec
arui vrf xi al grafului i se asociaz
a o variabil
a vi care are semnicatia
de valoare a drumului care uneste xi cu xn . Solutia problemei se obtine prin
rezolvarea sistemului de ecuatii:
8
< vi = min (vi + cij )
i = 1; n 1, j = 1; n 1
i6=j
(3.7)
cij =
: v =0
n

ntr-adev
ar, se poate ar
ata c
a, dac
a v1 ; v2 ; :::; vn este solutia acestui sistem de
ecuatii, atunci v1 reprezint
a valoarea minim
a a drumului care uneste pe x1 cu
xn .
Pentru rezolvarea sistemului (3.6) se utilizeaz
a un procedeu iterativ care
pleac
a de la conditia initial
a:
( (0)
vi = cin ;
i = 1; n 1
(0)

vn = 0

Cursul 2
Fiecare iteratie 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

: v (k) = 0
n

(3.8)

Procesul de calcul se ncheie atunci cnd se g


aseste:
(k 1)

vi

(k)

= vi

; i = 1; n

(k)

Atunci vi = vi , i = 1; n , iar valoarea minim


a a drumului care uneste x1
(k)
cu xn este v1 = v1 .
(k)
Determinarea arcelor drumului de valoare minim
a v1 = v1 se face astfel:
Fie xj1 vrful pentru care:
(k)

(k 1)

v1 = min vi
i6=1

(k 1)

+ c1j = vj1

+ c1j1
(k 1)

Drumul de lungime minim


a ce trece prin xj1 si vj1
minim
a a drumului care uneste xj1 cu xn .
n continuare s
a presupunem c
a:
(k 1)

vj1

(k 2)

= min vj
j6=j1

(k 2)

+ cj1 j = vj2

Drumul c
autat va trece prin xj2 .
(k
Repet
am procedura plecnd de la vj2
Drumul de valoare minim
a va :

2)

reprezint
a valoarea

+ cj1 j2

(0)

pn
a cnd se va ajunge la vjk = cjk n .

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


Este clar c
a dac
a unul dintre vrfurile intermediare nu este unic determinat
vor exista mai multe drumuri de valoare minim
a.
Observa
tia 1.3.6 Pentru aplicarea algoritmului Bellman- Kalaba n vederea determinarii drumului de valoare maxima se introduc urmatoarele modicari:
1. La denirea elementelor matricei C, daca (xi ; xj ) 2
= U atunci cij =

1.

2. n relatiile (3.7) si (3.8) se nlocuie


ste 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