Sunteți pe pagina 1din 11

1

Un vocabular al teoriei grafurilor


Definiia unui graf
Un graf este o pereche G = (V(G),E(G)), unde V(G) este o mulime finit nevid,
iar E(G) este o submulime a mulimii P2(V(G)) a prilor cu dou elemente ale lui V(G).
V(G) se numete mulimea vrfurilor grafului G i numrul su de elemente,
|V(G)|, este ordinul grafului G; E(G) este mulimea muchiilor grafului G i numrul su
de elemente, |E(G)|, este dimensiunea grafului G. Atunci cnd nu exist posibilitatea
confuziilor, vom nota simplu, G = (V, E).
Dac e = {u, v} E(G) este o muchie a grafului G vom nota e = uv (pentru
simplificarea scrierii) i vom spune c: muchia e unete vrfurile u i v; vrfurile u i v
sunt adiacente n G; muchia e este incident cu vrfurile u i v; vrfurile u i v sunt vecine
n G; vrfurile u i v sunt extremitile muchiei e.
Dac v V(G), atunci mulimea NG(v) = {w |w V(G), vw E(G)} se numete
vecintatea vrfului v n G. Vom mai nota NG(v) = G(v). Remarcm faptul c graful G
poate fi definit (n mod echivalent) ca o pereche (V(G), G) unde
G : V(G) P(V(G))
asociaz fiecrui vrf vecintatea sa ( astfel nct v G(v) i dac w G(v), atunci
v G(w), pentru orice vrfuri v i w ).
Dou muchii e i e care au o extremitate comun se numesc adiacente.
O mulime independent de vrfuri sau mulime stabil n G este o mulime S
V(G) de vrfuri cu proprietatea c P2(S) E(G) = (adic o mulime de vrfuri
neadiacente dou cte dou). Cardinalul maxim al unei mulimi stabile se numete
numrul de stabilitate sau numrul de independen al grafului G i se noteaz cu (G).
O mulime independent de muchii sau cuplaj n graful G este o mulime de
muchii neadiacente dou cte dou. Cardinalul maxim al unei mulimi independente de
muchii n G se numete numrul de muchie-independen al grafului G i se noteaz
(G).
Intuitiv, un graf G = (V(G), E(G)) poate fi reprezentat (dup cum sugereaz i
numele su) cu ajutorul unei figuri plane format dntr-o mulime de cerculee ngroate
aflat n coresponden cu mulimea de vrfuri V(G), dou cerculee fiind unite prntr-o
curb simpl dac i numai dac, perechea de vrfuri corespunztoare lor este o muchie a
grafului G.

De exemplu, graful G = (V, E) unde V = {1, 2, . . ., 10} i E = {12, 23, 34, 45, 56,
51, 69, 68, 710, 79, 810, 92, 10 1, 74, 83} poate fi reprezentat de

10
5

2
9

S observm c n acest graf:


Mulimea de vrfuri {10, 6, 2, 4} este stabil i este de cardinal maxim, deci (G) = 4;
mulimea de muchii {110, 29, 38, 47, 56} formeaz un cuplaj de cardinal maxim, deci (G)
= 5.
Dac G = (V(G), E(G)) este un graf i p N*, se numete p-colorare a (vrfurilor)
lui G o aplicaie c : V(G) {1, . . ., p} cu proprietatea c c-1(i) este o mulime stabil n G,
() i {1, . . ., p} (remarcm c, din definiia mulimilor stabile, este o mulime stabil).
Numrul cromatic al grafului G, notat (G), este cea mai mic valoare a lui p N* pentru
care G admite o p-colorare.
O p-colorare a muchiilor lui G este o aplicaie c : E(G) {1, . . ., p} cu
proprietatea c c-1(i) este un cuplaj al lui G, () i {1, . . ., p}. Indicele cromatic al
grafului G, notat (G), este cea mai mic valoare a lui p N* pentru care G admite o pcolorare a muchiilor.
Dou grafuri, G = (V(G), E(G)) i H = (V(H), E(H)) se numesc izomorfe, i notm
aceasta prin G H, dac exist o bijecie : V(G) V(H) cu proprietatea c aplicaia :
E(G) E(H), definit pentru orice uv E(G) prin (uv) = (u)(v), este o bijecie (deci,

dou grafuri sunt izomorfe dac exist o bijecie ntre mulimile lor de vrfuri care induce
o bijecie ntre mulimile lor de muchii).
Variaii n definiia unui graf
a)
Dac n definiia unui graf, se consider E(G) o multimulime pe
P2(V(G)), adic este dat o funcie
m : P2(V(G)) N,
se obine noiunea de multigraf. Un element e P2(V(G)) cu m(e) > 0 este muchie a
multigrafului, simpl dac m(e) = 1, multipl dac m(e) > 1. Oricrui multigraf M i se
poate asocia un graf G(M), numit graful suport al lui M, obinut prin nlocuirea fiecrei
muchii multiple cu o singur muchie cu aceleai extremiti.
b)
Dac n definiia unui graf se consider E(G) ca o multimulime pe
mulimea prilor nevide cu cel mult dou elemente ale lui V(G), atunci G se numete graf
general sau pseudograf. O muchie e E(G), e = {v} se numete bucl n vrful v. Pictural
pseudografurile se reprezint la fel ca i grafurile.
Pentru evitarea confuziilor, uneori grafurile aa cum le-am definit se mai
numesc i grafuri simple.
c)
Un digraf este o pereche D = (V(D), A(D)) unde V(D) este o
mulime finit nevid (mulimea vrfurilor digrafului D), iar A(D) V(D) V(D) este
mulimea arcelor digrafului D. Dac a = (u, v) este arc n D, notm a = uv i spunem c u
i v sunt adiacente; a este incident din u; a este incident spre v; u domin pe v; a este
incident cu u spre exterior ; a este incident cu v spre interior ; u este extremitatea iniial
a lui a i v este extremitatea final a lui a.
Pictural, digrafurile se reprezint la fel ca i grafurile, adugnd curbei care unete
dou cerculee un sens pentru a preciza perechea de vrfuri corespunztoare arcului
desenat.
O pereche de arce de forma vw i wv se numete pereche simetric de arce. Dac D
este un digraf, inversul su D este digraful obinut din D prin nlocuirea fiecrui arc vw cu
opusul su wv.
Dac D este un digraf, atunci nlocuind fiecare arc cu mulimea de vrfuri care l
formeaz, obinem, n general, un multigraf M(D). Graful suport al acestui multigraf se
numete graful suport al grafului D. Dac M(D) este graf atunci D se numete graf
orientat (poate fi gndit ca obinut prin orientarea fiecrei muchii a grafului M(D)).
Un digraf complet simetric este un digraf n care fiecare pereche de vrfuri este
unit prin exact o pereche de arce simetrice. Un turneu este un digraf n care orice dou
vrfuri sunt unite prin exact un arc.
d)
Grafurile infinite se obin prin nlturarea condiiei de finitudine a
mulimii de vrfuri i (sau) muchii. Un graf G local finit este un graf finit n care NG(v)
este finit pentru orice vrf v.
Grade
Dac G = (V, E) este un graf i v V un vrf al su, atunci valena sau gradul lui v
n G, notat dG(v) sau pG(v), este
|{e | e E, e incident cu v}|.

Un vrf de grad 0 se numete izolat; un vrf de grad 1 se numete pendant. Dac toate
vrfurile lui G au aceeai valen p atunci G se numete graf p valent sau p regulat. Un
graf 0 valent se numete graf nul. Un graf 3 valent se numete graf trivalent sau cubic.
Un exemplu de graf trivalent este graful lui Petersen:
Concepte analoage se pot defini i pentru digrafuri. Dac v este un vrf al digrafului
D atunci valena interioar sau gradul interior notat pin(v) sau pD sau d D , este numrul
arcelor incidente cu v spre interior; valena extrerioar sau gradul exterior notat pout(v)
sau
pD+ sau d D+ , este numrul arcelor incidente cu v spre exterior.
Subgrafuri
Un subgraf al grafului G = (V(G), E(G)) este un graf H = (V(H), E(H)) care
satisface: V(H) V(G) i E(H) E(G).
Dac V(H) = V(G) atunci H se numete graf parial al lui G.
A V(G) atunci [A]G = (A, P2(A) E(G)) se numete subgraf indus n G de
mulimea de vrfuri A. subgraful [V(G) \ A]G se noteaz G A i este subgraful lui G
obinut prin ndeprtarea vrfurilor din A; n particular, dac A = {v}, atunci G {v} se
noteaz G v.
Dac E E(G) atunci EG = (V(G), E) este graful parial secionat de E n G.
G E este prin definiie E(G) \ EG, iar G e = G {e} (e E(G)).
Concepte similare se pot defini n mod analog pentru multigrafuri, grafuri generale
sau digrafuri.
Operaii cu grafuri
Dac G = (V(G), E(G)) este un graf, atunci:
complementarul su este graful G cu V( G ) = V(G) i
E( G ) = P2(V(G)) \ E(G).
graful reprezentativ al muchiilor lui G este graful L(G) cu V(L(G)) =
E(G) i E(L(G)) = {ee | e, e E(G), e i e adiacente n G}.
graful total al grafului G este graful T(G) cu V(T(G)) = V(G) E(G) i
E(T(G)) = {xy | x, y V(G) E(G), x i y adiacente sau incidente n G}.
graful obinut din G prin inseria unui vrf (z) pe o muchie (e = vw)
este graful G = (V(G) {z}, E(G) \ {vw} {vz, zw}) (z V(G), e E(G)).
Dou grafuri obinute prin inserii succesive de vrfuri pe muchiile aceluiai
graf se numesc homeomorfe.
graful obinut din G prin contracia muchiei e = vw E(G) este graful
G | e = (V(G) \ {v, w} {z}, E([V(G) \ {v, w}]G) {yz | yv sau yw E(G)}).
Dac H se poate obine prin contracii succesive de muchii din graful G, se
spune c G este contractibil la H.
Fie G = (V(G), E(G)) i G = (V(G), E(G)) dou grafuri.
Dac V(G) = V(G) atunci reuniunea celor dou grafuri i intersecia
lor se definesc G G = {V(G), E(G) E(G)), G G = (V(G), E(G)
E(G)).

Dac V(G) V(G) = atunci G G = (V(G) V(G), E(G)


E(G)) se numete reuniunea disjunctiv a grafurilor G i G. Reuniunea
disjunctiv a k grafuri izomorfe cu G se noteaz kG.

Suma a dou grafuri G i G este graful G + G = G G ' .


Produsul cartezian al grafurilor G i G este graful G G cu V(G
G) = V(G) V(G) i
E(G G) = {(v, w)(v, w) | v, v V(G), w, w V(G)
v = v i ww E(G) sau
w = w i vv E(G)}.

Clase de grafuri
Graful complet de ordin n: Kn cu |V(Kn)| = n i E(Kn) = P2(V(Kn)).
Graful nul de ordin n: Nn = K n .
Circuitul de ordin n: Cn cu V(Cn) = {1, . . ., n} i E(Cn) = {12, 23, . . ., n 1n, n1}.
Drumul de ordin n: Pn = Cn e (e E(Cn)).
Exemplu (n = 5)

K5

N5

C5

P5

Un subgraf complet al unui graf G se numete clic a lui G. Cardinalul maxim al unei clici
a lui G se numete numrul de clic sau numrul de densitate al lui G i se noteaz (G)
(evident (G) = ( G )).
Un graf bipartit este un graf G cu proprietatea c V(G) se poate partiiona n dou
mulimi independente n G. Dac S i T satisfac S T = V(G), S T = i S, T sunt
independente i nevide n G, atunci graful bipartit G se noteaz G = (S, T; E(G)).
Remarcm c () e E(G) are o extremitate n S i cealalt n T. Dac () v S i () w
T vw E(G), atunci graful bipartit G = (S, T; E(G)) se numete graf bipartit complet i
se noteaz Ks,t unde s = |S| i t = |T|. Exemplu: K3,3 este graful
Un graf G = (V(G), E(G)) se numete planar dac poate fi scufundat n plan astfel
nct fiecrui vrf s-i corespund un punct al planului, iar muchiilor le corespund curbe
simple ce unesc punctele corespunztoare vrfurilor lor i n plus aceste curbe se
intersecteaz (eventual) numai n vrfuri. Un graf care nu-i planar se numete neplanar.
Exemple minimale de grafuri neplanare sunt grafurile K5 i K3,3.

Drumuri i circuite
Fie G = (V(G), E(G)) un graf. Se numete mers de lungime r de la v la w n G un
ir de vrfuri i muchii
(v =) v0,v0v1, . . ., vr 1, vr 1vr, vr (= w)
v i w se numesc extremitile mersului.
Dac muchiile mersului sunt distincte atunci mersul se numete parcurs n G de la
v la w. Dac vrfurile sunt distincte atunci mersul se numete drum de la v la w.
Dac v = w atunci mersul (parcursul) se numete nchis; dac ntr-un mers toate
vrfurile sunt distincte, cu excepia extremitilor, atunci mersul se numete circuit (sau
drum nchis). Un circuit este par sau impar dup cum lungimea sa (numrul muchiilor)
este par sau impar. Lungimea celui mai scurt circuit al grafului G (dac G are circuite) se
numete graia grafului G i se noteaz cu g(G); lungimea celui mai lung circuit al lui G se
numete circumferina lui G i se noteaz c(G).
Dac v i w sunt vrfuri ale lui G, lungimea celui mai scurt drum de la v la w n G
se numete distana n G de la v la w i se noteaz dG(v, w). Diametrul grafului G, notat
d(G) este d(G) = max {dG(v, w) | v, w V(G)}.
Definiiile de mai sus se extind, n mod evident, pentru digrafuri singura modificare
fiind aceea c se nlocuiesc muchiile cu arce.
Un graf este conex dac exist un drum ntre orice dou vrfuri ale sale; un graf
care nu este conex se numete neconex. Orice graf G poate fi unic exprimat ca o reuniune
disjunct de subgrafuri induse conexe i maximale cu aceast proprietate; aceste subgrafuri
se numesc componentele conexe ale grafului G (mai precis, se pot defini componentele
conexe ca subgrafurile induse de clasele de echivalen determinate pe V(G) de relaia de
echivalen definit prin vw dac exist n G un drum de la v la w).
Concepte analoage se pot defini i pentru digrafuri; dac D este un digraf atunci:
D este tare conex dac (v, w) V(D) V(D) exist un drum n D de la v la w;
D este unilateral conex dac (v, w) V(D) V(D) exist n D un drum de la v la
w sau de la w la v;
D este conex dac G(D), graful suport al lui D, este conex.
Un graf conex care nu are circuite se numete arbore. Un graf ale crui componente
conexe sunt arbori se numete pdure.
Dac G este un graf conex, un vrf v V(G) cu proprietatea c G v este neconex
se numete vrf (punct) de articulaie; mai general, o mulime A de vrfuri ale unui graf G
se mai numete mulime separatoare de vrfuri (mulime de articulaie) dac G A este
neconex. Fie p un numr ntreg pozitiv; un graf G cu mcar p vrfuri este p conex dac G
= Kp sau are cel puin p + 1 vrfuri i nu admite mulimi separatoare de vrfuri de cardinal
mai mic dect p. Evident, G este 1 conex dac i numai dac este conex. Un graf 2
conex se numete bloc.
Dac G este un graf conex, o muchie e E(G) cu proprietatea c G e este
neconex se numete punte n graful G; mai general, o mulime A de muchii ale unui graf
G se numete mulime separatoare de muchii dac G A este neconex. Un graf G cu
mcar p vrfuri este p muchie conex dac nu admite mulimi separatoare de muchii de
cardinal mai mic dect p.

Numrul de conexiune al lui G, notat k(G), (respectiv, numrul de muchie


conexiune, (G)) este cel mai mare numr natural p pentru care G este p conex (p
muchie conex).
Un graf (sau digraf) se numete eulerian dac admite un parcurs nchis care
folosete fiecare muchie a grafului (respectiv, fiecare arc al digrafului).
Un (di)graf G se numete hamiltonian dac are un circuit care trece prin fiecare
vrf.
Matrici asociate.
Dac G = ({v1, . . . , vn}, {e1, . . . , em}) este un graf, atunci matricea de adiacen a
grafului G este matricea A = (aij)n n, unde
1 dac v i i v j sunt adiacente
a ij =
0 alt min teri .
Matricea de inciden a grafului G este matricea B = (bij)n m, unde
1 dac v i i e j sunt incidente
bij =
0 alt min teri .
n cazul digrafurilor, se pot asocia similar astfel de matrici, n care, evident se poate
indica i orientarea arcelor, folosind elementele 0, 1 i 1.
Valorile proprii i polinomul caracteristic ale matricii de adiacen se numesc
valorile proprii ale grafului, respectiv, polinomul caracteristic al grafului.
Structuri de date utilizate n reprezentarea (di)grafurilor.
Fie G = (V, E) un (di)graf cu V = {1, 2, . . . , n} i |E| = e. Cele mai uzuale structuri
de date utilizate pentru reprezentarea (di)grafului G sunt
a)
matricea de adiacen
Dac A = (aij)n n este matricea de adiacen a lui G (aij := 1 if ij E este 0) atunci,
reprezentarea acesteia cu ajutorul unui tablou bidimensional va necesita O(n2) operaii
pentru orice iniializare, deci orice algoritm, care folosete o astfel de reprezentare, are
complexitatea (n2).
b)
listele de adiacen
Pentru fiecare vrf v V se consider o list A(v) a vecinilor si n G. Dac G este
graf, atunci A(v) conine NG(v) = { w | w V i vw E} iar dac G este digraf atunci A(v)
conine N G+ (v) = { w | w V i vw E}. Pentru cazul n care G este graf, fiecare muchie
vw E va genera dou elemente n listele de adiacen, unul n A(v) i cellalt n A(w).
Spaiul total de memorie utilizat va fi de O(n + 2e). Pentru cazul n care G este digraf,
spaiul de memorie utilizat este de O(n + e). Listele de adiacen pot fi reprezentate b1) cu
ajutorul tablourilor i b2) ca structuri dinamice de date.
b1) Se va considera tabloul T : array [1 . . p, 1 . . 2] of integer unde p = n + 2e
dac G este graf i p = n + e dac G este digraf. Vom iniializa T(i, 1) := i i = 1, n ; T(i,
2) := adresa n T (indicele) primului element din A(i). Dac i V este vrf izolat, atunci
T(i, 2) = 0. Dac T(i, 2) = j atunci T(j, 1) este primul vrf din A(i) iar T(j, 2) este adresa

urmtorului element. Dac l este adresa ultimului element w din A(i), atunci T(l, 1) = w i
T(l, 2) = 0.
b2) Se folosesc urmtoarele declaraii:
type pointer = ^elem;
elem = record
vrf : 1 . . n;
leg : pointer;
end;
i un tablou care conine trimiteri la nceputul fiecrei liste:
var
cap : array [1 . . n] of pointer;
p : pointer;
Graful nul de ordin n se iniializeaz astfel:
for i := 1 to n do cap[i] := nil;
Adugarea muchiei ij (deci n cazul grafurilor):
begin
new(p);
p^.vrf := j;
p^.leg := cap[i];
cap[i] := p;
new(p);
p^.vrf := i;
p^.leg := cap[j];
cap[j] := p;
end;
Notm c n descrierea dat am reprezentat listele A(i) ca stive cu elementele din
top la adresa cap[i] (i V). Aceste liste se pot organiza i sub forma unor cozi sau liste
dublu nlnuite, sau chiar liste circulare, n funcie de problema care se rezolv pe
(di)graful n cauz.
Sortare topologic. Dat G = (V, E) un digraf, s se determine o numerotare aciclic
a vrfurilor sale.
Vom presupune c V = {1, 2, . . . , n}, i c digraful este reprezentat prin listele sale
de adiacen A(v), deci cu ajutorul tabloului cap[v] v V.
Problema cere s determinm vectorul ord[v] v V, (ord[v] = numrul de ordine al
vrfului v) astfel nct
vw E ord[v] < ord[w].
Vom transforma i listele de adiacen astfel nct ele s fie ordonate cresctor (n
noua numerotare). Rezolvarea problemei este simpl i se bazeaz pe urmtoarea
Lem. G admite o numerotare aciclic dac i numai dac nu are circuite.
Demonstraie. Este evident c dac G admite o numerotare aciclic atunci G nu are
circuite (dac v,v1, v2, . . ., vk, v1 sunt vrfurile unui circuit atunci, cum G are o numerotare
aciclic, obinem ord[v1] < ord[v2] < . . . < ord[vk] < ord[v1], contradicie).

Reciproc, dac G nu are circuite atunci exist un vrf v0 V astfel nct d G (v0) = 0
(altfel, datorit finitudinii digrafului, se poate construi un circuit); punem ord[v0]:= 1,
considerm G := G v0 i repetm raionamentul.
Dimensiunea problemei este O(n + e). Vom construi un algoritm care s rezolve
problema n timp O(n + e). Acest lucru este posibil datorit unei utilizri judicioase a
structurilor de date. Idea algoritmului:
determinm gradele interioare ale vrfurilor;
vrfurile de grad interior 0 le memorm ntr-o stiv S0;
(a) considerm vrful din topul stivei S0 i-l numerotm;
(b) modificm gradele interioare ale vrfurilor din lista de adiacen a vrfului tocmai
numerotat;
(c) n modificarea anterioar crearea unui vrf de grad interior 0 va implica memorarea
lui n stiva S0;
(d) relum secvena (a) (c) pn cnd stiva devine vid.
Dac nu s-au numerotat toate vrfurile rezult c digraful conine circuite; n cazul
epuizrii vrfurilor, s-a rezolvat prima parte a problemei. Va trebui s sortm listele
(stivele) de adiacen aa nct ele s fie ordonate cresctor n noua numerotare. Vom
folosi un caz foarte simplu al sortrii cu glei (bucket sort) sau hash sort:
colectm n gleata k {1, . . ., n} toate vrfurile j cu proprietatea c jk
E (j i k sunt noua numerotare).
parcurgem gleile de la cea mai mare la cea mai mic (n 1) i golim
gleata curent i astfel: adugm i la stiva vecinilor fiecrui vrf j cules din
gleata i.
Dup terminarea acestui pas, n stiva vecinilor fiecrui vrf vom avea vrfurile
sortate cresctor n noua numerotare. Pentru a se putea folosi noua reprezentare a
digrafului va trebui, desigur inversat permutarea ord.
Descrierea algoritmului:
type pointer = ^elem;
elem = record
vrf: 1 . . n;
prec: pointer;
end;
var
cap : array [1 . . n] of pointer; {cap[i] = capul stivei vecinilor vrfului i}
gal : array [1 . . n] of pointer; {gleata i (capul ei) folosit pentru sortare}
top0 : pointer; {capul stivei S0}
p1, p : pointer;
v, i, j, nr : integer;
d : array [1 . . n] of integer; {vectorul gradelor interioare ale vrfurilor n
subdigraul curent}
ord : array [1 . . n] of integer; {ord[v] = numrul de ordine al vrfului v}
begin
nr := 0; {numrul vrfurilor numerotate}
top0 := nil;
for i := 1 to n do

10

begin
p := cap[i];
while p <> nil do { p nil }
begin
j := p^.vrf;
d[j] := d[j] + 1;
p := p^.prec
end
end;
for i := 1 to n do
if d[i] = 0 then
begin
new(p);
p^.vrf := i;
p^.prec := top0;
top0 := p;
end; {s-a creat stiva S0}
while top0 <> nil do {top0 nil}
begin
v := top0^.vrf;
top0 := top0^.prec;
nr := nr + 1;
ord[v] := nr;
p := cap[v];
while p <> nil do {p nil}
begin
j := p^.vrf;
d[j] := d[j] 1;
if d[j] = 0 then
begin
new(p1);
p1^.vrf := j;
p1^.prec := top0;
top0 := p1;
end;
p := p^.prec;
end;
end;
if nr < n then
write (digraful are circuite)
else
begin {hash sort}
for i := 1 to n do
gal[i] := nil;
for i := 1 to n do

11

begin
p := cap[i];
j := ord[i];
while p <> nil do
begin
k := ord(p^.vrf);
new(p1);
p1^.vrf := j;
p1^.prec := gal[k];
gal[k] := p1;
p := p^.prec;
end;
end;
for i := 1 to n do
cap[i] := nil; {construim noi liste de adiacen}
for i := n downto 1 do
begin
p := gal[i];
while p <> nil do
begin
k := p^.vrf;
new(p1);
p1^.vrf := i;
p1^.prec := cap[k];
cap[k] := p1;
p := p^.prec;
end;
end;
{inversare lui ord}
end;
end.
Descrierea acestui algoritm este tipic pentru anumite liberti Pascal pe care le
vom folosi peste tot n cele ce urmeaz n scopul mririi lizibilitii textului.

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