Documente Academic
Documente Profesional
Documente Cultură
Curs14 Grafuri
Curs14 Grafuri
Curs14 Grafuri
Vom reprezenta vrfurile unui graf ca puncte n plan, iar muchiile prin seg-
mente. Daca ntre dou
a vrfuri i; j 2 V exist
a o muchie, spunem c
a vrfurile i; j
sunt adiacente, iar despre muchia (i; j); spunem c a este incident
a celor dou a
vrfuri.
1
Fig. 2. graf orientat
Prin graf partial al unui graf G = (V; E); se ntelege orice graf obtinut prin
suprimarea unor muchii/arce ale lui G:
Un subgraf al grafului G = (V; E) este un graf obtinut prin suprimarea
unor vrfuri ale lui G si a muchiilor/arcelor incidente acelor vrfuri.
De exemplu, n graful din Fig. 2, avem d+ (1) = 1 (doar arcul (1,2) pleac a
din 1), d (v) = 2 (arcele (2,1) si (5,1) au pe 1 ca extremitate nal
a) si d(1) =
1 + 2 = 3:
2
Justicarea armatiei de mai sus const a n faptul c
a ecare arc(/muchie)
este num arat de dou
a ori atunci cnd socotim suma gradelor vrfurilor (o dat a
cnd socotim gradul extremit atii initiale, si nc
a o dat
a, n gradul extremit
atii
nale). Printr-un rationament asem an ator, deducem
Exemplu: Numim graf complet, un graf n care orice dou a vrfuri sunt
adiacente.
Daca un graf neorientat cu n vrfuri este complet, atunci:
- gradul ec
arui vrf este d(v) = n 1;
1P (n 1)n
- numarul muchiilor grafului este m = d(v) = :
2 v2V 2
Un vrf al c
arui grad d(v) este 0, se numeste vrf izolat.
Exercitii:
1. S
a se arate c
a orice graf neorientat cu n 2 vrfuri contine cel putin dou
a
vrfuri care au acelasi grad.
3
1.2 Lant, drum, ciclu, circuit
A. Fie G = (V; E) un graf neorientat.
Denitia 6 Numim:
Fig. 4
Un ciclu care parcurge toate muchiile unui graf cte o singur a data, poart
a
numele de ciclu eulerian, iar un graf care contine un ciclu eulerian, se numeste
graf eulerian.
Se poate demonstra urm atoarea teorem a:
Teorema 7 Un graf neorientat fara vrfuri izolate este eulerian daca si numai
daca:
4
Figure 1: Fig. 5. Graf eulerian
1. ntre orice doua vrfuri ale grafului exista un lant (i.e., graful este conex)
si
2. gradele tuturor vrfurilor sunt numere pare.
De exemplu, graful (complet) din Fig. 5 este eulerian, deoarece toate vr-
furile au gradul 4. Un ciclu eulerian este, de exemplu, f1; 4; 2; 5; 3; 1; 5; 4; 3; 2; 1g:
Un ciclu elementar care contine toate vrfurile unui graf se numeste ciclu
hamiltonian. Un graf care contine un ciclu hamiltonian, se numeste graf
hamiltonian.
Observatie: Grafurile complete sunt hamiltoniene.
De exemplu, graful din Fig. 5 este hamiltonian. Un ciclu hamiltonian este
f1; 2; 3; 4; 5; 1g:
5
drum - o succesiune de vrfuri D = [vi1 ; vi2 ; :::; vik ] cu proprietatea ca n-
tre orice doua vrfuri consecutive vih ; vih+1 ale lui D exista arcul (vih ; vih+1 );
drum elementar, un drum D = [vi1 ; vi2 ; :::; vik ] cu proprietatea ca orice
doua vrfuri ale acestuia sunt distincte;
circuit, un drum D = [vi1 ; vi2 ; :::; vik ] pentru care primul si ultimul vrf
coincid: vi1 = vik si muchiile (vih ; vih+1 ) sunt doua cte doua distincte;
circuit elementar, un circuit D n care toate vrfurile, cu exceptia
primului si a ultimului, sunt distincte.
Exercitii:
1. Ar
atati c
a, dac
a ntr-un graf exist
a un lant/drum ntre dou
a vrfuri i si j;
atunci ntre cele doua vrfuri exist
a un lant elementar/drum elementar.
(a) S
a e euleriene, dar s
a nu e hamiltoniene;
(b) s
a e hamiltoniene, dar s
a nu e euleriene;
(c) s
a e si hamiltoniene si euleriene;
(d) s
a nu e nici hamiltoniene, nici euleriene.
5. Adaugati un numar minim de muchii grafului din gura de mai jos, astfel
nct el s
a devin
a eulerian:
6
1.3 Reprezentarea grafurilor n memoria calculatorului.
Parcurgerea grafurilor
Pentru reprezentarea grafurilor n memoria sistemelor de calcul, exist a mai
multe metode, alegerea acestora facndu-se de obicei n functie de problema
de rezolvat.
1) Matricea de adiacent
a A = (aij )i;j=1;n este o matrice cu n linii si n
coloane, denit
a astfel:
1 daca (i; j) 2 E
aij =
0:::::^{n caz contrar:
vrf succesori
i j1 ; j2 ; :::
Listele de adiacent
a se pot reprezenta si cu ajutorul unor tablouri. Anume,
denim o matrice T cu 2 linii si :
astfel:
n primele n coloane, scriem pe pozitia T (1; i) vrfurile grafului, iar pe pozitia
T (2; i); num arul coloanei j a lui T la care ncepem enumerarea succesorilor lui
i: Dac a i nu are succesori, atunci T (2; i) se va completa cu 0.
Pe urm atoarele coloane, vom scrie pe pozitia T (1; j); unde j = T (2; i); primul
element al listei succesorilor lui i; apoi, pe pozitia T (2; j); num
arul k al coloanei
unde g asim urm atorul element al listei succesorilor lui i: Apoi, T (1; k) va
urm atorul element al listei Li ; iar T (2; k) va indica num arul coloanei lui T
pe care vom trece urm atorul element al lui Li etc. n momentul n care lista
succesorilor se ncheie, scriem 0 pe linia a doua a coloanei respective.
3) Matricea de incident a:
Presupunem c a graful neorientat G are n vrfuri, numerotate de la 1 la n, si
m muchii, notate e1 ; :::; em :
A0 este o matrice de tip n m; denit a astfel:
7
Pentru grafuri orientate, matricea de incident
a va indica si dac
a un arc are
drept extremitate initial
a sau nal
a un anumit vrf:
8
< 1 daca arcul ej iese din v^ arf ul i
a0ij := 1 daca arcul ej intra ^{n v^arf ul i :
:
0 ^{n caz contrar
4) Lista de incident a (vectorul muchiilor/arcelor) este un vector al
c
arui num ar de elemente este egal cu num arul m al muchiilor/arcelor grafului.
Elementele listei de incident a sunt perechi de vrfuri (i; j); unde i si j reprez-
int
a extremitatile initial
a, respectiv,
nal
a, ale muchiei.
Exemplu: Consider
am graful orientat
Fig. 6
Pentru graful din Fig. 6, avem:
matricea de adiacent
a:
0 1
0 1 0 0 0 0
B 1 0 0 0 0 0 C
B C
B 0 0 0 1 0 1 C
A=B
B
C
C
B 0 1 0 0 0 1 C
@ 0 0 1 0 0 1 A
0 1 0 0 0 0
listele de adiacent
a:
i Li
1 2
2 1
3 4; 6
4 2; 6
5 3; 6
6 2
8
respectiv,
!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
)T = 1 2 3 4 5 6 2 1 4 6 2 6 3 6 2
7 8 9 11 13 15 0 0 10 0 12 0 14 0 0
matricea de incident
a
0 1
1 1 0 0 0 0 0 0 0
B 1 1 1 1 0 0 0 0 0 C
B C
B 0 0 0 0 0 1 1 1 0 C
I=B B 0
C
C
B 0 1 0 1 1 0 0 0 C
@ 0 0 0 0 0 0 0 1 1 A
0 0 0 1 1 0 1 0 1
si vectorul arcelor,
e = f(1; 2); (2; 1); (2; 4); (2; 6); (4; 6); (4; 3); (3; 6); (5; 3); (5; 6)g:
9
Exercitiu: Determinati matricea drumurilor pentru graful din Fig. 6: a)
direct; b) folosind algoritmul Roy-Warshall.
Pentru parcurgerea grafurilor, exist
a dou
a metode clasice: parcurgerea n
atime (Breadth First Search) si parcurgerea n adncime (Depth First
l
Search), pe care le prezentam pe scurt n cle ce urmeaz
a.
Vrfurile ai c
aror vecini urmeaz
a a vizitati le vom retine ntr-o coad
a C:
10
Fig. 7
Vrfurile ai c
aror vecini urmeaz
a a vizitati le vom retine ntr-o stiv
a S: n
momentul cnd ultimul element din stiv a nu mai are succesori, el va eliminat
din S:
11
altfel elimin
a i din S
sfrsit_ct timp.
Pasul 4. Stop.
1; 2; 3; 6; 7; 10; 8; 4; 5; 9:
12