Sunteți pe pagina 1din 14

Definiţie.

Se numeşte graf neorientat o pereche ordonata de mulţimi (X,U),


X fiind o mulţime finită şi nevidă de elemente numite noduri, iar U o mulţime de
perechi neordonate (submulţimi cu două elemente) din X, numite muchii.
Vom nota cu G = (X,U) un graf neorientat. Mulţimea X se numeşte
mulţimea nodurilor grafului G iar U, mulţimea muchiilor.
O muchie u∈U este deci o submulţime {x,y} de vârfuri distincte din X şi
se notează u = [x,y]. Vom spune despre vârfurile x şi y că sunt adiacente în G
iar despre u şi x că sunt incidente la fel ca şi u şi y). Se mai spune că x şi y
sunt extremităţile muchiei u.
Dacă u1 şi u2 sunt două muchii care au o extremitate comună, ele vor fi
numite de asemenea incidente.
Exemplu. Fie G = (X,U) astfel încât
X = {1,2,3,4,5,6,7,8,9,10,11}
iar U ={[1,5], [3,7], [4,6], [9,8], [10,2], [1,2], [9,4], [1,10], [6,8]}.
Reprezentarea în plan a acestui graf este dată în figura 1.
Definiţie. Un graf parţial al grafului G = (X, U) este un graf G1 = (X, V)
astfel încât V ⊆ U, adică G1 are aceeaşi mulţime de vârfuri ca G iar mulţimea de
muchii V este chiar U sau o submulţime a acesteia.
Cu alte cuvinte, un graf parţial al unui graf se obţine păstrând aceeaşi
mulţime de vârfuri şi eliminând o parte din muchii. Se mai spune că un graf parţial
G1 = (X, V) este indus de mulţimea V de muchii.

1 10
4
9 Fig. 1
5 2
6
7 8

3 11

Exemplu. Pentru graful G din figura 1, G1 = (X, V) , unde V = {[1,5], [2,10],


[6,4]}, reprezentat în figura 2, este un graf parţial.

1
1 10
4
9
5 2
6 Fig. 2
7 8

3 11

Definiţie. Un subgraf al unui graf G = (X, U) este un graf H = (Y, V)


astfel încât Y ⊂ X, iar V conţine toate muchiile din U care au ambele extremităţi
în Y. Vom spune că subgraful H este indus sau generat de mulţimea de vârfuri Y.
Prin urmare, un subgraf al unui graf se obţine eliminând o parte din vârfuri
şi toate muchiile incidente cu acestea.
Exemplu. Pentru graful din figura 1, dacă Y = {1,2,3,7,10} şi V = {[1,2],
[1,10], [2,10], [3,7]}, atunci H = (Y,V) este un subgraf al grafului G, subgraf
reprezentat în figura 3.
10
1

2 Fig. 3
7

OBS. Numarul grafurilor neorientate cu n varfuri este 2n(n -1)/2.


Demonstatie: Fiecărui graf G = (X, U) îI asociem o funcţie f: A→ {0,1},
astfel:
1, dacă [x,y] ∈ U,
f ({x,y}) =
0, în caz contrar.
Invers, unei funcţii f: A → {0,1} îi putem ataşa un graf în felul următor:
f({x,y}) = 1 dacă şi numai dacă [x,y] ∈ U. Deci vom constitui mulţimea U de

2
muchii [x,y] corespunzând acelor submulţimi {x,y} pentru care funcţia f ia valoarea
1.
Cum mulţimile A şi B = {0,1} sunt finite, având n(n-1)/2, respectiv 2
elemente, corespondenţa definită anterior între mulţimea grafurilor şi mulţimea
funcţiilor asociate în modul arătat este o bijecţie. Si atunci numărul total al
grafurilor cu mulţimea dată X de vârfuri este egal cu numărul total de funcţii
definite pe A cu valori în B = {0,1}, adică 2n(n -1)/2.
Definiţie. Gradul unui vârf x este numărul muchiilor incidente cu x. Se
notează cu d(x).
Un vârf care are gradul 0 (deci pentru care nu există vreo muchie incidentă
cu el) se numeşte vârf izolat. Un vârf care are gradul 1 (deci care este incident cu o
singură muchie) este numit vârf terminal.
Pentru graful din figura 1 avem: d(11) = 0, deci vârful 11 este izolat.
Propoziţia 1. Dacă un graf G = (X, U) are m muchii şi n vârfuri iar X =
n

{x1,x2, ...,xn}, atunci : ∑ d ( x ) = 2m .


i =1
i

Demonstraţie. Este suficient să observăm că fiecare muchie [x, y] contribuie


cu o unitate la gradul lui x şi cu o unitate la gradul lui y, deci cu două unităţi în
suma din enunţ. Cum sunt m muchii, suma gradelor tuturor vârfurilor este 2m.
Corolar. In orice graf G există un număr par de vârfuri de grad impar.
Demonstraţie. Notăm cu S1 suma tuturor gradelor impare îi cu S2 suma
gradelor pare ale vârfurilor grafului G. Conform propoziţiei demonstrate anterior
avem: S1 + S2 = 2m. Dar S2 este o sumă de numere pare , deci este un număr par.
Rezultă că S1 = 2m - S2 este un număr par. Dar cum S1 este o sumă de numere
impare, rezultă că S2 are un număr par de termeni, în caz contrar, S1 ar fi impară.
De exemplu, pentru graful din figura 1 există 4 vârfuri de grad impar, şi
anume: 1, 3, 5, 7.
Există tipuri de grafuri care au proprietăţi speciale şi care intervin în anumite
categorii de probleme şi raţionamente. Ele au denumiri şi notaţii speciale. Vom
prezenta două astfel de clase speciale de grafuri.

3
Definiţie. Se numeşte graf complet cu n vârfuri un graf care are
proprietatea că oricare două noduri diferite sunt adiacente.
Un graf complet cu n vârfuri se notează prin Kn.
Propoziţia 2. Un graf complet Kn are n(n - 1)/2 muchii.
Demonstraţia rezultă imediat dacă se enumeră toate submulţimile formate
din câte două vârfuri.
Definiţie. Un graf G = (X, U) se numeşte bipartit dacă există două mulţimi
nevide A şi B astfel încât X = A ∪ B, A ∩ B = φ şi orice muchie u a lui G are o
extremitate în A iar cealaltă în B.
Observaţie. Mulţimile A şi B formează o partiţie a lui X.
Definiţie. Un graf bipartit se numeşte complet dacă pentru orice x din A şi
orice y din B, există în G muchia [x, y].
Dacă A are p elemente iar B q elemente, numărul total de muchii ale
unui graf bipartit complet este pq. Notaţia folosită pentru un asemenea graf este
Kp,q.
Definiţie. Se numeşte graf regulat un graf care are proprietatea că toate
nodurile au acelasi grad.
Obs. Daca un graf este complet atunci el este regulat.

2.2. REPREZENTAREA GRAFURILOR


NEORIENTATE

Fι e Γ =(X,U) un graf neorientat. Deoarece între mulţimea X cu n elemente şi


mulţimea {1,2,…,n} există o bijecţie, putem presupune, fără a restrânge
generalitatea că X={1,2,…n}. Există mai multe modalităţi de a reprezenta graful
G, folosind diverse structuri de date.
1) Se precizează numărul n de vârfuri şι matricea de adiacenţă A a grafului,
care este o matrice pătratică de ordinul n, cu elementele :
a(i,j)= 1, dacă [i,j]∈U
0, în caz contrar.
4
Din modul de definire a matricei de adiacenţă, rezultă că ea este simetrică.
Exemplu: 1 4
3
5

6
2 Fig. 4
Pentru graful din figura 4, n este 6 iar matricea de adiacenţă A este
următoarea:
0 1 1 0 0 0
1 0 1 0 0 1
A= 1 1 0 0 0 1
0 0 0 0 1 1
0 0 0 1 0 1
0 1 1 1 1 0
2) Se precizează numărul n de vârfuri şi, pentru fiecare vârf i, lista Li a vecinilor
săi, adică lista vârfurilor j pentru care [i,j] ∈U.
Pentru graful din figura 4, n este 9 iar listele Li ale vecinilor, pentru toate
vârfurile i ale grafului G, sunt date în continuare:
vârf i lista Li a vecinilor săi
1 2,3
2 1,3,6
3 1,2,6
4 5,6
5 4,6
6 2,3,4,5
3) Se dau numărul n de vârfuri, numărul m de muchii.
O variantă de implementare mai naturală ar fi aceea de a defini un tip de dată

5
‘muchie’ utilizând tipul înregistrare, care să conţină cele două extremităţi ale unei
muchii, şi apoi de a defini un tablou cu n componente de acest tip:
type muchie = record
x,y:byte;
end;
……………………………..
var u:array[1..n] of muchie;
Referirea la extremităţile muchiei i se face prin: u[i].x, respectiv u[i].y.
Acest mod de reprezentare permite înglobarea naturală în tipul de date muchie şi a
altor informaţii asociate muchiilor (cost, lungime) şi este utilizată în problemele în
care muchiile se prelucrează succesiv, eventual după o modificare a ordinii lor în
tabloul u. Reprezentarea nu se pretează însă la parcurgerea rapidă a vârfurilor şi de
aceea este folosită mai rar.
2.3. METODA DE PARCURGERE BF
Prin parcurgerea unui graf neorientat se înţelege examinarea în mod
sistematic a nodurilor sale, plecând dintr-un vârf dat i , astfel încât fiecare nod
accesibil din i pe muchii adiacente două câte două, să fie atins o singură dată.
Trecerea de la un nod y la altul se face prin exploatarea, într-o anumită ordine, a
vecinilor lui y, adică a vârfurilor cu care nodul y curent (în care s-a ajuns) este
adiacent. Această acţiune este numită şi vizitare sau traversare a vârfurilor grafului
scopul acestei vizitări fiind acela de prelucrare a informaţiei asociată nodurilor.
Graful este o structură neliniară de organizare a datelor iar rolul traversării sale
poate fi şi determinarea unei aranjări lineare a nodurilor în vederea trecerii de la
unul la altul.
Am presupus că X = {1,2,…, n}. Atunci când vom prezenta metodele de
parcurgere a grafurilor, vom presupune că ordinea vârfurilor este cea dată de relaţia
de ordine “<”, existentă în mulţimea numerelor naturale. Este totuşi posibilă
introducerea, pe mulţimea vârfurilor, şi a altei relaţii de ordine, de exemplu
asocierea unor priorităţi care să schimbe ordinea în care vârfurile sunt prelucrate.

6
Există mai multe metode de parcurgere a grafurilor neorientate. Cele mai
importante sunt:
1) Metoda de parcurgere BF
2) Metoda de parcurgere DF
Algoritmul BF (Breadth First) parcurge graful “în lăţime “: se vizitează
întâi vârful iniţial i, apoi vecinii acestuia, apoi vecinii nevizitaţi ai acestora, şi aşa
mai departe.
Exemplu:
Pentru graful din figura 5, ordinea de parcurgere a nodurilor cu metoda BF,
când se pleacă din vârful 1, este următoarea: 1, 2, 3, 4, 5, 6, 7, 8.
1
2 4

3
5 Fig. 5

7 8
Observăm că în cazul particular al unui arbore este vizitată întâi rădăcina,
apoi sunt vizitate vârfurile de pe nivelul 1, apoi cele de pe nivelul 2 etc.
2.4. METODA DE PARCURGERE DF

Algoritmul DF (Depth First) se caracterizează prin faptul că se merge “în


adâncime” ori de câte ori acest lucru este posibil.
Parcurgerea începe cu un vârf iniţial dat i şi continuă cu primul dintre
vecinii săi nevizitaţi; fie acesta j. In continuare se procedează în mod similar cu
vârful j, trecându-se la primul dintre vecinii lui j, nevizitaţi încă.
Altfel spus, odată “ajunşi” într-un vârf alegem în continuare primul (într-o
ordine specifică mulţimii vârfurilor) dintre vârfurile nealese încă şi continuăm
parcurgerea. Când acest lucru nu mai este posibil, facem un pas înapoi spre vârful
7
din care am plecat ultima dată şi plecăm, dacă este posibil. Avem deci de a face cu
un algoritm backtracking.
Exemplu:
Pentru graful din figura 6, ordinnea de parcurgere DF a nodurilor, plecând
din nodul 1 este: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.

2 7 10

3 4 6 8
9

5 Fig. 6

Observăm că în cazul arborilor, metoda corespunde vizitării în preordine a


vârfurilor.
2.5. CONEXITATE

Fie G =(X,U) un graf neorientat, X= {x1, x2, …, xn}.


Definiţie. Se numeşte lanţ în G succesiunea de vârfuri L=[xi1, xi2,…, xik] cu
proprietatea că orice două vârfuri consecutive din L sunt adiacente, adică [xi1,
xi2], [xi2, xi3],…, [xik-1, xik]∈ U. Vârfurile xi1 şi xik se numesc extremităţile lanţului,
iar numărul de muchii ce apar în L se numeşte lungimea lanţului L.
Dacă vârfurile xi1, xi2,…, xik sunt diferite două câte două, atunci lanţul L se
numeşte elementar. In caz contrar, lanţul este neelementar.
Observaţie. Dacă L = [xi1, xi2,…, xik] este lanţ, atunci şi L´ = [xik, xik-1, ,…,
xi2, xi1] este tot un lanţ.
Exemplu. Pentru graful în figura 7, L1= [1, 2, 3, 5, 4, 8], L2= [1, 2, 3, 2], L3=
[9, 3, 5, 4, 3, 2], L4= [7, 3, 5, 4, 8] sunt lanţuri. Lanţurile L1 şi L4 sunt elementare.
Lanţul L1 are lungimea 5, L2, 3, L3, 5, iar L4, 4.

8
2 5

1 3 8

Fig. 7
4

6Un lanţ L= [xi1,7xi2,…, xik] poate fi interpretat


9 ca traseul unei deplasări de la
xi1 la xik pe muchiile [xi1, xi2], [xi2, xi3],…, [xik-1, xik]. Mai spunem că lanţul L leagă
varfurile xi1 şi xik.
Definiţie. Se numeşte ciclu în G un lanţ L pentru care xi1=xik şi toate
muchiile [xi1, xi2], [xi2, xi3],…, [xik-1, xik] sunt diferite două câte două.
Exemplu: C1 = [3, 4, 5, 3, 7, 6, 1, 2, 3] este un ciclu în graful din figura 11.
Definiţie. Se numeşte ciclu elementar un ciclu care are proprietatea ca
oricare două vârfuri ale sale, cu excepţia primului şi a ultimului, sunt diferite
două câte două.
Exemplu: C2 = [3, 4, 5, 3] este un ciclu elementar, pe când C1 din exemplul
anterior nu este elementar deoarece vârful 3 apare de două ori (pentru extremităţi
se socoteşte o singură apariţie).
Există mai multe moduri de scriere a unui ciclu ca succesiune de vârfuri. De
exemplu, ciclurile C2 = [3, 4, 5, 3] şi C3 = [4, 5, 3, 4] reprezintă de fapt acelaşi
ciclu.
Un ciclu se numeşte par dacă lungimea sa este pară şi impar în caz contrar.
In graful din exemplul anterior, C4=[3, 9, 4, 5, 3] este par, pe când ciclul
C5=[2, 1, 6, 7, 3, 2] este impar.
Definiţie. Un graf se numeşte conex dacă pentru orice două vârfuri x şi y
diferite ale sale, există un lanţ ce le leagă.
Exemplu: Graful din figura 7 este conex pe când cel din figura 8 nu este,
deoarece, spre exemplu, nu există nici un lanţ care să lege vârfurile 1 şi 6.
9
1 4 5

2
Fig. 8

3 9 8
Definiţie. Se numeşte componentă conexă a grafului G =(X, U) un subgraf
C =(X1,U1), conex, al lui G care are proprietatea că nu există nici un lanţ în G
care să lege un vârf din X1 cu un vârf din X-X1.
Exemplu: Pentru graful din figura 8, C= (X1,U1), unde X1=[5, 6, 7, 8], iar
U1={[5, 6], [6, 8], [5, 8], [5, 7]}, este o componentă conexă.

Grafuri hamiltoniene
Definitie: Intr-un graf G=(X,U) se numeste ciclu hamiltonian un ciclu
elementar care contine toate varfurile grafului.
Observatii:
1. Ciclu hamiltonian = ciclu elementar de lungime n=card(X)
Definitie: Se numeste graf hamiltonian un graf care contine un ciclu
hamiltonian.
Observatii:
1. Daca un graf este hamiltonian el contine cel putin 3 varfuri.
2. Un graf complet este un graf hamiltonian.
Teorema: Daca G=(X,U) este un graf cu n>=3 varfuri, astfel incat gradul
fiecarui varf x satisface conditia d(x)≥ n/2 atunci G este hamiltonian.
Obs.: conditia este suficienta dar nu necesara.
Definitie: Intr-un graf G=(X,U) se numeste lant hamiltonian un lant
elementar care contine toate varfurile grafului.

10
Grafuri euleriene
Definitie: Intr-un graf G=(X,U) se numeste ciclu eulerian un ciclu care
contine toate muchiile grafului.
Definitie: Se numeste graf eulerian un graf care contine un ciclu eulerian.
Teorema de caracterizare: Un graf G=(X,U) fara varfuri izolate este
eulerian daca si numai daca este conex si gradele tuturor varfurilor sunt numere
pare.
Definitie: Intr-un graf G=(X,U) se numeste lant eulerian un lant care
contine toate muchiile grafului, fiecare muchie fiind prezenta o singura data.

Arbori:
Definitie: Se numeste arbore un graf conex si fara cicluri.
Observatie: Daca eliminam oricare muchie graful nu mai e conex si
adaugand oriunde o muchie, apare un ciclu.
Teorema (de caracterizare a arborilor): Fie un graf
G=(X,U).Urmatoarele afirmatii sunt echivalente:
1) G e arbore;
2) G e un graf conex, minimal cu aceasta proprietate ( eliminand o muchie
oarecare, se obtine un graf neconex );
3) G e graf fara cicluri, maximal cu aceasta proprietate ( daca se adauga o
muchie se obtine un graf care are macar un ciclu );
4) G conex cu n-1 muchii;
5) G fara cicluri cu n-1 muchii;
Definitie: Fie G un graf. Un graf partial H al sau care in plus este si arbore
se numeste arbore partial.
Corolar: Un graf G=(X,U) contine un arbore partial daca si numai daca G
este conex.
Definitie: Daca G e un graf cu n varfuri, m muchii si p componente conexe,
numarul µ(G)=m-n+p se numeste numarul ciclomatic al lui G. Se demonstreaza
ca µ(G)=numarul maxim de cicluri independente ale lui G.

11
Grafuri orientate
Definitie: Se numeste graf orientat o pereche ordonata de multimi G=(X,U)
unde:
 X e o multime finita si nevida numita multimea varfurilor;
 U este o multime formata din perechi ordonate de elemente distincte
din X, numita multimea arcelor.
Orice arc u din U se noteaza u=(x,y) unde:
 x se numeste extremitate initiala a arcului u
 y de numeste extremitate finala a arcului u
Daca exista arcul u=(x,y) atunci x si y se numesc adiacente si ambele sunt
incidente cu arcul u.
Definitie:
a) se numeste grad exterior al unui varf x, notat cu d+(x), numarul arcelor
care ies din x de forma (x,y) apartine U.
b) se numeste grad interior al unui varf x, notat cu d-(x), numarul arcelor
care intra in x, de forma (y,x) apartine U.
Definitie: Se numeste lant un sir de arce L=[u1, u2, ... un] cu proprietatea ca
oricare 2 arce vecine ui, ui+1 au o extremitate comuna. Altfel spus, un lant este un
traseu care uneste prin arce doua noduri, fara a tine cont de orientarea arcelor
componente.
Definitie: Un drum intr-un graf orientat G=(X,U) este un sir de varfuri
D=(xi0,xi1,...,xik) cu proprietatea ca (xi0,xi1), (xi1,xi2), ... (xik-1,xik) sunt arce ale
grafului (un lant in care toate arcele au aceeasi orientare).
Daca varfurile care fac parte din drum sunt distincte, drumul se numeste
elementar, altfel se numeste neelementar.
Definitie: Daca D=(xi0,xi1,...,xik) este un drum cu xi0=xik si toate arcele care
fac parte din el sunt distincte doua cate doua, drumul se numeste circuit.
Daca toate varfurile circuitului, cu exceptia primului si ultimului varf sunt
distincte doua cate doua, circuitul se numeste elementar.

12
Definiţie. Un graf parţial al grafului G = (X, U) este un graf G1 = (X, V)
astfel încât V ⊆ U, adică G1 are aceeaşi mulţime de vârfuri ca G si se obtine din
G prin suprimarea unor arce.
Definiţie. Un subgraf al unui graf G = (X, U) este un graf H = (Y, V)
astfel încât Y ⊂ X, iar V conţine toate arcele din U care au ambele extremităţi în
Y. Vom spune că subgraful H este indus sau generat de mulţimea de vârfuri Y si se
obtine din G prin suprimarea unor varfuri si a arcelor incidente cu acestea.
Definitie: Un graf G orientat e complet daca oricare doua varfuri din G
sunt adiacente.
Observatie: Exista 3n(n-1)/2 grafuri orientate complete cu n varfuri.

Matrici asociate grafurilor orientate


1. Matricea de adiacenta A(n*n) definita prin
 A(i,j)=1 daca exista arc de la i la j;
 A(i,j)=0 daca nu exista arc de la i la j;
Observatii:
 A nu e neaparat simetrica fata de diagonala principala
 Suma elementelor de pe linia i = gradul exterior al nodului i = d+(i)
 Suma elementelor de pe coloana i = gradul interior al nodului i = d-(i)

2. Matricea drumurilor D(n*n) definita prin:


 D(i,j)=1 daca exista drum de la i la j;
 D(i,j)=0 daca nu exista drum de la i la j;
Observatii:
 Daca d(i,i)=1 atunci exista un circuit care trece prin varful i
 Daca linia i si coloana i au toate elementele 0 atunci varful i este izolat

Graf conex
Definitie: Un graf orientat G = (X, U) este conex daca oricare ar fi doua
varfuri distincte ale sale, exista un lant care le leaga.

13
Definitie: Se numeste componenta conexa a grafului G = (X, U), un subgraf
G1 = (X1, U1) conex al lui G, maximal in raport cu aceasta proprietate (nu exista
nici un lant care sa lege un nod din X1 cu un nod din X-X1).

Graf tare conex

Definitie: Un graf orientat G = (X, U) este tare conex daca |X| =1 sau pentru
oricare doua noduri x, y∈X, exista un drum de la x la y precum si un drum de la y
la x.
Observatie : Tinand cont de definitia grafului tare conex deducem ca matricea
drumurilor asociata unui astfel de graf are toate elementele egale cu 1.
Definitie: Fiind dat un graf orientat G = (X, U), se numeste componenta tare
conexa a lui G, un subgraf G1=(X1, U1) tare conex al lui G, maximal in raport cu
aceasta proprietate (adica pentru orice nod x∈X-X1, subgraful indus de X1∪{x}nu
mai este tare conex).

14

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