GRAFURI
3.1. Noiuni generale. Metode de reprezentare a grafului.
Arbori. Noiune de drum minim. Algoritmul Bellman-Calaba.
Reele de transport. Algoritmul Ford-Fulkerson
Noiuni generale
Se numete graf, ansamblul format dintr-o mulime finit X i o
aplicaie F a lui X n P(X). Se noteaz G = (X,F). Elementele
mulimii X se numesc vrfuri ale grafului. Perechea de vrfuri (x,y)
se numete arc; vrful x se numete originea a arcului (x,y), iar
vrful y se numete extremitatea.
Dac un vrf nu este extremitatea nici unui arc el se numete
vrf izolat, iar dac este extremitatea a mai mult de dou arce - nod.
Un arc pentru care extremitatea iniial coincide cu cea final se
numete bucl.
Dou arce se zic adiacente dac sunt distincte i au o
extremitate comun. Dou vrfuri se zic adiacente dac sunt
distincte i sunt unite printr-un arc.
Se spune c arcul (x,y) este incident cu vrful x spre exterior i
y spre interior.
Fie G = (X,F) i xX. Mulimea tuturor arcelor incidente cu x
spre exterior (interior) se numete semigradul exterior (interior) a
lui x i se noteaz d x d x .
ntr-un graf G = (X,U) se numete drum un ir de arce (u1,...,uk),
astfel nct extremitatea terminal a fiecrui arc uI coincide cu
extremitatea iniial a arcului urmtor ui+1. Un drum care folosete
o singur dat fiecare arc al su se numete drum simplu. Un drum
care trece o singur dat prin fiecare vrf al su se numete drum
elementar.
Un drum elementar ce trece prin toate vrfurile grafului se
numete drum hamiltonian. Un drum simplu ce conine toate arcele
grafului se numete drum eulerian. Un drum finit pentru care vrful
iniial coincide cu vrful terminal se numete circuit.
38
Noiune de drum minim
Adeseori, fiecrui arc (muchii) i se pune n coresponden un
numr real care se numete ponderea (lungimea) arcului. n cazul
grafurilor cu arce ponderate (grafuri ponderate) se va considera
lungime a unui drum suma ponderilor arcelor care formeaz acest
drum. Drumul care unete dou vrfuri concrete i are lungimea
cea mai mic se va numi drum minim iar lungimea drumului minim
vom numi distan.
Graful obinut din graful iniial suprimnd cel puin un vrf al
acestuia precum i toate arcele incidente cu el se numete subgraf.
Graful obinut suprimnd cel puin un arc se numete graf parial.
Un graf se numete complet dac oricare ar fi x i y din X exist
n( n 1)
un arc de la x la y sau de la y la x. Un graf complet are
2
arce.
Un graf G = (X,F) se zice tare conex dac pentru orice x, yX
(x diferit de y) exist un drum de la x la y sau c oricare pereche de
vrfuri x, y cu x diferit de y se afl pe un circuit.
Fie G =(X,F) i xX. Mulimea Cx format din toate vrfurile
xiX pentru care exist un circuit ce trece prin x i xi se numete
component tare conex a lui G corespunztoare vrfului x.
Noiunile introduse sunt valabile pentru grafurile orientate.
n cazul n care orientarea arcelor nu are nici o importan graful
se va numi neorientat. Arcele se vor numi muchii, drumul - lan,
circuitul - ciclu. La fel se introduce noiunea de lan elementar i
simplu, lan Euler i hamiltonian. Graful tare conex se va numi
conex.
Fie G =(X,U) un graf neorientat i xX. Se numete gradul
vrfului x numrul muchiilor care au o extremitate n vrful x. Se
noteaz g(x).
Un graf se zice c este planar dac poate fi reprezentat pe un
plan astfel ca dou muchii s nu aib puncte comune n afar de
extremitile lor. Un graf planar determin regiuni numite fee. O
fa este o regiune mrginit de muchii i care nu are n interior nici
vrfuri, nici muchii.
39
Se numete arbore oricare graf conex fr bucle i cicluri.
Se numete arborescen un graf orientat fr circuite astfel ca
s existe un vrf i numai unul care nu e precedat de nici un alt vrf
(rdcina) i orice alt vrf s fie precedat de un singur vrf.
Parcurgerea grafului n lrgime i n adncime va garanta
vizitarea fiecrui vrf al grafului exact o singur dat.
Parcurgerea grafului n adncime ncepe cu un vrf iniial dat
i i continu cu primul dintre vrful su adiacent nevizitat; fie
acesta j. n continuare se procedeaz n mod similar cu vrful j,
trecndu-se la primul dintre vrful adiacent lui j, nevizitat nc
.a.m.d. pn vor fi vizitate toate vrfurile grafului.
La parcurgerea grafului n lrgime dup vizitarea vrfului
iniial, de la care va ncepe cutarea n lrgime, vor fi vizitate toate
vrfurile adiacente cu vrful dat, apoi toate vrfurile adiacente cu
aceste ultime vrfuri .a.m.d. pn vor fi vizitate toate vrfurile
grafului. Evident, este necesar ca graful s fie conex..
Metode de reprezentare a grafului
Exist trei metode de baz de definire a unui graf:
1. Matricea de inciden;
2. Matricea de adiacen;
3. Lista de adiacen (inciden).
Matricea de inciden este o matrice de tipul mxn, n care m
este numrul de muchii sau arce (pentru un graf orientat), iar n este
numrul vrfurilor. La intersecia liniei i cu coloana j se vor
considera valori -1,0,1 n conformitate cu urmtoarea regul:
1 - dac muchia i este incident cu vrful j (dac arcul i
"intr" n vrful j n cazul unui graf orientat);
0 - dac muchia (arcul) i i vrful j nu sunt incidente;
-1 - numai pentru grafuri orientate, dac arcul i "iese" din
vrful j.
40
Matricea de adiacen este o matrice ptratic nxn, aici n este
numrul de vrfuri. Fiecare element poate fi 0, dac vrfurile
respective nu sunt adiacente, sau 1, n caz contrar.
Pentru pstrarea grafurilor n memoria calculatorului (n
deosebi, memoria extern) se va utiliza una din posibilitile de mai
jos.
Lista de adiacen este o list cu n linii (dup numrul de vrfuri
n), n linia cu numrul i vor fi scrise numerele vrfurilor adiacente
cu vrful i.
Lista de inciden se definete analogic cu deosebirea c n linia
i vor fi scrise numerele muchiilor(arcelor) incidente cu vrful i.
Algoritmul Bellman Calaba
Permite determinarea drumului minim dintre oricare vrf al
grafului pn la un vrf, numit vrf final.(vezi problema N10).
Reele de transport
Un graf orientat G =(X, U) se numete reea de transport dac
satisface urmtoarele condiii:
a) exist un vrf unic a din X n care nu intr nici un arc sau
d-(a)=0;
b) exist un vrf unic b din X din care nu iese nici un arc sau
d+(a)=0;
c) G este conex i exist drumuri de la a la b n G;
d) s-a definit o funcie c: UR astfel nct c(u) 0 pentru orice
arc u din U.
O funcie f: UR astfel nct f(u) 0 pentru orice arc u se
numete flux n reeaua de transport G cu funcia de capacitate c,
care se noteaz G=(X, U, c), dac sunt ndeplinite urmtoarele dou
condiii:
a) Condiia de conservare a fluxului: Pentru orice vrf
x diferit de a i b suma fluxurilor pe arcele care intr n x
este egal cu suma fluxurilor pe arcele care ies din x.
b) Condiia de mrginire a fluxului: Exist inegalitatea
f(u) c(u) pentru orice arc uU.
41
Dac f(u)=c(u) arcul se numete saturat. Fluxul, toate drumurile
cruia sunt saturate se va numi flux complet. Cel mai mare dintre
fluxurile complete se numete flux maxim.
Pentru orice mulime de vrfuri AU vom defini o tietur
w_(A)={(x, y) | xA, yA, (x,yU}, adic mulimea arcelor care
intr n mulimea A de vrfuri.
Prin w+(A) vom nota mulimea arcelor care ies din mulimea A
de vrfuri.
Teorem (Ford-Fulkerson):
Pentru orice reea de transport G = (X, U, c) cu intrarea a i
ieirea b valoarea maxim a fluxului la ieire este egal cu
capacitatea minim a unei tieturi, adic:
max fb = min c(w_(A)).
Algoritmul Ford-Fulkerson. (vezi problema N 9).
3.2. EXEMPLE
u2 u3
x4 x7
x1 u1
u4
x3
u5 u8
u6 x6
x2 x5
u7
Fig.3.1
42
Rezolvare:
x1 x2 x3 x4 x5 x6 x7
u1 -1 0 1 0 0 0 0
u2 -1 0 0 1 0 0 0
u3 0 0 0 -1 0 0 1
u4 0 0 -1 0 0 0 1
u5 0 -1 1 0 0 0 0
u6 0 -1 0 0 1 0 0
u7 0 -1 0 0 0 1 0
u8 0 0 -1 0 0 1 0
Fig. 3.2. Matricea de inciden
x1 x2 x3 x4 x5 x6 x7
x1 0 0 1 1 0 0 0
x2 0 0 1 0 1 1 0
x3 0 0 0 0 0 1 1
x4 0 0 0 0 0 0 1
x5 0 0 0 0 0 0 0
x6 0 0 0 0 0 0 0
x7 0 0 0 0 0 0 0
Fig. 3.3. Matricea de adiacen
Lista de adiacen:
1 - 3, 4, 0
2 - 3, 5, 6, 0
3 - 6, 7, 0
4 7, 0
5-0
6-0
7-0
1. S se demonstreze c orice graf neorientat G cu n 2 vrfuri
conine cel puin dou vrfuri care au acelai grad.
Demonstraie: Presupunem prin absurd c irul gradelor
vrfurilor lui G conine n numere distincte dou cte dou. Dar cum
pentru x X , d (x) 0,1,2,,n-1, rezult c irul gradelor
coincide cu irul 0,1,2,,n-1, abstracie fcnd de ordinea lor.
43
Rezult c exist un vrf izolat i unul adiacent cu toate celelalte,
absurd.
3. Fiind dat un graf neorientat G=(X,Y), complementarul su
G1=(X,U1) se definete ca fiind graful cu aceeai mulime X de
vrfuri, dou vrfuri fiind adiacente n G1 dac i numai dac ele nu
sunt adiacente n G. S se demonstreze c dac G nu este conex,
atunci complementarul su G1 este conex.
Demonstraie: Fie x,y X , x y. Demonstrm c exist Lx,y n
G1. Dac x i y nu sunt adiacente n G1, atunci ele sunt adiacente n
G. Cum G nu este conex, rezult c n G exist o component
conex C care nu conine vrfurile x i y. Fie z un vrf din C.
Urmeaz ca n G1 exist muchiile [x,z] i [y,z], deci exist
Lx,y=[x,z,y]. n concluzie G1 este conex.
4. S se verifice c graful G din figura 3.4 este tare conex.
2
1
3
6
5
Fig.3.4
.
Rezolvare: Prin definiie un graf orientat este tare conex, dac
pentru orice cuplu de vrfuri diferite i i j ale grafului, exist cel
puin un drum al grafului care pleac de la vrful i la j . Pentru a
stabili dac graful G este sau nu tare conex, vom folosi urmtorul
procedeu de marcaj: se ia un vrf arbitrar i i-l marcm cu semnele
; dac vrful j nu este marcat, vom marca cu +, dac exist arcul
(i,j) i cu -, dac exist arcul (j,i).
44
Folosind acest procedeu de marcaj, putem ajunge la una din
situaiile:
a) Orice vrf al grafului G a fost marcat cu ; n aceast situaie,
graful este tare conex.
b) Exist cel puin un vrf care nu este marcat cu ; n aceast
situaie graful nu este tare conex.
Pentru graful din figura 3.4, putem constata cu uurin c orice
vrf poate fi marcat cu , deci graful este tare conex.
5. Fie H=(X,Y) un arbore i H1=(X1,U1), H2=(X2,U2) doi
subarbori ai si. Dac Y=X1 X2, s se demonstreze c Y este
mulimea vrfurilor unui subarbore al lui H.
Demonstraie: Deoarece H este arbore, rezult c subgraful A
indus de Y este fr cicluri. Mai trebuie s demonstrm c el este
conex. Fie x i y dou vrfuri din Y. n H1 i H2 exist lanuri ntre x
i y. Fie lanurile elementare care leag cele dou vrfuri n H1,
respectiv H2. Ele sunt i lanuri elementare n H. Dar ntr-un arbore
ntre dou vrfuri exist un lan elementar unic care le leag, altfel
s-ar forma un ciclu. Deci cele dou lanuri coincid, i sunt prin
urmare formate din vrfuri care aparin ambelor mulimi X1 i X2.
Am obinut deci un lan format cu vrfuri din Y care leag cele
dou vrfuri x i y, deci am demonstrat conexitatea lui A.
6. Fie D=(x,,y) un drum de la x la y (x y) n graful orientat
G. S se arate c exist un drum elementar de la x la y n G.
Demonstraie: Fie k primul nod n D care se repet deci D=(x,
,I,k,j,,q,k,p,,y); se consider D1=(x,I,k,p,,y) obinut din D
prin eliminarea poriunii de la prima apariie a lui k (inclusiv) pn
la urmtoarea apariie a lui k (exclusiv). Dac drumul astfel obinut
este elementar ne oprim altfel aplicm asupra lui D1 acelai
procedeu pn cnd nu mai exist noduri care se repet.
7. Demonstrai c un graf neorientat G conine o mulime de
cicluri elementare astfel nct fiecare muchie a lui G aparine exact
45
unuia din aceste cicluri elementare dac i numai dac toate gradele
vrfurilor lui G sunt numere pare.
Demonstraie: Dac gradele tuturor vrfurilor grafului G sunt
numere pare, rezult c fiecare component conex care nu este
format doar dintr-un vrf izolat este un subgraf eulerian. Rezult
c fiecare muchie aparine unui singur ciclu. Dar orice ciclu care nu
este elementar se descompune n cicluri elementare. Invers, dac
fiecare muchie aparine exact unui ciclu elementar, s observm c
apartenena unui vrf la un ciclu consum dou uniti din gradul
su. Rezult c pentru x X , d(x) este numr par.
8. S se demonstreze c n graful neorientat conex i planar G
cu n vrfuri i m muchii, a crui reprezentare planar are f fee
(inclusiv faa de infinit) are loc relaia lui Euler:
n-m+f=2
Demonstraie: Demonstrm relaia lui Euler prin inducie dup
f. Pentru f=1, graful G fiind conex, deoarece f=1 (n reprezentarea
planar exist doar faa infinit), rezult c el nu are cicluri.
Rezult c G este arbore i deci m=n-1. n acest caz relaia se
verific: n-(n-1)+1=2. Presupunem relaia adevrat pentru
grafurile planare conexe cu f fee (f 1) i s-o demonstrm pentru
grafurile planare conexe cu f+1 fee. Fie G un graf planar conex cu
f+1 fee. Deoarece f 1, rezult c f+1 2 i deci graful admite o
reprezentare planar n care apare mcar o fa diferit de cea
infinit. Fie o muchie U ce aparine frontierei unei asemenea fee.
Prin eliminarea muchiei u se obine un graf conex, cu acelai numr
de vrfuri, de asemenea planar, dar n care m1=m-1 i f1=(f+1)-1=f.
n el relaia lui Euler este satisfacut, conform ipotezei inductive.
Rezult c: n-m1+f1=2. nlocuind m1 i f1 cu valorile lor, obinem:
n-(m-1)+f=2, adic: n-m+(f+1)=2, ceea ce voiam s demonstrm.
Din cele dou etape ale induciei, rezult c relaia lui Euler este
satisfacut n grafuri planare i conexe.
9. Pentru graful din figura 3.5 stabilii ordinea de parcurgere a
vrfurilor n lrgime.
46
Rezolvare: Parcurgerea grafului n lrgime va garanta vizitarea
fiecrui vrf al grafului exact o singur dat. Dup vizitarea
vrfului iniial, de la care va ncepe cutarea n lrgime, vor fi
vizitate toate vrfurile adiacente cu vrful dat, apoi toate vrfurile
adiacente cu aceste ultime vrfuri .a.m.d. pn vor fi vizitate toate
vrfurile grafului. Evident, este necesar ca graful s fie conex..
Pentru graful din figura 3.5 ordinea de parcurgere a vrfurilor
n lrgime, cnd se pleac de la vrful 1, este urmtoarea:
1,2,3,4,5,6,7,8.
4
3
2
6
5
8
7
Fig.3.5
10. Determinai valoarea fluxului maxim pentru reeaua de
transport din figura 3.6 conform algoritmului lui Ford-Fulkerson.
5
1 4
8 3 1 9
+0 5 14 +1
5 1 4
0 8 2 3 1 5 9 7
1
5 4 15 +4
0 7 2 6 5 7
+ 3 6
2 4
7 6 15
3 Fig.3.6 6
4
Fig. 3.7
47
Rezolvare:
Etapa I. Determinarea unui flux iniial:
Se definete fluxul iniial avnd componente nule pe fiecare arc
al reelei, adic f(u) = 0 pentru orice arc uU;
Etapa a II-a. Marcarea vrfurilor grafului:
Se determin lanurile nesaturate de la a la b pe care fluxul
poate fi mrit, prin urmtorul procedeu de etichetare:
a) Se marcheaz intrarea x0 cu [+];
b) Pe x1 l marcm cu [+0], deoarece arcul (x0,x1) este nesturat,
adic f(u)<c(u), 0<8.
c) Pe x4 l marcm cu [+1], deoarece arcul (x1,x4) este nesturat,
adic 0<5.
d) Pe x7 l marcm cu [+4], deoarece arcul (x4,x7) este nesturat,
adic 0<9.
n urma etichetrii vrfurilor am obinut un lan:
l=(0,1,4,7). (vezi figura 3.7).
Determinm cantitatea:
=min(c(u) f(u), u v+, (v+ - mulimea arcelor (x, y), care
sunt orientate n sensul de la x0 ctre x7 ).
=min(8,5,9)=5
Vom mri cu fluxul pe fiecare arc u din v+ . Pe fiecare arc
din lanul l=(0,1,4,7) mrim fluxul cu 5. Se repet aplicarea pasului
2 cu fluxul nou obinut.
Dac prin acest procedeu de etichetare nu putem marca ieirea b,
fluxul fb are o valoare maxim la ieire, iar mulimea arcelor care
unesc vrfurile marcate cu vrfurile care nu au putut fi marcate
constituie o tietur de capacitate minim.
Trecem la un nou marcaj pe graful din figura 3.7. n urma
etichetrii vrfurilor obinem urmtoarele lanuri:
l = (0,1,6,7) mrind fluxul cu 3 ( = min(3,3,15)=3);
l = (0,2,6,7) mrind fluxul cu 5 ( = min(5,6,12)=5);
l = (0,3,6,7) mrind fluxul cu 4 ( = min(7,4,7)=4);
l = (0,3,5,7) mrind fluxul cu 2 ( = min(3,2,4)=2).
48
Seciunea minimal se obine pentru A = 1,2,4,5,6,7 ,
A 0,1 , 0,2 , 3,5 , 3,6 iar valoarea fluxului maxim este
19.
11. Folosind algoritmul Belman-Calaba determinai pentru
graful din figura 3.8 lungimile drumurilor minime dintre vrfurile 1
i 5.
2
3 4
1
8
3
6
5 7
2
5 4
3
Fig.3.8
Rezolvare:
Etapa I. Ataarea matricei grafului dat: (fig. 3.9).
Etapa iniial presupune ataarea grafului dat G a unei matrice
ponderate de adiacen, care se va forma n conformitate cu
urmtoarele:
a) M(i,j) = Lij, dac exist arcul (xi, xj) de pondere Lij;
b) M(i,j) = , unde este un numr foarte mare (de tip
ntreg maximal pentru calculatorul dat), dac arcul (xi, xj)
este lips;
c) M(i,j) = 0, dac i = j.
1 2 3 4 5
1 0 3 8 5
2 0 4 7 6
3 0 2
4 0 3
5 0
49
Fig.3.9. Matricea ponderat de adiacen
Etapa a II-a. Elaborm un vector V0 n felul urmtor:
Vi 0 Lin , dac exist arcul (xi, xn), unde xn este vrful final
pentru care se caut drumul minim, Lin este ponderea acestui arc;
Vi 0 , dac arcul (xi, xn) este lips;
1
1 2
0
V min L12 V , L13 V30 , L14 V40 , L15 V50 3 6,8 , 3,5 0 5
V min L
1
2 21 V , L23 V , L24
1
0
3
0
V , L V 5,4 ,7 3,6 0 6
4
0
25 5
0
V min L
1
3 31 V , L32 V , L34
1
0
2
0
V , L V 5, 6,2 3, 0 5
4
0
35 5
0
V min L
1
4 41 V10 , L42 V20 , L43 V , L V 5, 6, ,3 0 3
3
0
45 5
0
V min L
2
1 12 V21 , L13 V31 , L14 V , L V 3 6,8 5, 3,5 0 5
1
4 15 5
1
V min L
2
2 21 V11 , L23 V31 , L24 V , L V 5,4 5,7 3,6 0 6
1
4 25 5
1
V min L
2
3 31 V11 , L32 V21 , L34 V , L V 5, 6,2 3, 0 5
1
4 35 5
1
V min L
2
4 41 V11 , L42 V21 , L43 V , L V 5, 6, 5,3 0 3
3
1
45 5
1
1 2
Fig. 3.10
1 2
3
Fig. 3.11
3.3. PROBLEME
1. Fiind dat matricea de adiacen a unui graf orientat, cum
putem deduce:
a) care sunt gradele vrfurilor;
b) dac exist vrfuri izolate;
c) dac graful este complet.
51
2. S se cerceteze dac exist un graf neorientat cu 10 vrfuri
pentru care irul gradelor vrfurilor sale este respectiv:
1 , 1 , 1 , 3 , 3 , 3 , 4 , 6 , 7 , 9.
3. S se arate c un graf neorientat cu n vrfuri i cel puin n
muchii conine cel puin un ciclu.
4. S se arate c dac graful orientat G cu mulimea de vrfuri X
are m arce, au loc egalitile:
d x d x m
x X
x X
1 4 1
4
3 2 3 2
Fig. 3.12 Fig. 3.13
52
10. Pentru graful din figura 3.14 stabilii ordinea de parcurgere a
vrfurilor n adncime.
2
10
6
7
3 4
5 8
9
Fig.3.14
53
11. Folosind algoritmul Belman-Calaba determinai pentru
graful din figura 3.15 lungimile drumurilor minime dintre vrfurile
3 3
5
2
2
4
2
1
1
1
6 3
6
5
7
9 2
3
8 6
2 7 3
Fig.3.15
1 i 8.
12. Determinai valoarea fluxului maxim pentru reeaua de
transport din figura 3.16.
5
1 4
2 1 6
10 7
3
5
0 2 5 7
3
2
8 8
4
3 6
4
Fig.3.16
54
13. n portul 0 se gsesc 35 de vapoare ce trebuie s se deplaseze
n portul 9. Deplasarea celor 35 de vapoare dintr-un port n altul se
face prin porturile intermediare 1,2,,8 conform restriciilor din
figura 3.17 (ntre dou porturi nu pot circula simultan mai mult de
un numr dat de vapoare). S se determine numrul maxim de
vapoare ce pot ajunge ntr-o prim etap n portul 9.
14. Desenai un graf cu ase vrfuri, care corespunde relaiei:
1 5 6
6 3
12
5 13
0 3
3 4
2 7 10 9
4 5
20 4 3
5 12
3 8
10
Fig.3.17
a) reflexive;
b) antireflexive.
15. Pe mulimea M= 2,3,4,7 se definete relaia R=nu mai
mic. Scriei elementele mulimii R. Desenai graful.
16. Fie M mulimea copiilor unor prini: {Iurie, Victor,
Diana}. Pe mulimea M se definete relaia R= este frate. Scriei
elementele mulimii R. Desenai graful.
17. Un juctor de tenis, care particip la ctigarea titlului de cel
mai bun juctor de tenis al anului trebuie s participe la un numr
de turnee de tenis de diferite categorii cotate fiecare cu cte un
numr diferit de puncte. Posibilitatea de a participa dup un turneu
55
din localitatea k la un alt turneu din localitatea j este indicat
prin graful din figura 3.18; un turneu ctigat n localitatea j adaug
la punctajul general un numr de puncte indicat printr-un numr
ataat vrfului j. Se cere s se afle numrul i ordinea turneelor care
trebuie s fie ctigate de juctor, pentru a obine un punctaj general
maxim; participarea la turneul organizat n localitatea 8 este
obligatorie.
4
1 3
5
5 6
0 2 4 6 8
2
4
3 4
3 7
Fig. 3.18
56