Sunteți pe pagina 1din 38

Bazele cercetrii operaionale

ELEMENTE DE TEORIA GRAFURILOR



1. Noiuni generale

n general, pentru situaiile care necesit la rezolvare un oarecare efort mintal (i un caz tipic
este cel al celor din economie), se caut, n primul rnd, o metod de reprezentare a lor care s
permit receptarea ntregii probleme dintr-o privire (pe ct posibil) i prin care s se evidenieze ct
mai clar toate aspectele acesteia.
n acest scop se folosesc imagini grafice gen diagrame, schie, grafice etc. O reprezentare
dintre cele mai utilizate este cea prin grafuri. Acestea sunt utilizate n special pentru vizualizarea
sistemelor i situaiilor complexe. n general, vom reprezenta componentele acestora prin puncte n
plan iar relaiile (legturile, dependenele, influenele etc) dintre componente prin arce de curb cu
extremitile n punctele corespunztoare. ntre dou puncte pot exista unul sau mai multe segmente
(n funcie de cte relaii dintre acestea, care ne intereseaz, exist) iar segmentelor li se pot asocia
sau nu orientri (dup cum se influeneaz cele dou componente ntre ele), numere care s exprime
intensitatea relaiilor dintre componente etc.
Este evident, totui, c aceast metod are limite, att din punct de vedere uman (prea multe
puncte i segmente vor face desenul att de complicat nct se va pierde chiar scopul pentru care a
fost creat claritatea i simplitatea reprezentrii, aceasta devenind neinteligibil) ct i din punct de
vedere al tehnicii de calcul (un calculator nu poate "privi" un desen ca un om).
Din acest motiv, alturi de expunerea naiv-intuitiv a ceea ce este un graf, dat mai sus, se
impune att o definiie riguroas ct i alte modaliti de reprezentare a acestora, adecvate n general
rezolvrilor matematice.

Definiia 1 Se numete multigraf un triplet G = (X, A, f) n care X i A sunt dou mulimi
iar f este o funcie, definit pe produsul vectorial al lui X cu el nsui (X
2
= XX), care ia valori n
mulimea prilor mulimii A (notat P(A))

Mulimea X se numete mulimea nodurilor multigrafului i elementele sale se numesc
noduri (sau vrfuri) ale multigrafului, iar A reprezint mulimea relaiilor (legturilor) posibile ntre
dou noduri ale multigrafului.

Definiia 2 Se numete graf orientat un multigraf n care mulimea A are un singur
element: A = {a}.

n acest caz mulimea prilor mulimii A are doar dou elemente: mulimea vid i
ntreaga mulime A. Dac unei perechi orientate (x
i
, x
j
) din X
2
i se asociaz prin funcia f mulimea
A atunci spunem ca exist arc de la nodul x
i
la nodul x
j
iar perechea (x
i
,x
j
) se va numi arcul (x
i
,x
j
).
Nodul x
i
se numete nod iniial sau extremitate iniial a arcului (x
i
,x
j
) iar nodul x
j
se numete
nod final sau extremitate final a arcului (x
i
,x
j
). Arcul (x
i
,x
j
) este incident spre interior vrfului
x
j
i incident spre exterior vrfului x
i
. Dac pentru un arc nodul iniial coincide cu nodul final
atunci acesta se numete bucl. Nodurile x
i
i x
j
se vor numi adiacente dac exist cel puin unul
din arcele (x
i
,x
j
) i (x
j
,x
i
).
Dac unei perechi orientate (x
i
, x
j
) din X
2
i se asociaz prin funcia f mulimea vid
atunci spunem c nu exist arc de la nodul x
i
la nodul x
j
.
Este evident c a cunoate un graf orientat este echivalent cu a cunoate vrfurile i arcele
sale. Din acest motiv putem defini un graf orientat prin perechea (X,U), unde X este mulimea
vrfurilor sale iar U mulimea arcelor sale.
De asemenea, putem cunoate un graf orientat cunoscnd mulimea nodurilor i, pentru
fiecare nod, mulimea arcelor incidente spre exterior. Din acest motiv putem defini un graf orientat
ca o pereche (X,) unde X este perechea nodurilor iar este o funcie definit pe X cu valori n
111
Elemente de teoria grafurilor
mulimea prilor lui X, valoarea acesteia ntr-un nod x
i
, (x
i
) X fiind mulimea nodurilor
adiacente nodului x
i
, prin arce pentru care x
i
este extremitatea iniial.

Definiia 3 Se numete graf neorientat un multigraf n care mulimea A are un singur
element iar funcia f are proprietatea:
f[(x
i
,x
j
)] = f[(x
j
,x
i
)] , oricare ar fi nodurile x
i
i x
j
din X
n aceste condiii, dac f[(x
i
,x
j
)] = f[(x
j
,x
i
)] = A atunci perechea neorientat {x
i
,x
j
} este o
muchie iar dac f[(x
i
,x
j
)] = f[(x
j
,x
i
)] = spunem c nu exist muchie ntre vrfurile x
i
i x
j
.
Deoarece, n cele mai multe din cazurile practice care vor fi analizate n acest capitol,
situaia este modelat matematic printr-un graf orientat, vom folosi, pentru simplificarea expunerii,
denumirea de graf n locul celei de graf orientat iar n cazul n care graful este neorientat vom
specifica acest fapt la momentul respectiv.

2. Moduri de reprezentare ale unui graf

A. O prim modalitate de reprezentare este listarea efectiv a tuturor nodurilor i a arcelor
sale.
B. Putem reprezenta graful dnd pentru fiecare nod mulimea nodurilor cu care formeaz
arce n care el este pe prima poziie.
C. Putem reprezenta geometric graful, printr-un desen n plan, reprezentnd fiecare nod
printr-un punct(cercule) i fiecare arc printr-un segment de curb care are ca extremiti
nodurile arcului i pe care este trecut o sgeat orientat de la nodul iniial spre cel
final.
D. Putem folosi o reprezentare geometric n care nodurile sunt reprezentate de dou ori, n
dou iruri paralele, de la fiecare nod din unul din iruri plecnd sgei spre nodurile cu
care formeaz arce n care el este pe prima poziie, de pe al doilea ir (reprezentarea prin
coresponden).
E. Un graf poate fi reprezentat printr-o matrice ptratic boolean, de dimensiune egal cu
numrul de noduri, n care o poziie a
ij
va fi 1 dac exist arcul (x
i
,x
j
) i 0 n caz contrar,
numit matricea adiacenelor directe.
F. Un graf poate fi reprezentat printr-o matrice ptratic latin, de dimensiune egal cu
numrul de noduri, n care pe o poziie a
ij
va fi x
i
x
j
dac exist arcul (x
i
,x
j
) i 0 n caz
contrar.
Exemplu: Dac n reprezentarea A avem graful G = (X,U), unde X = {x
1
, x
2
, x
3
, x
4
, x
5
, x
6
}
i U = {(x
1
,x
1
), (x
1
,x
2
), (x
1
,x
4
), (x
1
,x
5
), (x
2
,x
3
), (x
2
,x
4
), (x
2
,x
6
), (x
3
,x
1
), (x
3
,x
2
), (x
4
,x
5
), (x
5
,x
2
),
(x
6
,x
4
)}, atunci n celelalte reprezentri vom avea:
B x
1
{x
1
, x
2
, x
4
, x
5
} C
x
3
x
4 x
5
x
6
x
2
x
1
x
2
{x
3
, x
4
, x
6
}
x
3
{x
1
, x
2
}
x
4
{x
5
}
x
5
{x
2
}
x
6
{x
4
}
D (reprezentarea prin coresponden)
x
1
x
2
x
3
x
4
x
5
x
6





x
1
x
2
x
3
x
4
x
5
x
6

112
Bazele cercetrii operaionale
E F
x
1
x
2
x
3
x
4
x
5
x
6

x
1
1 1 0 1 1 0
x
2
0 0 1 1 0 1
x
3
1 1 0 0 0 0
x
4
0 0 0 0 1 0
x
5
0 1 0 0 0 0
x
6
0 0 0 1 0 0
x
1
x
2
x
3
x
4
x
5
x
6

x
1
x
1
x
1
x
1
x
2
0 x
1
x
4
x
1
x
5
0
x
2
0 0 x
2
x
3
x
2
x
4
0 x
2
x
6
x
3
x
3
x
1
x
3
x
2
0 0 0 0
x
4
0 0 0 0 x
4
x
5
0
x
5
0 x
5
x
2
0 0 0 0
x
6
0 0 0 x
6
x
4
0 0








3. Concepte de baz n teoria grafurilor

1. semigraf interior al unui nod x
k
: este mulimea arcelor = {(x

k
x
U
j
,x
k
)/ (x
j
,x
k
) U} care
sunt incidente spre interior nodului x
k
;
2. semigraf exterior al unui nod x
k
: este mulimea arcelor = {(x
+
k
x
U
k
,x
i
)/ (x
k
,x
i
) U} care
sunt incidente spre exterior nodului x
k
;
3. semigradul interior al unui nod x
k
: este numrul arcelor care sunt incidente spre interior
nodului x
k
= cardinalul lui i se noteaz cu ;

k
x
U

k
x

4. semigradul exterior al unui nod x


k
: este numrul arcelor care sunt incidente spre
exterior nodului x
k
= cardinalul lui i se noteaz cu ;
+
k
x
U
+
k
x

5. gradul unui nod x


k
: este suma semigradelor nodului x
k
: = + ;
k
x

+
k
x


k
x

6. nod izolat: este un nod cu gradul 0;


7. nod suspendat: este un nod cu gradul 1;
8. arce adiacente: arce care au o extremitate comun;
9. drum ntr-un graf: o mulime ordonat de noduri ale grafului: (x
1
, x
2
, ..., x
k
), cu
proprietatea c exist n graf toate arcele de forma (x
i
,x
i+1
) i = 1,...,k-1;
10. lungimea unui drum: este numrul arcelor care l formeaz;
11. drum elementar: un drum n care fiecare nod apare o singur dat;
12. drum simplu: un drum n care fiecare arc apare o singur dat;
13. putere de atingere a unui nod x
i
X n graful G: numrul de noduri la care se poate
ajunge din x
i
. Puterea de atingere se noteaz cu p(x
i
), 1 i n i evident p(x
i
) .
+
i
x

14. drum hamiltonian: un drum elementar care trece prin toate nodurile grafului;
15. drum eulerian: un drum simplu care conine toate arcele grafului;
16. lan: un drum n care arcele nu au neaprat acelai sens de parcurgere;
17. circuit: un drum n care nodul iniial coincide cu cel final;
18. circuit elementar: un drum n care fiecare nod apare o singur dat, cu excepia celui
final, care coincide cu cel iniial;
19. circuit simplu: un drum n care fiecare arc apare o singur dat;
20. circuit hamiltonian: un circuit care trece prin toate nodurile grafului;
21. ciclu: este un circuit n care arcele nu au neaprat acelai sens de parcurgere;
22. ciclu elementar: un ciclu n care fiecare nod apare o singur dat, cu excepia celui
final, care coincide cu cel iniial;
23. ciclu simplu: un ciclu n care fiecare arc apare o singur dat;
Observaie: ntr-un graf neorientat noiunile de drum i lan sunt echivalente i de
asemenea cele de circuit i ciclu.
24. graf parial al unui graf G = (X,U): este un graf G'(X,U') cu U' U;
25. subgraf al unui graf G = (X,): este un graf G'(X',') unde X' X i '(x
i
) = (x
i
) X'
pentru orice x
i
X';
113
Elemente de teoria grafurilor
26. graf redus al unui graf G = (X,U): este un graf G
*
(X
*
,U
*
) unde X
*
este format din
mulimile unei partiii de mulimi nevide ale lui X, iar ( ) exist doar dac i j i
exist cel puin un arc n U, de la un nod din la un nod din
*
i
X ,
*
j
X
*
i
X
*
j
X .
27. graf tare conex: este un graf n care ntre oricare dou noduri exist cel puin un drum;
28. graf simplu conex: este un graf n care ntre oricare dou noduri exist cel puin un lan;
Observaie: Pentru grafuri neorientat noiunile de tare conex i simplu conex sunt
echivalente, graful numindu-se doar conex;
29. component tare conex a unui graf G = (X,U): este un subgraf al lui G care este tare
conex i nu este subgraful nici unui alt subgraf tare conex al lui G (altfel spus, ntre
oricare dou noduri din component exist cel puin un drum i nu mai exist nici un nod
n afara componentei legat printr-un drum de un nod al componentei).

4. Gsirea drumurilor ntr-un graf orientat

Dac privim graful ca imagine a unui sistem, nodurile reprezentnd componentele sistemu-
lui, atunci o interpretare imediat a unui arc (x
i
,x
j
) este c, componenta x
i
influeneaz direct
componenta x
j
. Dac nodurile au semnificaia de stri posibile ale unui sistem atunci un arc (x
i
,x
j
)
semnific faptul c sistemul poate trece direct din starea x
i
n starea x
j
. n ambele cazuri se vede c
avem de-a face doar cu informaii despre legturi directe; totui, chiar dac o component x
i
nu
influeneaz direct componenta x
j
ea o poate influena prin intermediul altor componente, existnd
un ir de componente intermediare: x
1
x
2
,..., x
k
, fiecare influennd-o direct pe urmtoarea i x
i

direct pe x
1
iar x
k
direct pe x
j
. Astfel, dac dintr-o stare x
i
nu se poate trece direct ntr-o stare x
j
s-ar
putea totui n mai multe etape, prin alte stri intermediare. Deoarece gsirea acestor influene sau
treceri posibile este de obicei foarte important iar pentru un sistem cu mii sau zeci de mii de
componente acest lucru nu mai poate fi fcut "din ochi", este necesar formalizarea noiunii de
"influene" i "treceri" posibile, nu neaprat directe. Acest lucru a i fost fcut mai sus, deoarece
este evident c "x
i
influeneaz x
j
" sau "din starea x
i
se poate trece n starea x
j
" este echivalent cu
existena n graf a unui drum de la nodul x
i
la nodul x
j
.
n continuare vom da un algoritm prin care putem gsi toate drumurile dintr-un graf orientat
cu un numr finit de noduri.

Pasul 1. Se construiete matricea boolean a adiacenelor directe corespunztoare grafului, notat
cu A. n aceasta se afl, evident, toate drumurile de lungime 1.

Este interesant de vzut ce legtur exist ntre aceast matrice i drumurile de lungime 2.
Fie dou noduri x
i
i x
j
oarecare din graf. Existena unui drum de lungime 2 ntre ele presupune
existena unui nod x
k
, din graf, cu proprietatea c exist att arcul (x
i
,x
k
) ct i arcul (x
i
,x
k
). Pentru a
vedea dac acesta exist, lum pe rnd fiecare nod al grafului i verificm dac exist sau nu ambele
arce ((x
i
,x
k
) i (x
i
,x
k
)). Aceasta este echivalent cu a verifica dac, n matricea boolean a adiacene-
lor directe, exist vreun indice k astfel nct elementul k al liniei i i elementul k al coloanei j s fie
ambele egale cu 1. Dac folosim operaiile algebrei booleene de adunare i nmulire:
+
&
0 1 & 0 1
0 0 1 0 0 0
1 1 1 1 0 1

atunci verificrile de mai sus sunt echivalente cu a verifica dac elementul de pe poziia (i,j) din A
2

este egal cu 1. Valoarea 1 spune doar c exist cel puin un drum de lungime 2 de la x
i
la x
j
. Dac
dorim s vedem i cte sunt, vom folosi regulile de nmulire i adunare obinuit.
De asemenea, se poate observa c existena unui drum de lungime 3 de la x
i
la x
j
presupune
existena unui nod x
k
astfel nct s existe un drum de lungime 2 de la x
i
la x
k
i un arc de la x
k
la x
j
,
care este echivalent cu a verifica dac exist vreun indice k astfel nct elementul k al liniei i din
114
Bazele cercetrii operaionale
matricea A
2
i elementul k al coloanei j din A sunt ambele egale cu 1 sau, mai simplu, dac
elementul (i,j) din A
3
este 1.
Din cele de mai sus se observ c existena drumurilor de lungime k este dat de valorile
matricei A
k
, dac s-au folosit regulile algebrei booleene i numrul lor este dat de A
k
, dac s-au
folosit regulile obinuite.

Pasul 2. Vom calcula succesiv puterile lui A pn la puterea A
n-1


Dac ntre nodurile x
i
i x
j
exist un drum de lungime n atunci el va conine un numr de
noduri mai mare sau egal nu n+1 i, cum n graf sunt doar n vrfuri, este clar c cel puin unul, s
zicem x
k
, va aprea de dou ori. Vom avea n acest caz un drum de la x
i
pn la prima apariie a lui
x
k
, i un drum de la ultima apariie a lui x
k
la x
j
. Eliminnd toate nodurile dintre prima apariie a lui
x
k
i ultima apariie a sa vom obine un drum de la x
i
la x
j
, n care x
k
apare o singur dat. Aplicnd
acest procedeu pentru toate nodurile care apar de mai multe ori pe drum, vom obine un drum de la
x
i
la x
j
, n care fiecare nod apare o singur dat (deci un drum elementar), care are evident cel mult
n-1 arce. n concluzie, dac exist vreun drum de la x
i
la x
j
atunci exist i un drum elementar i,
deci, va exista o putere a lui A, ntre A
1
i A
n-1
, n care poziia (i,j) este diferit de 0. Pentru
deciderea existenei unui drum ntre oricare dou noduri este suficient, deci, calcularea doar a
primelor n-1 puteri ale lui A.

Pasul 3. Se calculeaz matricea D = A + A
2
+ ... + A
n-1


Dac ne intereseaz doar existena drumurilor dintre noduri, nu i numrul lor, vom folosi
nmulirea i adunarea boolean i conform observaiei de mai sus:

d
ij
=

j i
j i
x la x de drum un nici a exist nu a dac 0
x la x de drum un putin cel a exist a dac 1
( (
( (


n acest caz, observnd c:

A(A + I)
n2
= C A + A
0
2 n
1
2 n
C

2
+ A
2
2 n
C

3
+ ... + C A
2 n
2 n

n1
= A + A
2
+ A
3
+ ... + A
n-1
= D

rezult c e suficient s calculm doar puterea n-2 a matricei A + I i apoi s-o nmulim cu A.
Avantajul acestei metode, n ceea ce privete economia de timp, este susinut i de urmtoarea
observaie: dac D conine toate perechile de arce ntre care exist drum atunci:

D = (A + A
2
+ ... + A
n-1
) + A
n
+ A
n+1
+ ... + A
n+k
= D oricare ar fi k 0
A(A + I)
n2+k
= (A + A
2
+ ... + A
n-1
) + A
n
+ A
n+1
+ ... + A
n+k-1
= D = A(A + I)
n2

A(A + I)
n2+k
= A(A + I)
n2
oricare ar fi k 0

deci de la puterea k = n-2 toate matricile A
k
sunt egale. Putem, deci, calcula direct orice putere a lui
A+I mai mare sau egal cu n-1 (de exemplu calculnd (A+I)
2
, (A+I)
4
, (A+I)
8
, ..., , r fiind
prima putere a lui 2 pentru care 2
r
2
I) (A+
r
n-2).
Procedeul de mai sus nu asigur dect aflarea faptului dac exist sau nu drum ntre dou
noduri, eventual ce lungime are i cte sunt de aceast lungime. Totui, n problemele practice cel
mai important este s tim care sunt efectiv aceste drumuri. Deoarece toate drumurile pot fi
descompuse n drumuri elementare i n problemele practice n general acestea sunt cele care
intereseaz, paii urmtori ai algoritmului vor fi dedicai gsirii lor. Pentru gsirea acestora se
folosete reprezentarea grafului prin matricea latin de la cazul F.

115
Pasul 4. Construim matricea latin L asociat grafului, unde:
Elemente de teoria grafurilor

l
ij
=
( )
( )

j i
j i j i
x , x arcul a exist nu a dac 0
x , x arcul a exist a dac x x
( (
( (

i matricea L
~
, definit prin:
ij
l
~
=
( )
( )

j i
j i j
x , x arcul a exist nu a dac 0
x , x arcul a exist a dac x
( (
( (

numit matricea latin redus.
Gsirea unui drum de lungime 2 de la x
i
la x
j
presupune gsirea unui nod cu proprietatea c
exist arcele (x
i
,x
k
) i (x
k
,x
j
) i memorarea vectorului (x
i
, x
k
, x
j
). Aceasta este echivalent cu a gsi
un indice k astfel nct elementul de pe poziia k a liniei i, din matricea L, s fie x
i
,x
k
i elementul
de pe poziia k al coloanei j, din matricea L
~
, s fie x
j
. Vom nmuli deci matricea L cu matricea L
~
,
folosind ns nite reguli de calcul speciale, numite nmulire i adunare latin.

Definiia 1: Se numete alfabet o mulime de semne numite simboluri sau litere {s
i
/iI}
unde I este o mulime oarecare de indici, finit sau nu.
Definiia 2: Se numete cuvnt un ir finit de simboluri notat s .
n 2 1
i i i
s ... s
Definiia 3: Se numete nmulire latin o operaie definit pe mulimea cuvintelor unui
alfabet, notat " ", astfel:
L

n 2 1
i i i
s ... s s
L

m 2 1
j j j
s ... s s =
m 2 1 n 2 1
j j j i i i
s ... s s s ... s s
(produsul a dou cuvinte se obine prin concatenarea lor)
nmulirea latin este asociativ, are ca element neutru cuvntul vid, nu e
comutativ i un element este inversabil doar dac este cuvntul vid.
Definiia 3: Se numete adunare latin o funcie definit pe mulimea cuvintelor unui
alfabet cu valori n mulimea parilor mulimi cuvintelor, notat " " astfel:
L
+
n 2 1
i i i
s ... s s
L
+
m 2 1
j j j
s ... s s =
)
`

m 2 1
n 2 1
j j j
i i i
s ... s s
s ... s s
(suma a dou cuvinte este mulimea format din cele dou cuvinte)

Pasul 5. Se calculeaz succesiv matricile:

L
2
= L
L
L
~
, L
3
= L
2

L
L
~
, ... ,L
k+1
= L
k
L
L
~


folosind operaiile de nmulire i adunare latin, alfabetul fiind mulimea nodurilor grafului, unde
operaia de nmulire este uor modificat, produsul dintre dou elemente ale matricilor fiind 0, dac
unul dintre ele este 0 sau au un nod comun i este produsul latin al lor, n caz contrar.
Din felul cum a fost construit, matricea L
k
va conine toate drumurile elementare de
lungime k. Cum un drum elementar poate avea cel mult n noduri (cte are graful cu totul) rezult
c:
primele n-1 puteri ale lui L conin toate drumurile elementare din graf;
puterile lui L mai mari sau egale cu n au toate elementele egale cu 0;
matricea L
n-1
conine toate drumurile hamiltoniene din graf (dac exist).

Observaie: Deoarece obinerea matricii D prin metoda de mai sus presupune un volum
foarte mare de calcule (de exemplu, dac graful are 100 de noduri, ridicarea unei matrici de
100100 la puterea 100) pentru obinerea acesteia se poate aplica i urmtorul algoritm:

Pas 1. Se construiete matricea de adiacen A;
Pas 2. Pentru fiecare linie i se adun boolean la aceasta toate liniile j pentru care a
ij
= 1.
116
Bazele cercetrii operaionale
Pas 3. Se reia pasul 2 pn cnd, dup o aplicare a acestuia, matricea rmne aceeai (nu
mai apare nici un 1)
Ultima matrice obinut este matricea drumurilor D numit i matricea conexiunilor totale.
Aceast metod, dei mai simpl nu spune ns i care sunt aceste drumuri, pentru gsirea
lor aplicndu-se, de exemplu, nmulirea latin
117
Elemente de teoria grafurilor
5. ARBORI. Problema arborelui de valoare optim

n acest subcapitol grafurile vor fi considerate neorientate.

5.1. Noiunea de arbore

Un arbore este un graf neorientat, finit, conex i fr cicluri. Grafurile din fig. 4.1. sunt
arbori.


x
1
x
1
x
1 x
1
x
1
x
1
x
1
x
1
x
1
x
1
x
1







a)
c)
b)


Figura 4.1


Studiul arborilor este justificat de existena n practic a unui numr mare de probleme care
pot fi modelate prin arbori. Dintre acestea amintim:

1. construirea unor reele de aprovizionare cu ap potabil (sau cu energie electric sau
termic etc) a unor puncte de consum, de la un punct central;
2. construirea unor ci de acces ntre mai multe puncte izolate;
3. desfurarea unui joc strategic;
4. luarea deciziilor n mai multe etape (arbori decizionali);
5. evoluii posibile ale unui sistem pornind de la o stare iniial;
6. construirea unei reele telefonice radiale, a unei reele de relee electrice;
7. legarea ntr-o reea a unui numr mare de calculatoare;
8. organigramele ntreprinderilor;
9. studiul circuitelor electrice n electrotehnic (grafe de fluen etc);
10. schemele bloc ale programelor pentru calculatoare etc.

n toate problemele de mai sus se dorete ca, dintre muchiile unui graf neorientat, s se
extrag arborele optim din mulimea tuturor arborilor care pot fi extrai din graful dat.
Deoarece definiia arborelui este dificil de aplicat pentru deciderea faptului c un graf este
arbore sau nu (i n special sunt greu de verificat conexitatea i mai ales existena ciclurilor) exist
mai multe caracterizri posibile ale unui arbore, acestea fiind date de teorema de mai jos:

Teorem. Dac H este un graf neorientat finit, atunci urmtoarele afirmaii sunt echivalente:

1)
2)
3)
H este arbore;
H nu conine cicluri i, dac se unesc printr-o muchie dou noduri neadiacente, se
formeaz un ciclu (i numai unul). Arborele este, deci, pentru o mulime de noduri dat,
graful cu numrul maxim de arce astfel nct s se pstreze proprietatea c nu are cicluri);
H este conex i dac i se suprim o muchie se creeaz dou componente conexe (arborele
este graful conex cu numrul minim de arce);
118
Bazele cercetrii operaionale
4)
5)
6)
H este conex i are n-1 muchii;
H este fr cicluri i are n-1 muchii;
Orice pereche de noduri este legat printr-un lan i numai unul.

Demonstraie :

1) 2). ntre cele dou noduri adiacente noii muchii introduse exista deja un drum n fostul graf.
Acest drum, mpreun cu noul arc va forma evident un ciclu i afirmaia 2) a fost
demonstrat.
2)3). Pentru oricare dou vrfuri neunite printr-o muchie, adugnd muchia dintre cele dou
vrfuri s-ar crea, conform ipotezei, un ciclu care conine aceast muchie, deci dou
drumuri ntre cele dou noduri, din care unul nu conine noua muchie, adic n graful
iniial exista un drum ntre cele dou noduri. Dac nu exist cicluri nseamn c ntre
oricare dou noduri exist un singur drum. Pentru dou noduri unite printr-o muchie,
aceasta este chiar drumul corespunztor celor dou noduri. Dac suprimm aceast muchie
ntre cele dou noduri nu va mai exista nici un drum, formndu-se dou componente
conexe.
3)4). Demonstraia se face prin inducie dup n = numrul de noduri ale grafului. Pentru n=2 este
evident. Presupunem afirmaia adevrat pentru toate grafurile cu cel mult n noduri. Dac
graful are n+1 noduri, prin suprimarea unei muchii se formeaz dou componente conexe
fiecare avnd cel mult n noduri (n
1
n, n
2
n i n
1
+ n
2
= n+1) i deci au n
1
1 respectiv
n
2
1 muchii. n concluzie graful iniial a avut (n
1
1) + (n
2
1) +1 = n
1
+ n
2
1= (n+1)-1
muchii, ceea ce era de demonstrat.
4)5). Dac ar avea un ciclu atunci prin suprimarea unui arc al acestuia ar rmne de asemenea
conex. Eliminm acest arc apoi repetm procedeul pentru graful parial rmas i tot aa
pn cnd nu mai rmne nici un ciclu. n acest moment graful rmas este conex i nu are
cicluri deci este arbore i deci are n-1 arce, n contradicie cu faptul c el avea n-1 arce
nainte de a ncepe suprimarea arcelor;
5)6). Dac ntre dou noduri ar exista dou drumuri atunci acestea ar forma la un loc un ciclu.
Deci ntre 2 noduri este cel mult un drum. Dac ntre dou noduri nu ar exista nici un drum
ar fi cel puin dou componente conexe n graf, fiecare fiind arbore (pentru c nu exist
cicluri) i deci fiecare ar avea un numr de arce cu 1 mai mic dect numrul de noduri.
Fcnd adunarea, ar rezulta c n graf sunt strict mai puin de n-1 arce.
6)1). Dac H ar avea un ciclu, ntre dou noduri ale acestuia ar exista dou lanuri, n
contradicie cu ipoteza.

Presupunem c avem un graf pentru care am verificat deja dac este conex. Dac nu este
atunci acesta, evident, nu are nici un graf parial care s fie arbore.
Presupunem de asemenea c fiecrei muchii i este asociat o valoare real.

5.2. Algoritmi pentru gsirea arborelui de valoare optim

Vom da mai jos trei algoritmi pentru determinarea unui graf parial al grafului, care s fie
arbore i pentru care suma valorilor arcelor sale s fie minim (sau maxim).
Toi algoritmii descrii n continuare extrag arborele prin colectarea una cte una a muchiilor
acestuia.

A. Algoritmul lui Kruskal

Pasul 1. Dintre toate muchiile grafului se alege muchia de valoare minim (maxim). Dac
minimul este multiplu se alege la ntmplare una din muchiile respective. Deoarece acest
"la ntmplare" trebuie cumva tradus n limbajul calculatorului, n cazul implementrii unui
119
Elemente de teoria grafurilor
program bazat pe acest algoritm, vom perturba din start valorile muchiilor, la k muchii cu
aceiai valoare V adunnd respectiv valorile , 2, ... , k, unde este foarte mic (n orice
caz, k mai mic dect diferena dintre valoarea acestor arce si valoarea imediat superioar a
unui arc), pozitiv.
Pasul 2. Dintre toate muchiile rmase, se alege cea de valoare minim (maxim);
Pasul 3. Dintre toate muchiile rmase, se alege cea de valoare minim (maxim), astfel nct s nu
se formeze cicluri cu cele deja alese;
Pasul 4. Se reia algoritmul de la pasul 3 pn se colecteaz n-1 muchii.

Dei s-a demonstrat c algoritmul gsete ntotdeauna arborele optim, el are dezavantajul c
este foarte laborios (de fiecare dat trebuie calculat minimul unei mulimi mari sau foarte mari
exist situaii n practic n care graful are sute de mii de arce) i, n plus, trebuie aplicat un algoritm
special ca s respectm condiia de a nu se forma cicluri, la alegerea unui nou arc.
O metod posibil este ca, dup adugarea fiecrui arc, s se mpart graful n componente
conexe i s alegem apoi un arc care nu are ambele extremitile n aceeai component conex.
De asemenea este clar c, n cazul existenei arcelor de valori egale, deoarece se alege la
ntmplare, exist mai multe variante de evoluie a alegerii arcelor. Totui, cu toate c pot fi mai
multe grafuri la care se poate ajunge prin acest algoritm, ele vor avea toate aceeai valoare (minima
(sau maxima) posibil).


B. Algoritmul lui Sollin

Pasul 1. Pentru fiecare nod se alege muchia adiacent de valoare minim (maxim).
Pasul 2. Se evideniaz componentele conexe, existente n graful parial format din arcele alese
pn n acest moment.
Pasul 3. Pentru fiecare component conex se alege muchia adiacent de valoare minim
(maxim). Prin muchie adiacent unei componente conexe nelegem o muchie care are o
singur extremitate printre nodurile componentei respective.
Pasul 4. Se reia algoritmul de la pasul 2 pn rmne o singur component conex. Aceasta este
arborele optim cutat.

Acest algoritm asigur de asemenea gsirea arborelui optim, necesit mult mai puine
calcule (la fiecare alegere se calculeaz minimul doar pentru muchiile adiacente unui singur nod),
evit automat formarea ciclurilor, dar, pentru grafuri foarte mari, la un moment dat pot exista att de
multe componente conexe care trebuie memorate succesiv, nct calculul devine greoi sau, pe
calculator, depete posibilitile de memorare ale calculatorului.


C. O variant a algoritmului lui Kruskal

Pasul 1. Dintre toate muchiile grafului se alege cea de valoare minim (maxim);
Pasul 2. Dintre toate muchiile adiacente componentei conexe format din arcele alese pn n acest
moment, se alege cea de valoare minim (maxim);
Pasul 3. Se reia pasul 2 pn se colecioneaz n-1 muchii.

Algoritmul are toate avantajele algoritmului lui Sollin i, n plus, lucreaz cu o singur
component conex, fiind mult mai uor de implementat pe calculator i mult mai rapid n execuie.


Exemplu: Administraia unei localiti montane a hotrt construirea unor linii de teleferic
care s lege oraul de cele 8 puncte turistice importante din jurul acestuia. n urma unui studiu au
120
Bazele cercetrii operaionale
fost puse n evidena toate posibilitile i costurile de conectare a obiectivele turistice ntre ele i cu
oraul, acestea fiind prezentate n figura 4.2.
Se cere gsirea variantei de construcie de cost minim, care s asigure accesul din ora la
oricare din obiectivele turistice.

9
Figura 4.2
8
8
6
7
8
4
3
7
5
2
2
3
3
5
4
8
8
7
9
P
8
P
5
P
4
P
7
P
3
P
6
P
1
P
2
O















Rezolvare

Condiia de cost minim implic dou obiective:
1. S se construiasc minimul de arce necesare;
2. S se construiasc cele mai ieftine legturi.
Referitor la numrul de arce necesar, facem observaia c, dac din ora se va putea ajunge
la orice obiectiv turistic, atunci se va putea ajunge i de la orice staiune la oricare alta (trecnd prin
ora), deci trebuie ca arcele alese pentru construcie s formeze la un loc un graf conex.
n concluzie, cutm un graf parial conex cu un numr minim de arce, adic un arbore. n
plus, suma costurilor arcelor sale trebuie s fie minim. Vom aplica pe rnd cei trei algoritmi pentru
gsirea acestuia:

A. Kruskal

La primul pas poate fi ales unul din arcele OP
3
sau OP
7
, ele avnd valoarea minim 2. Putem
alege oricum primul arc dintre cele dou pentru c la al doilea pas va fi ales cellalt.
La pasul trei poate fi ales unul din arcele OP
5
, OP
6
sau P
1
P
6
care au valoarea minim 3. Nici
n acest caz nu are vre-o importan ordinea alegerii, deoarece pot fi alese succesiv toate trei fr a
se forma nici un ciclu.
Al aselea arc poate fi ales dintre arcele P
4
P
5
i P
1
P
2
, care au valoarea minim 4. Nici n
acest caz nu are vre-o importan ordinea alegerii, deoarece pot fi alese succesiv ambele, fr a se
forma nici un ciclu.
Urmtoarea valoare disponibil a unui arc este 5, dar arcul opt nu poate fi ales dintre arcele
OP
1
, P
6
P
7
, dei au valoarea minim 5. Arcul OP
1
nu poate fi ales deoarece s-ar forma ciclul OP
1
P
6
,
iar P
6
P
7
ar duce la ciclul OP
6
P
7
. Urmtoarea valoare minim este 6, pentru arcul P
5
P
7
dar nu poate fi
ales deoarece se formeaz ciclul OP
5
P
7
.
Valoarea urmtoare, 7, o au arcele OP
4
, P
2
P
3
i P
5
P
8
. OP
4
nu poate fi ales deoarece s-ar
forma ciclul OP
5
P
4
. Arcul P
2
P
3
nu poate fi ales deoarece s-ar forma ciclul OP
6
P
1
P
2
P
3
. Arcul P
5
P
8
nu
formeaz nici un ciclu i el va fi al optulea arc ales. n acest caz, deoarece s-au adunat 8 arce ntr-un
graf cu 9 noduri, am obinut graful cutat.
Acest arbore este reprezentat n figura 4.3.

121
Elemente de teoria grafurilor

7
Figura 4.3
4
3
2
2
3
3
4
P
8
P
5
P
4
P
7
P
3
P
6
P
1
P
2
O















B. Sollin

Vom alege: pentru nodul O arcul OP
3
pentru nodul P
1 arcul P
1
P
6
pentru nodul P
2
arcul P
1
P
2
pentru nodul P
3
arcul OP
3
pentru nodul P
4
arcul P
4
P
5
pentru nodul P
5
arcul OP
5
pentru nodul P
6
arcul P
1
P
6
pentru nodul P
7
arcul OP
7
pentru nodul P
8
arcul P
5
P
8

Rezult graful parial:

Figura 4.4
7
4
3
2
2
3
4
P
8
P
5
P
4
P
7
P
3
P
6
P
1
P
2
O














Dup cum se vede, s-au format dou componente conexe: C
1
= {P
1
,P
2
,P
6
}
C
2
= {O,P
3
,P
4
,P
5
,P
7
,P
8
}.
Vom alege: pentru C
1
arcul OP
6

pentru C
2
arcul OP
6


i obinem o singur component conex, care este arborele cutat.

122
Bazele cercetrii operaionale
C. Varianta algoritmului lui Kruskal

Succesiunea alegerii arcelor va fi:

1 OP
3
2 OP
7

3 OP
6

4 OP
5

5 P
1
P
6

6 P
1
P
2

7 P
4
P
5

8 P
5
P
8



123
Elemente de teoria grafurilor

6. Cuplajul a dou mulimi disjuncte. Probleme de afectare (de repartiie)

n practica economic sunt foarte des ntlnite probleme n care se dorete asocierea optim
a elementelor unei mulimi X = {x
1
, x
2
, ... , x
n
} cu elementele unei alte mulimi Y = {y
1
, y
2
, ... , y
m
}
n condiiile unor limitri existente (i cunoscute) ale posibilitilor de asociere.
n general, fiecare asociere posibil x
i
y
j
aduce un anumit efect a
ij
(profit, cost etc) care
poate fi calculat i vom presupune c este cunoscut.
Limitrile asupra asocierilor se traduc de obicei prin faptul c:

1. Un element x
i
poate fi asociat doar cu anumite elemente din Y i reciproc;
2. La sfrit, fiecrui element din X i s-a asociat cel mult un element din Y i reciproc.

Asocierea optim presupune, de obicei, dou obiective:

1. S se fac maximul de asocieri;
2. Suma efectelor asocierilor s fie maxim (sau minim, n funcie de semnificaia
acestora).

Reprezentarea geometric a situaiei de mai sus este un graf de forma:


x
1
x
2
x
n
y
m
y
2
y
1









numit graf bipartit.

Definiia 1: Se numete graf bipartit un graf G = (X, U) n care mulimea nodurilor poate fi
mprit n dou mulimi disjuncte A i B astfel nct orice arc are extremitatea iniial n A i cea
final n B.

Definiia 2: Se numete cuplaj al unui graf bipartit o submulime de arce W U cu
proprietatea c nu exist dou arce adiacente (sau altfel spus, pentru orice nod exist cel mult un arc
incident acestuia).

Definiia 3: Se numete cuplaj maxim un cuplaj cu proprietatea c orice arc care nu face
parte din cuplaj este adiacent cu un arc din cuplaj ( orice arc am aduga, nu mai rmne cuplaj
nu exist nici un cuplaj n care s se includ strict conine numrul maxim de arce
neadiacente)
Este evident c numrul de arce ale unui cuplaj este mai mic sau egal cu numrul de
elemente din fiecare din mulimile A i B ( min (|A|,|B|). Este interesant de vzut ns ct de
mare este el efectiv i n ce condiii este egal chiar cu min (|A|,|B|).
Referitor la prima ntrebare, n 1931 Knig a demonstrat o teorem care permite stabilirea
numrului de arce ale unui cuplaj maxim:

124
Bazele cercetrii operaionale
Teorem: Numrul maxim de arce ale unui cuplaj ntr-un graf bipartit G = (AB, ) este
egal cu ( ) ( ) C C A min
A C
+



n ceea ce privete a doua problem, observm mai nti c putem presupune c ntotdeauna
|A||B|, n caz contrar inversnd sensul tuturor arcelor grafului, problema rmnnd aceeai.
n acest caz:

( ) ( ) C C A min
A C
+

= |A| ( ) ( ) C C A min
A C
+

|A| = 0 ( ) ( ) C C min
A C
+

= 0
( ) ( ) C C max
A C

= 0 ( ) C C oricare ar fi C A
sau altfel spus, pentru orice submulime C a lui A, mulimea nodurilor atinse de arce care pleac din
nodurile sale, adic (C), are cel puin attea elemente ct C.
De exemplu, la repartizarea angajailor pe posturi, fiecare angajat poate obine un post dorit
dac i numai dac oricare ar fi mulimea de r angajai exist cel puin r posturi diferite din care pot
alege.
Presupunem, n continuare, c s-a asociat fiecrui arc (x
i
,x
j
) o valoare v
ij
.

Definiia 4: Se numete valoare a unui cuplaj suma valorilor arcelor care l formeaz.

n acest moment putem spune c determinarea unei asocieri optime a mulimilor X i Y de la
nceput este echivalent matematic cu determinarea unui cuplaj maxim de valoare optim (minim
sau maxim) n graful bipartit asociat.
Dintre problemele ntlnite n practica economic, ce se reduc matematic la gsirea unui
cuplaj maxim de valoare optim, amintim:

1. Problema repartizrii muncitorilor unei secii la utilajele acesteia n funcie de pregtirea
i preferinele muncitorilor, complexitatea mainilor etc;
2. transferarea unor informaii ntr-un grup;
3. Repartizarea angajailor pe posturi;
4. Formarea grupelor de lucru dup afinitile dintre membrii colectivului.

n 1955, bazndu-se pe teorema lui Knig, H.W. Kuhn a elaborat un algoritm, cunoscut n
literatura de specialitate sub denumirea de algoritmul ungar, cu ajutorul cruia se poate determina
un cuplaj maxim de valoare minim ntr-un graf bipartit pentru care |A|=|B|= n.
El se bazeaz pe observaia c, dac se adun (sau scade) aceeai numr la toate valorile
arcelor, nu se modific ierarhia cuplajelor maxime, n ceea ce privete valoarea lor.
Vom prezenta algoritmul concomitent cu rezolvarea unui caz particular, pentru o mai bun
receptare a acestuia:
"ntr-o secie produsele finite se obin n urma efecturii succesive a 6 operaii pe 6 maini.
n aceast secie sunt angajai 6 muncitori, fiecare fiind calificat pentru efectuarea oricrei din cele 6
operaii. Pentru a optimiza activitatea n secie cei 6 muncitori au fost supui la un test n care
fiecare a prelucrat un numr de piese, pe toate cele ase maini. n final, calculndu-se timpul mediu
n care muncitorul M
i
efectueaz operaia O
j
s-au obinut valorile (n ore) date n tabelul de mai jos:

M
1
M
2
M
3
M
4
M
5
M
6

O
1
4 3 6 2 6 8
O
2
5 4 8 3 8 9
O
3
5 6 8 2 8 7
O
4
4 5 7 2 7 8
O
5
4 6 6 3 6 7
O
6
6 6 8 3 8 9
125
Elemente de teoria grafurilor
S se gseasc acea repartiie a muncitorilor la maini astfel nct timpul n care o pies se
prelucreaz succesiv pe cele 6 maini s fie minim."

Pasul 1. Se construiete matricea ptratic M care are elementele:

m
ij
=
( ) ( )
( )

j i
j i j i
x , x arcul exista nu daca
x , x arcul exista daca x , x arcului valoarea


Pentru exemplul ales vom avea: M =
|
|
|
|
|
.
|

\
|
9 8 3 8 6 6
7 6 3 6 6 4
8 7 2 7 5 4
7 8 2 8 6 5
9 8 3 8 4 5
8 6 2 6 3 4

Pasul 2. Se scade din fiecare linie minimul acesteia apoi, n matricea obinut, din fiecare coloan
minimul acesteia (se poate face i invers, rezultatul final va fi acelai). Pentru exemplul
dat vom obine succesiv matricile:
M
1
=

i apoi M
|
|
|
|
|
.
|

\
|
6 5 0 5 3 3
4 3 0 3 3 1
6 5 0 5 3 2
5 6 0 6 4 3
6 5 0 5 1 2
6 4 0 4 1 2
2
=


|
|
|
|
|
.
|

\
|
2 2 0 2 2 2
0 0 0 0 2 0
2 2 0 2 2 1
1 3 0 3 3 2
2 2 0 2 0 1
2 1 0 1 0 1
Ultima matrice este cea asupra creia se aplic urmtoarele calcule. n acest moment pe
fiecare linie i pe fiecare coloan se afl cel puin un 0, care corespunde celui mai mic timp. Se
ncearc n continuare folosirea doar a acestor repartizri:

Pasul 3. n ordinea cresctoare a numrului de zerouri i de sus n jos (n cazul existenei mai
multor linii cu acelai numr de zerouri ) se ncadreaz pentru fiecare linie zeroul a crui
coloan conine cele mai puine zerouri (primul de la stnga dintre acestea, n caz de
egaliate) i se bareaz celelalte zerouri de pe linia i coloana acestuia. Pe parcursul
algoritmului sunt luate n considerare la numrare doar zerourile nencadrate i nebarate
nc. n final, pe fiecare linie i pe fiecare coloan va fi cel mult un zero ncadrat. Dac n
final sunt n (= dimensiunea matricei) zerouri, atunci arcele corespunztoare formeaz
cuplajul cutat. Dac sunt mai puine se trece la pasul 4.
n exemplul nostru avem trei linii cu cte un zero (a 3-a, a 4-a i a 5-a) .l ncadrm pe cel de
pe linia 3 (prima dintre ele) i barm restul zerourilor de pe linia 3 i coloana 3, obinnd:

|
|
|
|
|
.
|

\
|
2 2 0 2 2 2
0 0 0 0 2 0
2 2 0 2 2 1
1 3 0 3 3 2
2 2 0 2 0 1
2 1 0 1 0 1


n acest moment pe liniile 1 i 2 se afl un zero. Se ncadreaz cel de pe linia 1 i se
bareaz celelalte de pe linia 1 i coloana 2, obinnd:

126
Bazele cercetrii operaionale
|
|
|
|
|
.
|

\
|
2 2 2
0 0 0
2 2 1
1 3 2
2 2 1
2 1 1

0 2 2
0 0 2
0 2 2
0 3 3
0 2 0
0 1 0

Ultima linie cu zerouri este linia 5 din care l ncadrm pe primul i le barm pe celelalte:

|
|
|
|
|
.
|

\
|
2 2 0 2 2 2
0 0 0 0 2 0
2 2 0 2 2 1
1 3 0 3 3 2
2 2 0 2 0 1
2 1 0 1 0 1


n total nu sunt 6 zerouri ncadrate (sunt doar trei) i deci trecem la pasul 4.

Pasul 4. La acest pas se va stabili numrul minim posibil de linii i coloane care s conin toate
zerourile matricii. n acest sens vom proceda astfel:

a) se marcheaz liniile care nu au nici un zero ncadrat;
b) se marcheaz coloanele care au un zero barat pe o linie marcat;
c) se marcheaz liniile care au un zero ncadrat pe o linie marcat (dac exist);
Se repet operaiile b) i c) pn nu mai poate fi marcat nici o linie i nici o coloan.

n cazul nostru vom avea: a) se marcheaz liniile 2, 4 i 6;
b) se marcheaz coloanele 2 i 4;
c) se marcheaz liniile 1 i 3;
b) nu mai marcm nici o coloan deoarece nu mai exist
nici un zero barat pe liniile 1 i 3, care s corespund unei
coloane nemarcate;
c) nu mai marcm nici o linie, deoarece nu a mai aprut
nici o coloan marcat.
Rezult:
|
|
|
|
|
.
|

\
|
2 2 0 2 2 2
0 0 0 0 2 0
2 2 0 2 2 1
1 3 0 3 3 2
2 2 0 2 0 1
2 1 0 1 0 1


Pasul 5. Se taie liniile nemarcate i coloanele marcate:

|
|
|
|
|
.
|

\
|
2 2 0 2 2 2
0 0 0 0 2 0
2 2 0 2 2 1
1 3 0 3 3 2
2 2 0 2 0 1
2 1 0 1 0 1


Pasul 6. Se mpart elementele matricei n trei grupe:

G
1
= elemente aflate la intersecii de linii netiate cu coloane netiate;
127
Elemente de teoria grafurilor
G
2
= elemente situate la intersecii de linii tiate cu coloane netiate sau de linii netiate
cu coloane tiate;
G
3
= elemente situate la intersecii de coloane tiate cu linii tiate

Pasul 7. Se gsete minimul grupei G
1
, care se scade din fiecare element al lui G
1
i se adun la
fiecare element al grupei G
3
. Elementele grupei G
2
rmn neschimbate.
Pentru exemplul dat, minimul lui G
1
este 1 i obinem noua matrice:
|
|
|
|
|
.
|

\
|
1 1 0 1 2 1
0 0 1 0 3 0
1 1 0 1 2 0
0 2 0 2 3 1
1 1 0 1 0 0
1 0 0 0 0 0

Pasul 8. Se reia algoritmul de la pasul 3.

Vom avea dup marcare:
|
|
|
|
|
.
|

\
|
1 1 0 1 2 1
0 0 1 0 3 0
1 1 0 1 2 0
0 2 0 2 3 1
1 1 0 1 0 0
1 0 0 0 0 0

Deoarece avem 6 zerouri ncadrate, am obinut cuplajul maxim de valoare minim cutat, cruia i
va corespunde repartizarea muncitorilor pe operaii de mai jos:

M
1
M
2
M
3
M
4
M
5
3
6
7
4
4
6
O
6
O
5
O
4
O
3
O
2
O
1
M
6












care duce la o durat total a prelucrrii unei piese de 6 + 4 + 7 + 6 + 3 = 26 ore
Observaie: Deoarece regula de a alege de sus n jos la linii cu acelai numr de zerouri este
arbitrar i de asemenea alegerea primului zero de la stnga, putem ajunge i la alte
cuplaje maxime, dar toate vor avea aceeai valoare, cea minim. De exemplu, un alt
cuplaj optim este:
M
1
M
2
M
3
M
4
M
5
3
6
7
4
4
6
O
6
O
5
O
4
O
3
O
2
O
1
M
6



adic
|
|
|
|
|
.
|

\
|
1 1 0 1 2 1
0 0 1 0 3 0
1 1 0 1 2 0
0 2 0 2 3 1
1 1 0 1 0 0
1 0 0 0 0 0


128
Bazele cercetrii operaionale
care are de asemenea valoarea 26.

Observaia 1. Dac dorim un cuplaj de valoare maxim atunci vom calcula la pasul 1
matricea M astfel:

1. Construind matricea A de elemente:

a
ij
=
( ) ( )
( )


j i
j i j i
x , x arcul exista nu daca
x , x arcul exista daca x , x arcului valoarea


2. Matricea M va avea componentele: m
ij
= ( )
ij ij
n j i, 1
a a max



apoi aplicm n continuare algoritmul.

Observaia 2. Dac |A||B| atunci aplicm acelai algoritm cu singura diferen c ne
vom opri cnd vom obine un numr de zerouri egal cu min (|A|,|B|).

129
Elemente de teoria grafurilor

7. Drumuri i circuite hamiltoniene

Una dintre cele mai cunoscute probleme economice este problema comis voiajorului. Comis
voiajorul este un individ care trebuie s prezinte s-au s distribuie marfa comandat la o serie de
centre distribuite n general neliniar pe o anumit zon teritorial (localitile dintr-un jude,
magazinele dintr-un cartier, persoanele dintr-un sat etc). Dac numrul de obiective care trebuie
vizitate este mare sau foarte mare iar timpul disponibil foarte limitat atunci devine vital o
asemenea organizare a trecerii pe la fiecare obiectiv nct s se efectueze n timpul minim posibil.
Acest timp minim se traduce prin drumul cel mai scurt, iar cel mai scurt drum este evident cel n
care se trece pe la fiecare obiectiv o singur dat. n plus, la sfrit trebuie s se afle n punctul
iniial, adic sediul firmei la care lucreaz.
O reprezentare a regiunii aprovizionate, n care centrele pe la care se trece sunt vizualizate
prin puncte iar cile de acces la acestea prin segmente de curbe, va fi evident un graf, problema
reducndu-se la a gsi circuitul hamiltonian de lungime minim.
n timp, s-au evideniat o multitudine de probleme reductibile la gsirea unui drum (sau
circuit) hamiltonian ntr-un graf, cum ar fi:

1. Problema potaului (gsirea traseului cel mai scurt care trece pe la toate locuinele ce
aparin de oficiul potal la care lucreaz acesta);
2. Problema adunrii deeurilor (cel mai scurt drum care trece pe la toate punctele de
depozitate a deeurilor);
3. Problema succesiunii operaiilor (executarea mai multor operaii pe o main n acea
ordine n care suma timpilor consumai cu pregtirea mainii pentru trecerea de la o
operaie la urmtoarea s fie minim)
4. Ordinea lipirii unor componente electronice pe o plac, etc;


Determinarea drumurilor hamiltoniene

Problema determinrii drumului (circuitului) hamiltonian de valoare optim s-a dovedit
deosebit de dificil, neexistnd nici acum un algoritm care s rezolve problema n timp polinomial
i nici mcar o metod simpl prin care s se decid dac ntr-un graf dat exist sau nu drumuri
hamiltoniene.
Exist ns mai muli algoritmi, unii exaci alii heuristici, care reuesc, ntr-un caz sau altul,
s rezolve problema satisfctor i n timp util.

A. Algoritmul lui Foulkes

Pasul 1. Se scrie matricea boolean A asociat grafului G.

Pasul 2. Se determin matricea D a drumurilor grafului G prin procedeul expus la nceputul
capitolului i apoi matricea M = I + D.

Pasul 3. Se mparte mulimea nodurilor grafului n submulimi disjuncte astfel:

1. Se consider n matricea M liniile pline (cu toate elementele 1). Nodurile ce corespund liniilor
pline cu 1 formeaz submulimea C
1
.
2. Se elimin liniile i coloanele care corespund nodurilor din submulimea stabilit.
3. Se reia raionamentul de la punctul 1 pe matricea redus obinut la punctul 2 obinndu-se
urmtoarea submulime i n continuare toate celelalte pn se epuizeaz toate liniile matricei.

130
Bazele cercetrii operaionale
Pasul 4. Se construiete graful G' n care:

1. Nodurile care formeaz o submulime sunt reprezentate prin puncte n interiorul unui
dreptunghi i ntre acestea se traseaz arcele existente n graful iniial G.
2. Se traseaz legturile dintre submulimi. Ele sunt reprezentate prin arcele existente n
graful iniial G ntre nodurile submulimii C
1
i cele ale submulimii C
2
, ntre nodurile
submulimii C
2
i cele ale submulimii C
3
etc.

Pasul 5. Se gsesc drumurile hamiltoniene

Un drum hamiltonian se gsete plecnd de la un vrf din submulimea C
1
, trecnd prin toate
vrfurile acesteia cu un drum hamiltonian, din ultimul vrf la care se ajunge n C
1
trecnd la un vrf
din C
2
, parcurgnd n continuare un drum hamiltonian n a doua submulime i tot aa, trecnd prin
toate submulimile i parcurgnd, deci, toate nodurile grafului iniial, o singur dat. Aplicnd acest
procedeu n toate modurile posibile se obin toate drumurile hamiltoniene din graful iniial G.
(Observaie: poate s nu existe nici un drum hamiltonian n graful G, caz n care algoritmul se
oprete deoarece la un anumit pas nu mai exista nici o linie plina cu 1).

Observaie. Algoritmul lui Foulkes reduce gsirea drumurilor hamiltoniene n graful iniial
G (care n problemele practice este foarte mare) la gsirea mai multor drumuri hamiltoniene mai
mici n componente tare conexe ale grafului. Dac un graf are o singur component tare conex,
algoritmul lui Foulkes nu este eficient, n acest caz trebuind aplicai ali algoritmi cum ar fi cel bazat
pe nmulirea latin.


B. Algoritmul lui Chen pentru determinarea drumurilor hamiltoniene
n grafuri fr circuite

Fie G = (X,U) un graf orientat fr circuite, cu n noduri: X = {x
1
, x
2
, , x
n
}. Vom
considera c am calculat matricea drumurilor D i puterile de atingere ale tuturor nodurilor.
Dac n graful G exist un drum de la nodul x
i
la nodul x
j
atunci evident p(x
i
) > p(x
j
),
deoarece n orice vrf n care se poate ajunge din x
j
se poate ajunge i din x
i
dar din x
j
nu se poate
ajunge n x
j
pentru c nu exist circuite.

Teorema 2.3 (Chen) Un graf cu n noduri, fr circuite conine un drum hamiltonian dac i
numai dac exist relaia:

( )
( )
2
1
1

=
n n
x p
n
i
i


Demonstraie
Fie H un drum hamiltonian i presupunem c nodurile grafului au fost notate n
ordinea n care apar n acest drum. Atunci din orice nod x
i
se poate ajunge n toate nodurile cu
indice mai mare i numai n acestea (altfel ar exista circuite) i deci puterea unui nod x
i
este n i, de
unde:
(

=
n
i
i
x p
1
) = (n 1) + (n 2) + + 1 + 0 =
( )
2
1 n n

Ordonnd vrfurile n ordinea descresctoare a puterii lor de atingere (i > j p(x
i
) <
p(x
j
)) i cum graful nu are circuite, vom obine o matrice D cu toate zerourile deasupra diagonalei
(evident pe o poziie (i,i) nu se afl nici un 1 iar dac ar fi un 1 pe poziia (i,j) cu i > j ar nsemna c
131
Elemente de teoria grafurilor
din x
i
se poate ajunge n x
j
, deci n toate nodurile n care se poate ajunge din x
j
, iar din x
j
nu se poate
ajunge n x
i
, deci p(x ) > p(x
i
( )
j
) n contradicie cu ipoteza de ordonare a nodurilor). Cum deasupra
diagonalei sunt
n
n n 1
poziii iar suma puterilor vrfurilor este chiar
( )
n
n n 1
rezult c toate
poziiile de deasupra diagonalei sunt 1. Aceasta nseamn c exist toate arcele de forma (x
i
,x
i+1
)
(altfel n-ar exista drum de la x
i
la x
i+1
, deoarece toate drumurile au indicii nodurilor n ordine
descresctoare) i deci drumul hamiltonian (x
1
, x
2
, , x
n
) q.e.d.

Teorema 2.4 Dac ntr-un graf orientat fr circuite exist un drum hamiltonian atunci
acesta este unic.

Demonstraie Deoarece un drum hamiltonian se identific cu o permutare a nodurilor
grafului, existena a dou drumuri hamiltoniene implic existena a dou permutri distincte a
nodurilor grafului i cum dou permutri distincte difer prin cel puin o inversiune vor exista dou
noduri x
i
i x
j
n ordinea x
i
x
j
pe un drum i invers pe cellalt, existnd deci un drum att de la x
i

la x
j
ct i de la x
j
la x
i
, cele dou formnd mpreun un circuit, n contradicie cu ipoteza.

Pe aceste teoreme se bazeaz algoritmul lui Chen de determinare a drumului hamiltonian
ntr-un graf orientat fr circuite:

Pasul1. Se scrie matricea de adiacen A
Pasul2. Se calculeaz matricea drumurilor D
Pasul3. Dac exist un indice i cu d
ii
= 1 atunci graful are circuite, nu se poate aplica algoritmul
lui Chen i algoritmul se oprete. Dac nu, se trece la pasul 4.
Pasul4. Se calculeaz puterile de atingere pentru fiecare nod.
Pasul5. Dac nu se verific relaia ( )
( )
2
1
1

=
n n
x p
n
i
i
atunci graful nu are drumuri hamiltoniene
i algoritmul se oprete, altfel se trece la pasul 6.
Pasul6. Se ordoneaz nodurile n ordinea descresctoare a puterilor lor de atingere i obinem
drumul hamiltonian cutat.



C. Algoritmul lui Kaufmann

Pasul 1. Construim matricea latin L asociat grafului, unde:

l
ij
=
( )
( )

j i
j i j i
x , x arcul a exist nu a dac 0
x , x arcul a exist a dac x x
( (
( (

Pasul 2. Construim matricea L
~
, definit prin:
ij
l
~
=
( )
( )

j i
j i j
x , x arcul a exist nu a dac 0
x , x arcul a exist a dac x
( (
( (

numit matricea latin redus.

Pasul 3. Se calculeaz succesiv matricile:

L
2
= L
L
L
~
, L
3
= L
2

L
L
~
, ..., L
k+1
= L
k
L
L
~
, ...

132
Bazele cercetrii operaionale
folosind operaiile de nmulire i adunare latin, alfabetul fiind mulimea nodurilor grafului, unde
operaia de nmulire este uor modificat, produsul dintre dou elemente ale matricilor fiind 0, dac
unul dintre ele este 0 sau au un nod comun, i este produsul latin al lor, n caz contrar.
Din felul cum a fost construit, matricea L
k
va conine toate drumurile elementare de
lungime k. Cum un drum elementar poate avea cel mult n noduri (cte are graful cu totul) rezult
c:
primele n-1 puteri ale L conin toate drumurile elementare din graf;
puterile lui L mai mari sau egale cu n au toate elementele egale cu 0;
matricea L
n-1
conine toate drumurile hamiltoniene din graf.

Pasul 4. Dac se doresc i circuitele atunci se verific pentru fiecare drum hamiltonian dac poate
fi completat pn la un circuit (adic dac exist n graf arcul care unete nodul final cu cel
iniial);
Pasul 5. Dac se dorete i drumul (sau circuitul) de valoare optim (maxim sau minim) se
calculeaz suma valorilor pentru fiecare drum i/sau circuit i se alege cel cu valoarea
optim.

n concluzie, metoda nmulirii latine (A. Kaufmann J. Melgrange) determin toate
drumurile elementare din graf, prin calcularea matricelor M
(1)
, M
(2)
, M
(3)
, , M
(n-1)
.
n matricea M
(n-1)
se citesc drumurile hamiltoniene.
Aceast metod a nmulirii latine (algoritmul lui Kaufmann) este util, mai ales, n cazul
grafurilor tare conexe, unde algoritmul lui Foulkes nu este eficient. Totui, metoda este greu de
aplicat n grafuri cu un numr mare de noduri. n acest caz este preferabil s se construiasc graful
condensat, s se determine drumurile hamiltoniene n fiecare n parte cu algoritmul lui Kaufmann i
apoi, ca la algoritmul lui Foulkes, s se caute drumurile hamiltoniene n graful iniial.

D. Un algoritm bazat pe algoritmul ungar

Fie G = (X,U) un graf orientat cu n noduri X = {x
1
, x
2
, , x
n
}.

Pasul 1. Se construiete graful bipartit H = (AB,V) n care A = B = X i V = U (adic am folosit
pentru G reprezentarea prin coresponden).
Pasul 2. Se gsete pentru graful H cuplajul maxim de valoare minim.
Pasul 3. Se construiete graful parial al lui G format doar cu arcele cuplajului gsit. Este uor de
demonstrat c, componentele tare conexe ale acestuia sunt toate nite circuite. Dac s-a
format un singur circuit acesta este circuitul hamiltonian de valoare minim. Dac s-au
format mai multe se trece la pasul 4.
Pasul 4. Pentru fiecare arc aflat pe circuitul de lungime minim (dac sunt mai multe se iau n
considerare arcele tuturor) se reia algoritmul de la pasul 1 pentru graful parial rezultat din
G prin eliminarea acestui arc.
Pasul 5. Pentru fiecare graf parial se continu procedeul pn se ajunge la unul din cazurile:

Cazul1. Cuplajului maxim gsit i corespunde un singur circuit. Dac acest circuit
este primul obinut atunci valoarea sa i se atribuie unei variabile Z i
circuitul este pstrat. Dac nu este primul atunci valoarea sa se compar cu
Z i, dac este mai mic, ea devine noua valoare a lui Z i circuitul se
pstreaz, eliminndu-l pe cel corespunztor fostei valori a lui Z. n caz
contrar se trece la alt graf parial neanalizat nc.
Cazul2. Cuplajul maxim are o valoare mai mare dect Z. Pentru acest graf parial se
abandoneaz ramificarea.

133
Elemente de teoria grafurilor
Pasul 6. Se continu analiza grafurilor pariale pn sunt analizate toate ramificaiile. Valoarea Z
final este valoarea circuitului de valoare minim iar circuitul corespunztor este cel
optim.

Analiza de mai sus poate fi schematizat printr-un arbore de tipul:












n care fiecare nod este un graf parial de analizat, iar pentru fiecare arc, nodul inferior este un graf
parial care provine din graful corespunztor nodului superior, prin suprimarea unui arc de pe
circuitele de lungime minim corespunztoare cuplajului maxim de valoare minim al acestuia.

Observaie: Algoritmul asigur gsirea circuitului de valoare minim iar n cazul n care
algoritmul lui Foulkes nu funcioneaz este o alternativ mai bun dect algoritmul lui Kaufmann.
Totui el nu lucreaz n timp polinomial i n unele cazuri (de exemplu cazuri n care se formeaz
foarte multe cicluri cu lungime minim) necesit un numr imens de calcule.
n aceste cazuri se pot folosi metode euristice prin care se elimin din start o serie de arce,
considerate a avea valori prea mari pentru a se putea afla pe circuitul hamiltonian de valoare
minim, apoi se aplic n graful parial rmas unul din algoritmii de mai sus.
134
Bazele cercetrii operaionale

8. Drumuri optime ntr-un graf

n marea majoritate a problemelor care pot fi modelate prin grafuri nu ne intereseaz numai
dac exist sau nu legturi ntre componentele reprezentate prin nodurile grafului ci i intensitatea
acestora. Aceast intensitate are semnificaia unei valori numerice (pozitive sau negative) asociate
arcului corespunztor legturii a crei intensitate o msoar.
n aplicaiile economice aceast valoare poate fi:

lungimea drumului dintre dou localiti;
costul parcurgerii rutei reprezentate prin arcul corespunztor;
durata parcurgerii rutei respective;
cantitatea transportat pe ruta respectiv;
capacitatea maxim a rutei respective;
ctigul realizat prin trecerea de la o stare la alta a sistemului;
consum de energie pentru efectuarea trecerii respective;
punctaj realizat etc.

Una din problemele care poate aprea n aceste situaii este gsirea, pentru o anumit
pereche de noduri (sau mai multe perechi), a drumului optim ntre acestea.
Pentru formalizarea problemei vom introduce noiunea de valoare a unui drum, care este
egal cu suma valorilor arcelor care l compun. Vom nota n continuare valoarea unui arc (x
i
,x
j
) cu
v(x
i
,x
j
) sau cu v
ij
. n aceste condiii putem enuna problema drumului optim astfel:
"Dat un graf G = (X,U) i o funcie care asociaz fiecrui arc o valoare real, s se
gseasc, pentru o pereche dat de noduri, drumul (drumurile) de valoare optim (minim sau/i
maxim) ntre cele dou noduri i valoarea acestuia (acestora)"
Deoarece este vorba de gsirea minimului unei mulimi de numere reale, prima ntrebare
care se pune este dac aceasta admite minim. Dac mulimea nodurilor grafului este infinit atunci
pot exista o infinitate de drumuri elementare distincte ntre cele dou noduri i mulimea valorilor
acestora poate avea orice form (nchis sau nu, mrginit sau nu) devenind foarte greu de
caracterizat cazurile cnd minimul dorit exist. Deoarece totui majoritatea covritoare a
problemelor economice se modeleaz prin grafuri cu numr finit de noduri, ne vom limita n
continuare doar la acestea.
Un numr finit de noduri n atrage dup sine existena unui numr finit de arce (cel mult n
2
)
i a unui numr finit de drumuri elementare ( cel mult nn!

=
1 - n
1 k
k!
1
). Deoarece oricrui drum d i
corespunde un drum elementar d
e
(obinut prin eliminarea tuturor subcircuitelor lui d) putem calcula
valoarea oricrui drum ca sum ntre valoarea drumului elementar corespunztor i valorile unor
subcircuite ale sale, fiecare nmulit cu numrul de parcurgeri ale circuitului respectiv.
n concluzie, dac exist un circuit de valoare negativ nseamn c exist drumuri de
valoare orict de mic (cele care conin acest circuit), obinut prin parcurgerea acestuia de oricte
ori dorim) i, deci, mulimea valorilor drumurilor este nemrginit inferior, neexistnd drum de
valoare minim. Dac exist un circuit de valoare pozitiv atunci exist drumuri de valoare orict de
mare i mulimea valorilor drumurilor este nemrginit superior, neexistnd drum de valoare
maxim.
Dac nu exist circuite de valoare negativ atunci valoarea oricrui drum este mai mare sau
egal cu a drumului elementar corespunztor, deci drumul de valoare minim (dac exist) va fi un
drum elementar. Cum mulimea drumurilor elementare este finit (i deci i mulimea valorilor lor)
va avea minorant i am lmurit problema compatibilitii problemei. Analog, dac nu exist circuite
de valoare pozitiv atunci valoarea oricrui drum este mai mic sau egal cu a drumului elementar
135
Elemente de teoria grafurilor
corespunztor, deci drumul de valoare maxim (dac exist) va fi un drum elementar. Cum
mulimea drumurilor elementare este finit (i deci i mulimea valorilor lor), va avea majorant.
Obs. 1. Dac n graf nu exist dect arce de valoare pozitiv atunci exist drum de valoare
minim.
Obs. 1. Dac n graf nu exist dect arce de valoare negativ atunci exist drum de valoare
maxim.
Obs. 1. Dac n graf nu exist circuite atunci exist i drum de valoare minim i drum de
valoare maxim.
Deoarece din cele de mai sus se sesizeaz importana existenei circuitelor ntr-un graf vom
da n continuare un algoritm de depistare a existenei circuitelor ntr-un graf:

Pasul 1. Se construiete mulimea A format din nodurile pentru care toate arcele incidente sunt
incidente spre interior ( noduri n care toate arcele "intr" sau, altfel spus, noduri din care
nu "pleac" nici un arc).
Pasul 2. Se gsesc toate nodurile care nu sunt din A pentru care toate arcele incidente au cealalt
extremitate n A (noduri din care se poate "ajunge" doar in A). Dac nu exist nici un
astfel de arc se trece la pasul 4.
Pasul 3. Se adaug arcele gsite la pasul 2 la mulimea A apoi se reia algoritmul de la pasul 2,
pentru noua mulime A.
Pasul 4. Dac A conine mulimea tuturor nodurilor atunci graful nu conine circuite. Dac au
rmas noduri n afara lui A atunci graful conine circuite.



Algoritmi de gsire a drumului optim

Din cauza varietii nelimitate a grafurilor posibile, nu exist un algoritm care s rezolve
orice problem n timp util, dar s-au elaborat o mulime de algoritmi, fiecare fiind cel mai eficace n
anumite cazuri. Aceti algoritmi pot fi grupai n cinci categorii:

1. Algoritmi prin calcul matricial (Bellman-Kalaba, I. Tomescu, Bellman-Schimbell);
2. Algoritmi prin ajustri succesive: (Ford);
3. Algoritmi prin inducie (Dantzig);
4. Algoritmi prin ordonare prealabil a vrfurilor grafului;
5. Algoritmi prin extindere selectiv (Dijkstra).

n continuare vom prezenta trei dintre aceti algoritmi.

A. Algoritmul lui Bellman - Kalaba

Algoritmul se aplic n grafuri finite care nu au circuite de valoare negativ (pentru o
problem de minim) sau care nu au circuite de valoare pozitiv (ntr-o problem de maxim) i
gsete drumurile de valoare minim (maxim) de la toate nodurile grafului la un nod oarecare,
fixat. Dac dorim s cunoatem drumurile de valoare minim (maxim) ntre oricare dou noduri
vom aplica algoritmul, pe rnd, pentru fiecare nod al grafului.
Fie G = {x
1
, x
2
, ... ,x
n
} un graf orientat finit. Presupunem (fr a restrnge generalitatea, c
am numerotat nodurile astfel nct nodul spre care cutm drumurile de valoare minim (maxim)
de la celelalte noduri s fie x
n
.

Pasul 1. Se construiete matricea ptratic M cu dimensiunea egal cu numrul de noduri ale
grafului ale crei elemente sunt:
136
Bazele cercetrii operaionale
m
ij
=

)
`


+
=

) x , (x arcul exista nu daca


maxim) de problema o - (ntr
minim) de problema o - (ntr
j i daca 0
j i si ) x , (x arcul exista daca ) x , (x arcului valoarea
j i
j i j i

Pasul 2. Se adaug succesiv liniile L
i
la matricea M, elementele acestora calculndu-se prin
relaiile de recuren:
1. L
1j
= m
jn
j = 1,...,n (prima linie este ultima coloan, transpus, a matricii M)
2. L
ij
= min (L
i-1,j
, (m
n 1, k
min
=
jk
+ L
i-1,k
)) ntr-o problem de minim
sau L
ij
= max (L
i-1,j
, (m
n 1, k
max
=
jk
+ L
i-1,k
)) ntr-o problem de maxim

Pasul 3. Dup calcularea fiecrei linii noi se compar elementele ei cu cele ale precedentei:
Dac L
ij
= L
i-1,j
pentru orice j = 1,...,n atunci se oprete recurena i ultima linie
calculat conine valorile minime ale drumurilor de la celelalte noduri la nodul x
n
.

Dac exist cel puin un indice j cu L


ij
L
i-1,j
se trece la calcularea noii linii L
i+1

Pasul 4. Pentru gsirea drumului care d valoarea minim de la un nod x
j
la nodul x
n
se gsesc,
ncepnd napoi de la ultima linie, pe care s-au obinut valorile finale, notat L
f
, nodurile
, ..., care formeaz drumul cutat, unde = x
1
k
x ,
2
k
x
r
k
x
1
k
x
j
, = x
r
k
x
n
i fiecare alt indice
k
i+1
este cel pentru care s-a obinut minimul(maximul) de pe poziia k
i
al liniei L
i
.


Observaie: Pentru grafuri foarte mari, algoritmul necesit un volum mare de memorie, prin
necesitatea memorrii matricei M, care este greu de manipulat. Chiar dac din cele n
2
arce posibile
graful ar avea doar un procent foarte mic matricea grafului va avea tot n
2
poziii de memorat i
analizat.
Exemplu: Presupunem dat graful orientat de mai jos, n care se dorete gsirea drumului de valoare
minim de la nodul x
1
la nodul x
9
.

x
5
9
8
8
6
7
3
4
9
7
5
2
2
3
3
5
4
8
3
7
9
x
9
x
8
x
4
x
7
x
3
x
6
x
1
x
2













Matricea M va fi
|
|
|
|
|
|
|
|
.
|

\
|









0
7 0 4
8 6 0
5 0 8
9 2 3 0 7 2 8
3 0
9 3 0
9 7 0
5 4 0
137
Elemente de teoria grafurilor

iar dup calcularea liniilor L
i
obinem:

x
1
x
2
x
3
x
4
x
5
x
6
x
7
x
8
x
9
x
1
0 4 5
x
2
0 7 9
x
3
0 3 9
x
4
0 3
x
5
8 2 7 0 3 2 9
x
6
8 0 5
x
7
0 6 8
x
8
4 0 7
x
9
0
L
1 9 3 8 7 0
L
2
12 6 3 10 13 8 7 0
L
3
15 12 6 3 8 13 8 7 0
L
4
13 12 6 3 8 13 8 7 0
L
5
13 12 6 3 8 13 8 7 0

Deoarece L
4
= L
5
oprim calcularea liniilor dup calcularea liniei 5. n aceast linie se afl
valorile celor mai scurte de la toate nodurile la nodul x
9
. Drumul dorit de noi (x
1
x
9
) are valoarea
dat de prima poziie a liniei 5, fiind egal cu 13.
Pentru a gsi acest drum, plecm napoi de la linia 4 i avem:

x
1
x
5


13 = 8 + 5 x
3


8 = 6 + 2 x
4


6 = 3 + 3



3 x
9




B. Algoritmul lui Ford simplificat

Algoritmul lui Ford simplificat se aplic doar n grafuri care nu admit circuite. Cu ajutorul
lui se gsete drumul de valoare optim ntre dou noduri fixate x
i
i x
j
. Printr-o eventual
renumerotare a nodurilor putem presupune c nodul de la care pornete drumul este x
1
, care va fi
numit nod iniial, iar nodul la care se termin este x
n
, numit nod final.
Algoritmul este:

Pasul 1. I se d vrfului iniial valoarea 0 (zero): w(x
0
) = 0
Pasul 2. Se construiete mulimea A format din nodul iniial: A = {x
1
}
Pasul 3. Se analizeaz nodurile din afara mulimii A.
Dac exist noduri n care se poate ajunge prin arce directe doar de la nodurile
mulimii A, acestea se adaug la m limea A, cu valoarea: u
w(x
i
) =
( )
( ) ( ) ( )
i j j
x , x
x
x , x v x w min
i j
j
+

, n problemele de minim
138
Bazele cercetrii operaionale
sau w(x
i
) =
( )
( ) ( ) ( )
i j j
x , x
x
x , x v x w max
i j
j
+

, n problemele de maxim
apoi se trece la pasul 4
Dac nu exist nici un nod de acest tip atunci nu exist nici un drum de la x
1
la x
n
.
STOP

Pasul 4. Se analizeaz mulimea A:
Dac x
n
A atunci valoarea sa reprezint valoarea drumului de valoare optim de la
x
1
la x
n
. Pentru gsirea acestui drum se pornete napoi de la nodul final x
n
i se
gsesc nodurile , ..., care formeaz drumul cutat, unde = x
1
k
x ,
2
k
x
r
k
x
1
k
x
n
,
x
r
k
x =
1
i fiecare alt indice k
i+1
este cel pentru care:

w( ) + v( x , x ) = w( ) STOP
1 i
k
x
+ 1 i
k
+ i
k
i
k
x
Dac x
n
A se reia algoritmul de la pasul 3.

Exemplu: Pentru acelai graf i aceeai pereche de noduri din exemplul rezolvat cu algoritmul lui
Bellman-Kalaba vom avea succesiv:

pas1: w(x
1
) = 0
pas2: A = {x
1
}
pas3: Nodurile n care se poate ajunge doar din x
1
: {x
5
}
w{x
5
) = min( w(x
1
) + v(x
1
,x
5
)) = 0 + 5 = 5
pas4: x
9
A
pas3: A = {x
1
,x
5
} i nodurile n care se poate ajunge prin arce directe doar din x
1
i x
5
sunt: {x
6
}
w{x
6
) = min( w(x
1
) + v(x
1
,x
6
), w(x
5
) + v(x
5
,x
6
)) = min(0 + 3 , 5 + 3) = 3
pas4: x
9
A
pas3: A = {x
1
,x
5
,x
6
} i nodurile n care se poate ajunge prin arce directe doar din x
1
, x
5
i x
6
sunt:
{x
2
,x
7
}
w{x
2
) = min( w(x
1
) + v(x
1
,x
2
), w(x
5
) + v(x
5
,x
2
), w(x
6
) + v(x
6
,x
2
)) = min(0 + 4,5 + 8,3 + 8) = 4
w{x
7
) = min( w(x
5
) + v(x
5
,x
7
), w(x
6
) + v(x
6
,x
7
)) = min(5 + 2,3 + 5) = 7
pas4: x
9
A
pas3: A = {x
1
,x
2
,x
5
,x
6
,x
7
} i nodurile n care se poate ajunge prin arce directe doar din x
1
, x
2
, x
5
, x
6

i x
7
sunt: {x
3
,x
8
}
w{x
3
) = min( w(x
2
) + v(x
2
,x
3
), w(x
5
) + v(x
5
,x
3
)) = min(4 + 7,5 + 2) = 7
w{x
8
) = min( w(x
5
) + v(x
5
,x
8
), w(x
7
) + v(x
7
,x
8
)) = min(5 + 9,7 + 6) = 13
pas4: x
9
A
pas3: A = {x
1
,x
2
,x
3
,x
5
,x
6
,x
7
,x
8
} i nodurile n care se poate ajunge prin arce directe doar din x
1
,
x
2
,x
3
,x
5
, x
6
, x
7
i x
8
sunt: {x
4
}
w{x
4
) = min( w(x
2
) + v(x
2
,x
4
), w(x
3
) + v(x
3
,x
4
),w(x
5
) + v(x
5
,x
4
), w(x
8
) + v(x
8
,x
4
)) = min(4 +
9,7 + 3,5 + 7,13 + 4) = 10
pas4: x
9
A
pas3: A = {x
1
,x
2
,x
3
,x
4
,x
5
,x
6
,x
7
,x
8
} i nodurile n care se poate ajunge prin arce directe doar din x
1
,
x
2
, x
3
, x
4
, x
5
, x
6
, x
7
i x
8
sunt: {x
9
}
w{x
9
) = min( w(x
3
) + v(x
3
,x
9
), w(x
4
) + v(x
4
,x
9
), w(x
7
) + v(x
7
,x
9
), w(x
8
) + v(x
8
,x
9
)) = min(7 +
9, 10 + 3, 7 + 8, 13 + 7) = 13
pas4: x
9
A i urmeaz s gsim drumul care are lungimea 13.
Avem succesiv:
w(x
9
) = w(x
4
) + v(x
4
,x
9
)
w(x
4
) = w(x
3
) + v(x
3
,x
4
)
w(x
3
) = w(x
5
) + v(x
5
,x
3
)
139
Elemente de teoria grafurilor
w(x
5
) = w(x
1
) + v(x
1
,x
5
)
deci drumul cutat este: x
1
x
5
x
3
x
4
x
9


Observaia 1. Dac graful are un circuit atunci se poate demonstra uor c nu vom putea da
valoare nici unui nod al acestuia i dac exist vreun drum de la x
1
la x
n
care trece prin unul din
nodurile circuitului nu vom putea da valoare nici lui x
n
, cu toate c exist drum de la x
1
la x
n
.
Observaia 2: Algoritmul necesit pentru memorare i manipulare doar cunoaterea, pentru
fiecare nod, a nodurilor spre care "pleac" arce din acesta i valorile acestor arce, fiind mult mai
uor de aplicat sau implementat pe calculator. El are ns dezavantajul c se poate aplica doar n
grafuri fr circuite.


C. Algoritmul Ford generalizat

Algoritmul lui Ford generalizat a fost creat cu scopul de a putea gsi drumul optim i n
grafurile care au circuite. Cu ajutorul lui se gsete drumul de valoare optim ntre dou noduri
fixate x
i
i x
j
. Printr-o eventual renumerotare a nodurilor putem presupune c nodul de la care
pornete drumul este x
1
, care va fi numit nod iniial, iar nodul la care se termin este x
n
, numit nod
final.
Algoritmul este:

Pasul 1. I se d vrfului iniial valoarea 0 (zero): w(x
0
) = 0 i tuturor celelalte valoarea + (ntr-o
problem de minim) sau - (ntr-o problem de maxim).
Pasul 2. n ordinea cresctoare a indicilor nodurilor se calculeaz pentru fiecare nod, pe baz
fostelor valori, noile valori cu formula:
w
*
(x
i
) = n problemele de minim ( )
( )
( ) ( ) (
|
|
|
.
|

\
|
+

i j j
x , x
x
i
x , x v x w min , x w min
i j
j
)
) sau w
*
(x
i
) = n problemele de maxim ( )
( )
( ) ( ) (
|
|
|
.
|

\
|
+

i j j
x , x
x
i
x , x v x w max , x w max
i j
j
Pasul 3. Se compar noile valori w
*
(x
i
) cu fostele valori w(x
i
):
Dac w
*
(x
i
) = w(x
i
) pentru orice nod x
i
atunci:
dac w(x
n
) < (la problema de minim) sau w(x
n
) > - (la problema de maxim),
valoarea nodului x
n
reprezint valoarea drumului de valoare minim(maxim) de
la x
1
la x
n
. Pentru gsirea acestui drum se pornete napoi de la nodul final x
n
i
se gsesc nodurile , ..., x care formeaz drumul cutat, unde = x
1
k
x ,
2
k
x
r
k
1
k
x
n
,
= x
r
k
x
1
i fiecare alt indice k
i+1
este cel pentru care:
w( ) + v( , ) = w( ) STOP
1 i
k
x
+ 1 i
k
x
+ i
k
x
i
k
x
dac w(x
n
) = + (-) atunci nu exist nici un drum de la x
1
la x
n
. STOP
Dac exist cel puin un nod pentru care w
*
(x
i
) < w(x
i
) se reia algoritmul de la pasul
2 pentru noile valori ale vrfurilor.

Observaie: Algoritmul poate gsi drumul i n grafuri cu circuite dar este evident mult mai
lent dect cel simplificat. Pentru scurtarea duratei de execuie se poate modifica algoritmul n sensul
c o valoare nou calculat a unui vrf va fi folosit imediat ca atare la calculul noilor valori ale
celorlalte, nu doar dup ce se calculeaz noile valori ale tuturor vrfurilor.


140
Bazele cercetrii operaionale
D. Algoritmul lui Dijkstra

n algoritmul Ford simplificat, pentru a gsi valoarea nodului final, deci a drumului minim,
plecm de la nodul iniial n toate direciile posibile, pstrnd de fiecare dat toate nodurile
analizate. Acest fapt duce la un consum inutil de timp, deoarece foarte multe din aceste noduri nu
vor face parte din drumul optim. Pentru a elimina acest neajuns, algoritmul lui Dijkstra ncearc s
pstreze, la fiecare iteraie, mulimea minim de noduri care s le conin 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 se aplic doar la probleme de minim. Algoritmul are urmtorii pai:

Pasul 1. I se d vrfului iniial valoarea 0 (zero): w(x
0
) = 0
Pasul 2. Se construiete mulimea A format din nodul iniial: A = {x
1
}
Pasul 3. Se analizeaz nodurile din afara mulimii A.
Dac exist noduri n care se poate ajunge prin arce directe de la noduri din A
(nu doar de la nodurile mulimii A, ca la algoritmul lui Ford simplificat) se
calculeaz pentru toate acestea:
w(x
i
) =
( )
( ) ( ) ( )
i j j
x , x
A x
x , x v x w min
i j
j
+


n problemele de minim
dar, spre deosebire de algoritmul lui Ford simplificat, se adaug la mulimea A doar
cel pentru care se obine valoarea minim, apoi se trece la pasul 4.
Dac nu exist nici un nod de acest tip atunci nu exist nici un drum de la x
1
la x
n
.
STOP

Pasul 4. Se analizeaz mulimea A:
Dac x
n
A atunci valoarea sa reprezint valoarea drumului de valoare optim de la
x
1
la x
n
. Pentru gsirea acestui drum se pornete napoi de la nodul final x
n
i se
gsesc nodurile , ..., care formeaz drumul cutat, unde = x
1
k
x ,
2
k
x
r
k
x
1
k
x
n
,
x
r
k
x =
1
i fiecare alt indice k
i+1
este cel pentru care:

w( ) + v( x , x ) = w( ) STOP
1 i
k
x
+ 1 i
k
+ i
k
i
k
x
Dac x
n
A se reia algoritmul de la pasul 3.


Exemplu Vom aplica algoritmul la acelai graf folosit la ceilali algoritmi, pentru a putea
face comparaii:

pas1: w(x
1
) = 0
pas2: A = {x
1
}
pas3: Nodurile n care se poate ajunge i din x
1
: {x
2
,

x
5
,

x
6
}
w{x
2
) = min( w(x
1
) + v(x
1
,x
2
)) = 0 + 4 = 4
w{x
5
) = min( w(x
1
) + v(x
1
,x
5
)) = 0 + 5 = 5
w{x
6
) = min( w(x
1
) + v(x
1
,x
6
)) = 0 + 3 = 3
min(w{x
2
),w{x
5
),w{x
6
)) = w{x
6
) = 3
pas4: x
9
A
pas3: A = {x
1
,x
6
} i nodurile n care se poate ajunge prin arce directe din x
1
sau x
6
sunt:
{x
2
,x
5
,x
7
}
w{x
2
) = min( w(x
1
) + v(x
1
,x
2
), w(x
6
) + v(x
6
,x
2
)) = min(0 + 4 , 3 + 8) = 4
w{x
5
) = min( w(x
1
) + v(x
1
,x
5
)) = min(0 + 5) = 5
w{x
7
) = min( w(x
6
) + v(x
6
,x
7
)) = min(3 + 5) = 8
min(w{x
2
),w{x
5
),w{x
7
)) = w{x
2
) = 4
pas4: x
9
A
141
Elemente de teoria grafurilor
pas3: A = {x
1
,x
2
,x
6
} i nodurile n care se poate ajunge prin arce directe din x
1
, x
2
sau x
6
sunt:
{x
3
,x
4
,x
5
,x
7
}
w{x
3
) = min( w(x
2
) + v(x
2
,x
3
)) = min(4 + 7) = 11
w{x
4
) = min( w(x
2
) + v(x
2
,x
4
)) = min(2 + 9) = 11
w{x
5
) = min( w(x
1
) + v(x
1
,x
5
)) = min(0 + 5) = 5
w{x
7
) = min( w(x
6
) + v(x
6
,x
7
)) = min(3 + 5) = 0
min(w{x
3
),w{x
4
),w{x
5
),w{x
7
)) = w{x
5
) = 5
pas4: x
9
A
pas3: A = {x
1
,x
2
,x
5
,x
6
} i nodurile n care se poate ajunge prin arce directe din x
1
, x
2
, x
5
, x
6
i x
7

sunt: {x
3
,x
4
,x
7
,x
8
}
w{x
3
) = min( w(x
2
) + v(x
2
,x
3
), w(x
5
) + v(x
5
,x
3
)) = min(4 + 7,5 + 2) = 7
w{x
4
) = min( w(x
2
) + v(x
2
,x
4
), w(x
5
) + v(x
5
,x
4
)) = min(4 + 9,5 + 7) = 12
w{x
7
) = min( w(x
5
) + v(x
5
,x
7
), w(x
6
) + v(x
6
,x
7
)) = min(5 + 2,3 + 5) = 7
w{x
8
) = min( w(x
5
) + v(x
5
,x
8
)) = min(5 + 9) = 14
min(w{x
3
),w{x
4
),w{x
7
),w{x
8
)) = w{x
3
) = w{x
7
) = 7
pas4: x
9
A
pas3: A = {x
1
,x
2
,x
3
,x
5
,x
6
,x
7
} i nodurile n care se poate ajunge prin arce directe din x
1
, x
2
, x
3
, x
5
, x
6
,
i x
7
sunt: {x
4
,x
8
,x
9
}
w{x
4
) = min( w(x
2
) + v(x
2
,x
4
), w(x
3
) + v(x
3
,x
4
),w(x
5
) + v(x
5
,x
4
)) = min(4 + 9,7 + 3,5 + 7) =10
w{x
8
) = min( w(x
5
) + v(x
5
,x
8
), w(x
7
) + v(x
7
,x
8
)) = min(5 + 9,7 + 6) = 13
w{x
9
) = min( w(x
3
) + v(x
3
,x
9
), w(x
7
) + v(x
7
,x
9
)) = min(7 + 9,7 + 8) = 15
min(w{x
4
),w{x
8
),w{x
9
)) = w{x
4
) = 10
pas4: x
9
A
pas3: A = {x
1
,x
2
,x
3
,x
4
,x
5
,x
6
,x
7
} i nodurile n care se poate ajunge prin arce directe din x
1
, x
2
, x
3
, x
4
,
x
5
, x
6
, i x
7
sunt: {x
8
,x
9
}
w{x
9
) = min( w(x
3
) + v(x
3
,x
9
), w(x
4
) + v(x
4
,x
9
), w(x
7
) + v(x
7
,x
9
)) = min(7 + 9,10 + 3,7+8)=13
w{x
8
) = min( w(x
5
) + v(x
5
,x
8
), w(x
7
) + v(x
7
,x
8
)) = min(5 + 9,7 + 6) = 13
min(w{x
8
),w{x
9
)) = w{x
8
) = w{x
9
) = 13
pas4: x
9
A i urmeaz s gsim drumul care are lungimea 13.
Avem succesiv:
w(x
9
) = w(x
4
) + v(x
4
,x
9
)
w(x
4
) = w(x
3
) + v(x
3
,x
4
)
w(x
3
) = w(x
5
) + v(x
5
,x
3
)
w(x
5
) = w(x
1
) + v(x
1
,x
5
)
deci drumul cutat este: x
1
x
5
x
3
x
4
x
9

142
Bazele cercetrii operaionale
9. Reele de transport

ntr-o mare varietate de situaii concrete din practica economic se pune problema deplasrii
unei cantiti de materie, energie, informaie etc, din anumite locuri, numite surse, n alte locuri,
numite destinaii. Pentru realizarea acestui transport se folosesc o serie de trasee, numite rute de
legtur. Unitile indivizibile ale cantitii Q, care se deplaseaz de-a lungul rutelor ntre surse i
destinaii, se numesc uniti de flux, iar ansamblul rutelor, surselor, destinaiilor i, eventual, a
altor puncte intermediare se numete reea de transport.
Situaia de mai sus poate fi reprezentat geometric printr-un graf finit, conex i fr bucle.
Pentru ca o astfel de problem s fie suficient de complex pentru a necesita un studiu
matematic riguros, trebuie ca fiecare surs s poat aproviziona mai multe destinaii i orice
destinaie s poat fi aprovizionat de mai multe surse.
Aprovizionarea destinaiilor se poate face direct de la surse sau prin intermediul altor
puncte, numite puncte intermediare. n cazul cel mai general pot exista de asemenea legturi ntre
surse i/sau legturi ntre destinaii.
Aa cum s-a vzut i la problema de transport, situaia de mai sus este un cadru extrem de
larg, care permite existena unui numr foarte mare de tipuri de probleme posibile, diferite ntre ele
prin informaiile suplimentare pe care le avem despre reea i prin obiectivele urmrite.
Una dintre acestea este problema determinrii cantitii maxime (minime) care poate fi
transportat de la surse la destinaii, n situaia n care sursele dispun de cantiti limitate (inferior
sau superior), destinaiile au un necesar sau o putere de absorbie limitat inferior sau superior iar pe
fiecare rut se poate transporta doar o cantitate cuprins ntre anumite limite.
Pentru studiul matematic al acestei situaii vom da definiiile matematice ale obiectelor
implicate n problem i ipotezele modelului.

Definiia 1: Se numete reea de transport standard un graf finit, simplu, conex, fr bucle
G = (X,U) care are urmtoarele proprieti:
1. Exist i este unic s X a.. , (din care doar "ies" arce), numit
intrarea reelei de transport;

+
s
U =

s
U
2. Exist i este unic t X a.. = ,
+
t
U

t
U (n care doar "intr" arce) numit
ieirea reelei de transport;
3. S-a definit o funcie c: U R
+
care asociaz fiecrui arc u un numr strict
pozitiv c
u
numit capacitatea arcului.

Observaie: Este clar c exemplele obinuite au doar rareori o singur surs i o singur destinaie.
Totui, printr-o tehnic foarte simpl, orice reea de transport se poate aduce la forma standard:
1. Dac sunt mai multe surse se introduce un nod suplimentar din care "pleac" cte
un arc spre fiecare surs (i numai spre acestea), iar capacitile acestor arce vor fi
egale cu disponibilurile surselor corespunztoare;
2. Dac sunt mai multe destinaii se introduce un nod suplimentar spre care "pleac"
cte un arc din fiecare destinaie (i numai din acestea), iar capacitile acestor arce
vor fi egale cu necesarurile destinaiilor corespunztoare;

Definiia 2: Se numete flux ntr-o reea de transport R = (X,U) o funcie : U R
+
care
are urmtoarele proprietile:
P1. 0
u
c
u
oricare ar fi u din U; valoarea
u
se numete flux al arcului u
P2. oricare ar fi i s,t (suma fluxurilor arcelor care "intr" ntr-
un nod i este egal cu suma fluxurilor arcelor care "ies" din acest nod, cu excepia
nodului iniial i al celui final.

+

=
i
i
U u
u
U u
u

143
Elemente de teoria grafurilor

Definiia 3: Se numete valoare a fluxului suma fluxurilor arcelor care "pleac" din nodul
iniial s i se noteaz cu .
Observaie: Se poate demonstra uor c aceast valoare este egal i cu suma fluxurilor
arcelor care "intr" n nodul final t. n concluzie avem:

=

+

=
t s
U u
u
U u
u


Valoarea fluxului reprezint cantitatea care se transport efectiv pe reea de la surse la
destinaii.

Definiia 4: Se numete flux de valoare maxim ntr-o reea un flux n aceast reea, cu
proprietatea c, pentru orice alt flux ' pe aceast reea, avem '.

Valoarea fluxului de valoare maxim reprezint cea mai mare cantitate care se poate
transporta efectiv pe reea, de la surse la destinaii.

Economic vorbind, ne intereseaz, referitor la o reea, rspunsurile la urmtoarele ntrebri:

1. Putem transporta ntreaga cantitate necesar la destinaii?
2. Dac da, cum transportm efectiv aceast cantitate de la surse la destinaii?
3. Dac nu, din ce motiv nu putem realiza acest transport?
4. Cum putem nltura cu eforturi minime acest motiv?

Rspunsul la primele dou ntrebri se poate afla prin gsirea fluxului de valoare maxim i
compararea valorii lui cu suma necesarurilor destinaiilor. n plus, valoarea acestuia pe un arc
reprezint cantitatea care trebuie transportat pe ruta respectiv, pentru a obine aceast valoare a
fluxului.
Rspunsul la ultimele dou ntrebri pornete de la observaia c cea mai mare cantitate care
poate traversa reeaua de la un cap la altul este egal cu dimensiunea celui mai ngust loc de trecere
prin reea. Dac vrem, deci, s mrim fluxul va trebui s lrgim tocmai acest cel mai ngust loc de
traversare al reelei.
Pentru formalizarea consideraiilor de mai sus vom introduce noiunea de tietur ntr-o
reea:

Definiia 5: Dat o reea de transport G(X,U) cu s = nodul iniial i t = nodul final, se
numete tietur n reea o partiie a mulimii vrfurilor reelei de transport, format din dou
submulimi V i W (VW = , VW = X) astfel nct s V i t W.

O tietur poate fi privit, intuitiv, ca o seciune a reelei, care las nodul iniial cu o
submulime din noduri ntr-o parte, nodul final cu restul nodurilor n cealalt parte i reteaz toate
arcele care trec dintr-o parte n cealalt.
A cunoate o tietur este echivalent cu a cunoate care sunt elementele celor dou mulimi,
V i W, care formeaz partiia.
Vom nota o tietur prin T = (V,W), convenind ca mulimea scris pe prima poziie s
conin nodul iniial s al reelei iar cea scris pe a doua, nodul final t.

Definiia 6: Se numete capacitate a unei tieturi T = (V,W) ntr-o reea de transport
G(X,U), notat C(T), suma capacitilor tuturor arcelor care au extremitatea iniial n V i cea
final n W.
144
Bazele cercetrii operaionale
C(T) =
( )

=
W x
V x
x , x u
u
j
i
j i
c
Pentru a nu exista nici o ambiguitate, insistm asupra faptului c se vor lua n considerare
doar arcele care trec de la mulimea ce conine nodul iniial spre mulimea care conine nodul final,
adic n sensul normal de transport (surse destinaie).

Definiia 7: Se numete tietur de valoare minim ntr-o reea o tietur T n aceast
reea, cu proprietatea c, pentru orice alt tietur T' n aceast reea, avem C(T) C(T').

Urmtoarele teoreme fac legtura matematic dintre fluxurile unei reele i tieturile sale:

Teorema 1. Dat o tietur T = (V,W) i un flux ntr-o reea de transport avem:

=
( )

=
W x
V x
x , x u
u
j
i
j i

( )

=
V x
W x
x , x u
u
j
i
j i

sau, altfel spus, valoarea unui flux oarecare este egal cu suma fluxurilor arcelor care trec de la V la
W din care se scade suma fluxurilor arcelor care trec invers, de la W la V, oricare ar fi tietura T =
(V,W).

Demonstraie: Avem succesiv:

= =
( )

=
X x
x s, u
u
j
j

( )

=
X x
x s, u
u
j
j
+ =


|
|
|
.
|

\
|

+
s x
V x
U u
u
U u
u
i
i
i
x
i
x

= ( )
( )

=

V x
V x
x , x u
u u
j
i
j i
+
( )

=
W x
V x
x , x u
u
j
i
j i
-
( )

=
V x
W x
x , x u
u
j
i
j i
=
( )

=
W x
V x
x , x u
u
j
i
j i

( )

=
V x
W x
x , x u
u
j
i
j i


Corolar: ntr-o reea de transport valoarea oricrui flux este mai mic sau egal dect valoa-
rea oricrei tieturi.

Demonstraie: Fie T o tietur oarecare i un flux oarecare. Avem succesiv:

=
( )

=
W x
V x
x , x u
u
j
i
j i

( )

=
V x
W x
x , x u
u
j
i
j i

( )

=
W x
V x
x , x u
u
j
i
j i

( )

=
W x
V x
x , x u
u
j
i
j i
c = C(T)

Corolar: ntr-o reea de transport valoarea fluxului maxim este mai mic sau egal dect
valoarea tieturii minime.
Demonstraia e evident. n plus, din cele de mai sus se vede c egalitatea are loc numai
dac, pentru tietura minim, exist un flux pentru care toate arcele de la V la W sunt folosite la
maxim (fluxul e egal cu capacitatea arcelor) iar pe toate arcele de la W la V nu se transport nimic.

Teorema lui Ford-Fulkerson Dac fluxul este maximal atunci exist o tietur de
capacitate egal cu valoarea fluxului.
145
Elemente de teoria grafurilor

Demonstraie: Fie un flux maximal. Introducem urmtorul procedeu de marcare a
vrfurilor:
Pasul 1. Se marcheaz nodul iniial s cu 0(zero);
Pasul 2. Pentru fiecare vrf marcat x
i
se marcheaz cu:
[+x
i
] toate vrfurile nemarcate x
j
pentru care exist arcul (x
i
,x
j
) i (x
i
,x
j
) < c(x
i
,x
j
)
(adica nodurile spre care mai e loc pentru a se transporta ceva din x
i
);
[x
i
] toate vrfurile nemarcate x
j
pentru care exist arcul (x
j
,x
i
) i (x
j
,x
i
) > 0
(adic toate nodurile spre care pleac deja ceva din x
i
);
Pasul 3. Se repet pasul 2 pn nu mai poate fi marcat nici un vrf.

Dac vrful final t ar fi marcat, atunci ncepnd de la acesta, am putea construi lanul
, ..., unde = s, = t i marcajul oricrui vrf este + sau
Adugnd la fluxul fiecrui arc al lanului de tipul ( x , x ) valoarea:
1
k
x ,
2
k
x
r
k
x
1
k
x
r
k
x
1 i
k
x
+ i
k
x
i
k
x .
i
k
1 i
k
+
= min(
( )
( ) ( ) ( )
1 i i 1 i i
1 i
k
i
k
k k k k
x , x
x , x x , x c min
+ +
+
,
( )
( )
1 i i
i
k
1 i
k
k k
x , x
x , x min
+
+
)
i scznd din fluxul fiecrui arc de tipul ( x , ) aceeai valoare , obinem un flux de valoare
+ , deci fluxul nu ar fi maximal.
1 i
k
+ i
k
x
n concluzie vrful t nu va fi marcat. Fie tietura T = (V,W), unde V este format din
mulimea nodurilor marcate iar W din cele nemarcate. n acest caz, pentru fiecare arc (x
i
,x
j
) care
"traverseaz" tietura avem:

dac x
i
V atunci (x
i
,x
j
) = c(x
i
,x
j
) deoarece nodul x
j
nu e marcat
dac x
i
W atunci (x
i
,x
j
) = 0 deoarece nodul x
i
nu e marcat

n acest caz avem:
C(T) =
( )

=
W x
V x
x , x u
u
j
i
j i
c =
( )

=
W x
V x
x , x u
u
j
i
j i

( )

=
V x
W x
x , x u
u
j
i
j i
=
i teorema e demonstrat.

Teorema lui Ford-Fulkerson poate stabili doar valoarea fluxului maxim dar nu d o metod
de gsire a acestuia. Pentru a rezolva problema gsirii fluxului de valoare maxim se poate folosi
algoritmul lui Ford-Fulkerson.
Pentru expunerea acestuia vom introduce i noiunile de:

arc saturat = un arc pe care fluxul este egal cu capacitatea;
drum complet = un drum de la nodul iniial s la nodul final t care conine cel puin un arc saturat;
flux complet = un flux pentru care orice drum de la nodul iniial s la nodul final t este complet.

Algoritmul lui Ford-Fulkerson

ETAPA I Se determin un flux complet.

Pasul 1. Se numeroteaz nodurile reelei de transport astfel nct x
1
= s i x
n
= t;
Pasul 2. Se asociaz grafului fluxul nul (
u
= 0 pentru orice arc u din graf);
Pasul 3. n ordine lexicografic, se ia pe rnd fiecare drum D de la nodul iniial la cel final, se
calculeaz valoarea
D
= ( )
u u
D u
c min

i se adaug la fluxul de pe fiecare arc al


146
Bazele cercetrii operaionale
drumului. Arcul(arcele) unui drum D pentru care s-a obinut valoarea minim
D
va fi
dup aceast adugare, n mod evident, saturat i deci drumul D va fi complet.
Dup epuizarea tuturor drumurilor se obine un flux complet, de valoare =

D
D
.
Deoarece alegerea drumurilor n ordine lexicografic nu ine cont de structura reelei, aa cum se
poate vedea pe un exemplu, acest procedeu nu asigur ntotdeauna gsirea fluxului maxim. Acest
impediment poate fi depit fie prin gsirea unei ordini de parcurgere a tuturor drumurilor, care s
dea pentru fiecare reea fluxul maxim, n urma procedeului de mai sus, fie prin redistribuirea
judicioas a fluxului gsit la etapa I. A doua variant este cea care se aplic la etapa II.

ETAPA II Se determin fluxul maxim

Pasul 4. Se marcheaz nodul iniial s cu 0(zero);
Pasul 5. Pentru fiecare vrf marcat x
i
se marcheaz cu:
[+x
i
] toate vrfurile nemarcate x
j
pentru care exist arcul (x
i
,x
j
) i (x
i
,x
j
) < c(x
i
,x
j
)
(adica nodurile spre care mai e loc pentru a se transporta ceva din x
i
);
[x
i
] toate vrfurile nemarcate x
j
pentru care exist arcul (x
j
,x
i
) i (x
j
,x
i
) > 0 (adic
toate nodurile spre care pleac deja ceva din x
i
);
Pasul 6. Se repet pasul 5 pn este marcat nodul final sau pn cnd nu mai poate fi marcat nici
un vrf;
Pasul 7. Dac nodul final a fost marcat atunci fluxul este maxim i algoritmul se oprete, n caz
contrar trecndu-se la pasul 8;
Pasul 8. Construim un lanul L = , , ..., unde = s, = t i marcajul oricrui vrf
este +x sau . Se calculeaz:
1
k
x
2
k
x
r
k
x
1
k
x
r
k
x
1 i
k
x
+ i
k
i
k
x

L
= min(
( )
( ) ( ) ( )
1 i i 1 i i
1 i
k
i
k
k k k k
x , x
x , x x , x c min
+ +
+
,
( )
( )
1 i i
i
k
1 i
k
k k
x , x
x , x min
+
+
)
care se adaug la fluxul fiecrui arc al lanului de tipul ( ) i se scade din
fluxul fiecrui arc de tipul ( , .
i
k
x ,
1 i
k
x
+
1 i
k
x
+ i
k
x )
Pasul 9. Se terge marcajul i se reia algoritmul de la pasul 4.

n final, tietura de valoare minim este cea n care V = mulimea nodurilor marcate iar W =
mulimea nodurilor nemarcate.

Observaia 1. Algoritmul nu asigur ntotdeauna gsirea fluxului maxim, deoarece se poate
ca creterea fluxului la fiecare iteraie s se fac cu cantiti din ce n ce mai mici astfel nct suma
lor s nu ating niciodat marginea superioar dat de valoarea tieturii minime, algoritmul avnd o
infinitate de pai. Teorema de mai jos d o condiie suficient pentru ca algoritmul s se termine
ntr-un numr finit de pai:

Teorem Dac toate capacitile rutelor reelei sunt numere raionale atunci algoritmul lui
Ford-Fulkerson are un numr finit de pai.

Demonstraie Prin nmulirea tuturor acestor capaciti cu cel mai mic multiplu comun al
numitorilor se obine o reea cu toate capacitile numere naturale. innd cont de formula de
calcul, la fiecare iteraie cantitatea adugat va fi numr natural i cum valoarea fluxului maxim
este mrginit de capacitatea tieturii minime C
min
, care este de asemenea numr natural, algoritmul
va avea nevoie de cel mult C
min
pai pentru a o atinge.

Observaia 2. Teorema de mai sus asigur doar o limitare superioar a numrului de iteraii
ale algoritmului, fa de capacitatea tieturii minime. Aceast valoare poate fi ns, n anumite
147
Elemente de teoria grafurilor
cazuri, foarte mare i, dac nu se iau precauii suplimentare, algoritmul nu va da soluia n timp util.
Depirea acestei situaii este asigurat de urmtoarea teorem:

Teorem Dac la fiecare iteraie se alege drumul (lanul) de lungime minim atunci
algoritmul va avea cel mult
2
1
mn iteraii, unde n = numrul de noduri iar m = numrul de muchii.

Observaia 3. Exist probleme n care se dorete gsirea fluxului minim ntr-o reea, valorile
fluxului pe arce fiind limitate inferior de capacitile acestora. n acest caz se aplic de asemenea
algoritmul lui Ford-Fulkerson astfel:

Pasul 1. Se calculeaz M = maximul capacitilor arcelor
Pasul 2. Se construiete reeaua R', care este fosta reea, n care au fost modificate doar
capacitile arcelor, acestea devenind
u
c = M c
u

Pasul 3. Se gsete cu algoritmul Ford-Fulkerson fluxul , de valoare maxim, n aceast
reea
Pasul 4. Fluxul de valoare minim n reeaua iniial va avea valorile ' = M


Observaia 4. Exist i alte tipuri de probleme asemntoare celor de mai sus. Astfel, se
poate pune problema:
gsirii capacitilor minime ale arcelor cu care se poate asigura transportarea ntregii
cantiti de la surse la destinaii
fluxului minim(maxim) ntr-o reea n care capacitile rutelor sunt limitate att superior
ct i inferior;
n cazul n care rutelor li se asociaz i costuri unitare de parcurgere, putem cuta fluxul
maxim de cost minim;

148