Sunteți pe pagina 1din 46

TEORIA GRAFURILOR

AU

Conf. univ. dr. COSTEL BALC


2014

Tematica
1 Arbori si arborescente
1.1 Numarul ciclomatic . . . . . . . . . . . . .
1.2 Teorema de caracterizare a arborilor . . .
1.3 Numararea arborilor partiali . . . . . . . .
1.4 Arborescente . . . . . . . . . . . . . . . .
1.5 Teorema de caracterizare a arborescentelor
1.6 Arborescente partiale de cost minim . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

5
5
10
11
13
15
16

2 Clase particulare de grafuri


26
2.1 Grafuri euleriene . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2 Grafuri hamiltoniene . . . . . . . . . . . . . . . . . . . . . . . 33
2.3 Grafuri bipartite . . . . . . . . . . . . . . . . . . . . . . . . . 39
3 Invarianti ai unui graf

44

4 Calculul invariantlor pentru grafurile bipartite

45

Evaluare
Prezenta: 10%
Activitate seminar: 30% (Probleme rezolvate la seminar)
Teme de casa: 10% (Probleme si programe suplimentare)
Evaluare periodica + examen final: 20%+30%=50% (Proba scrisa:
teorie, algoritmi si probleme)

Bibliografie
[1] Gh. Barbu, V. P
aun, Programarea n limbajul C/C++, Editura Matrix Rom, Bucuresti, 2011.
[2] Gh. Barbu, V. P
aun, Calculatoare personale si programare n C/C++, Editura Didactic
a si Pedagogic
a, Bucuresti, 2005.
[3] C. Balc
au, Combinatoric
a si teoria grafurilor, Editura Universitatii din Pitesti,
Pitesti, 2007.
[4] O. Basc
a, L. Livovschi, Algoritmi euristici, Editura Universitatii din Bucuresti, Bucuresti, 2003.
[5] E. Ciurea, L. Ciupal
a, Algoritmi. Introducere n algoritmica fluxurilor n retele, Editura Matrix Rom, Bucuresti, 2006.
[6] T.H. Cormen, Algorithms Unlocked, MIT Press, Cambridge, 2013.
[7] T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms, MIT
Press, Cambridge, 2009.
[8] C. Croitoru, Tehnici de baz
a n optimizarea combinatorie, Editura Universitatii Al.
I. Cuza, Iasi, 1992.
[9] N. Dale, C. Weems, Programming and problem solving with JAVA, Jones & Bartlett
Publishers, Sudbury, 2008.
[10] D. Du, X. Hu, Steiner Tree Problems in Computer Communication Networks, World
Scientific Publishing Co. Pte. Ltd., Hackensack, 2008.
[11] S. Even, Graph Algorithms, Cambridge University Press, Cambridge, 2012.
[12] H. Georgescu, Tehnici de programare, Editura Universitatii din Bucuresti, Bucuresti,
2005.
[13] C.A. Giumale, Introducere n analiza algoritmilor. Teorie si aplicatii, Ed. Polirom,
Iasi, 2004.
[14] F.V. Jensen, T.D. Nielsen, Bayesian Networks and Decision Graphs, Springer, New
York, 2007.
[15] D. Jungnickel, Graphs, Networks and Algorithms, Springer, Heidelberg, 2013.

4
[16] B. Korte, J. Vygen, Combinatorial Optimization. Theory and Algorithms, Springer,
Heidelberg, 2012.
[17] L. Livovschi, H. Georgescu, Sinteza si analiza algoritmilor, Editura Stiintific
a si
Enciclopedica, Bucuresti, 1986.
[18] D. Logofatu, Algoritmi fundamentali n C++: Aplictii, Ed. Polirom, Iasi, 2007.
[19] D. Lucanu, M. Craus, Proiectarea algoritmilor, Ed. Polirom, Iasi, 2008.
[20] D.R. Popescu, Combinatoric
a si teoria grafurilor, Societatea de Stiinte Matematice
din Rom
ania, Bucuresti, 2005.
[21] N. Popescu, Data structures and algorithms using Java, Editura Politehnica Press,
Bucuresti, 2008.
[22] T. Toadere, Grafe. Teorie, algoritmi si aplicatii, Editura Albastr
a, Cluj-Napoca,
2002.
[23] I. Tomescu, Combinatoric
a si teoria grafurilor, Tipografia Universitatii din Bucuresti, Bucuresti, 1978.
[24] I. Tomescu, Probleme de combinatoric
a si teoria grafurilor, Editura Didactica si
Pedagogic
a, Bucuresti, 1981.
[25] I. Tomescu, Data structures, Editura Universitatii din Bucuresti, Bucuresti, 2004.
[26] ***, Handbook of combinatorics, edited by R.L. Graham, M. Grotschel and L. Lovasz,
Elsevier, Amsterdam, 1995.
[27] ***, Handbook of discrete and combinatorial mathematics, edited by K.H. Rosen,
J.G. Michaels, J.L. Gross, J.W. Grossman and D.R. Shier, CRC Press, Boca Raton,
2000.

Tema 1
Arbori si arborescente
1.1

Num
arul ciclomatic

Propozitia 1.1.1 (Dirac). Fie G = (V, E) un graf neorientat simplu si


(G) = min d(x)
xV

gradul minim al nodurilor din G.


a) G contine un lant deschis elementar astfel ncat
l() (G),
unde l() reprezinta lungimea lantului .
b) Daca (G) 2, atunci G contine un ciclu elementar C astfel ncat
l(C) (G) + 1.
Definitia 1.1.1. Un graf se numeste par daca toate nodurile sale au gradele
pare.
Propozitia 1.1.2 (Veblen). Fie G = (V, E) un graf cu E 6= . Atunci
graful G este par daca si numai daca exista C1 , . . . , Ck cicluri elementare
muchie-disjuncte (doua cate doua) astfel ncat
E = E(C1 ) E(Ck ) (k N ),

(1.1.1)

unde E(Ci ) reprezinta multimea muchiilor ciclului Ci , i {1, . . . , k}.

TEMA 1. ARBORI SI ARBORESCENT


E

Propozitia 1.1.3. Fie G = (V, E) un graf. Atunci (P(E), , ) este un


spatiu vectorial peste corpul finit cu doua elemente (Z2 , +, ), unde
P(E) = {F |F E}, AB = (A \ B) (B \ A) (diferenta simetrica),
b
0 A = , b
1 A = A, A P(E).

Definitia 1.1.2. Spatiul vectorial (P(E), , ) din propozitia anterioara se


numeste spatiul muchiilor grafului G.
Propozitia 1.1.4. Fie G = (V, E) un graf si
C(E) = {F E|(V, F ) = graf par}.
Atunci C(E) este un subspatiu vectorial al spatiului muchiilor grafului G.
Propozitia 1.1.5. Fie G = (V, E) un graf si
C0 (E) = {F E| C = ciclu elementar n G a.. F = E(C)},
unde E(C) este multimea muchiilor ciclului C. Atunci subspatiul vectorial al
spatiului muchiilor lui G generat de C0 (E) este subspatiul C(E) din propozitia
anterioara.
Demonstratie. Evident, C0 (E) C(E). Conform Propozitiei 1.1.2, pentru
orice F C(E), F 6= , exista F1 , . . . , Fk C0 (E) disjuncte doua cate doua
a.. F = F1 Fk , deci F = F1 . . . Fk = b
1 F1 . . . b
1 Fk .

Definitia 1.1.3. Subspatiul C(E) din Propozitia 1.1.4 se numeste spatiul


ciclurilor grafului G. Dimensiunea acestui subspatiu se numeste num
arul
ciclomatic al grafului G si se noteaza cu (G).
Propozitia 1.1.6 (Listing). Fie G = (V, E) o padure cu n noduri, m muchii
si k componente conexe. Atunci
m n + k = 0.
Demonstratie. Demonstram egalitatea din enunt prin inductie dupa m.
Pentru m = 0 rezulta ca toate nodurile sunt izolate, deci fiecare nod
formeaza o componenta conexa, adica k = n si egalitatea m n + k = 0 este
verificata.
Presupunem adevarata egalitatea din enunt pentru orice padure cu m 1
muchii (m 1) si o demonstram pentru padurea G cu m muchii. Fie
G = (V, E ), unde E = E \ {e}, cu e E, e = [x, y].

TEMA 1. ARBORI SI ARBORESCENT


E

Evident G este o padure cu n noduri, m 1 muchii si k + 1 componente


conexe (deoarece componentele conexe din G ce nu contin x si y raman
componente conexe si n G , iar componenta conexa din G ce contine x si
y se partitioneaza n doua componente conexe n G , una continand pe x si
cealalta pe y). Aplicand ipoteza de inductie pentru graful G avem
(m 1) n + (k + 1) = 0, deci m n + k = 0.

Corolarul 1.1.1. Orice arbore cu n noduri are m = n 1 muchii.


Demonstratie. Se aplica propozitia anterioara, cu k = 1.
Propozitia 1.1.7. Un graf este conex daca si numai daca are arbori partiali.
Demonstratie. Daca graful G = (V, E) are un arbore partial T , atunci pentru
orice x, y V , x 6= y, exista un lant [x, . . . , y] n T (fiind conex), deci si n
G, si astfel G este conex.
Reciproc, demonstram ca orice graf conex G = (V, E) are arbori partiali
prin inductie dupa numarul p de cicluri elementare ale lui G.
Pentru p = 0 rezulta ca nsusi G este un arbore, deci arbore partial n G.
Presupunem adevarata afirmatia pentru orice graf conex cu cel mult p 1
cicluri elementare (p 1) si o demonstram pentru graful conex G = (V, E)
cu p cicluri elementare. Fie e = [x, y] o muchie a lui G aflata pe un ciclu
elementar C si fie G = (V, E \ {e}). Graful G ramane conex (ntre x si y
exista lantul [x, v1 , . . . , vk , y], unde [x, v1 , . . . , vk , y, x] este ciclul C) si are cel
mult p 1 cicluri elementare. Conform ipotezei de inductie, exista un arbore
partial T n G , deci si n G.
Propozitia 1.1.8. Fie G = (V, E) un graf, T = (V, F ) un arbore partial al
lui G si e E \ F . Atunci graful partial
T + e = (V, F {e})
are un unic ciclu elementar si acest ciclu contine muchia e.
Demonstratie. Fie e = [x, y]. T fiind arbore partial, exista un lant elementar = [x, v1 , . . . , vk , y] n T , deci + e = [x, v1 , . . . , vk , y, x] este un ciclu
elementar n T + e.
Unicitatea acestui ciclu rezulta din unicitatea lantului elementar (daca
ar exista doua lanturi elementare distincte 1 = [x, . . . , y] si 2 = [x, . . . , y]
n T , portiunile lor muchie-disjuncte ar produce un ciclu, contradictie cu T =
arbore).

TEMA 1. ARBORI SI ARBORESCENT


E

Teorema 1.1.1 (Teorema num


arului ciclomatic). Orice graf G = (V, E)
cu n noduri, m muchii si k componente conexe are numarul ciclomatic
(G) = m n + k.
Demonstratie. Demonstram egalitatea din enunt n doua etape.
Etapa 1) Presupunem ca graful G este conex, deci k = 1. Fie T =
(V, F ) un arbore partial al lui G (exista, conform Propozitiei 1.1.7). Conform
Corolarului 1.1.1, card (F ) = n 1. Fie
E \ F = {e1 , . . . , emn+1 }.
Pentru orice i {1, . . . , m n + 1}, fie Ci multimea muchiilor ciclului
elementar unic din T + ei (conform Propozitiei 1.1.8). Demonstram ca
B = {C1 , . . . , Cmn+1 }
este o baza a spatiului ciclurilor C(E) (numita baz
a de cicluri a grafului
G).
a) Fie
1 C1 . . . mn+1 Cmn+1 = , cu 1 , . . . , mn+1 Z2 .
Pentru orice i {1, . . . , m n + 1}, ei Ci si ei 6 Cj j 6= i. Daca am
avea i = b
1, atunci ar rezulta ca ei i Ci si ei 6 j Cj j 6= i, adica ei
1 C1 . . . mn+1 Cmn+1 = , fals. Deci i = b
0 i {1, . . . , m n + 1},
si astfel multimea B este liniar independenta.
b) Fie H C(E) si H \ F = {ei1 , . . . , eir } E \ F . Evident,
H(Ci1 . . . Cir ) C(E) si H(Ci1 . . . Cir ) F
(eis H Cis si eis 6 Cij j 6= s, deci eis 6 H(Ci1 . . . Cir ) eis H \F ).
Cum arborele T = (V, F ) nu contine cicluri, conform Propozitiei 1.1.5
rezulta ca singura submultime A C(E) cu A F este A = .
Deci H(Ci1 . . . Cir ) = , adica
1 Ci1 . . . b
1 C ir ,
H = Ci1 . . . Cir = b

si astfel multimea B este un sistem de generatori al spatiului ciclurilor C(E).


Deci B este o baza a acestui spatiu. Rezulta ca
(G) = card (B) = m n + 1 = m n + k.

TEMA 1. ARBORI SI ARBORESCENT


E

Etapa 2) Fie acum G un graf oarecare si G1 , . . . , Gk componentele sale


conexe. Fie ni si mi numerele de noduri, respectiv muchii ale componentei
Gi . Evident, n = n1 + + nk si m = m1 + + mk .
Deoarece subspatiile ciclurilor componentelor G1 , . . . , Gk sunt liniar independente, avem
(G) = (G1 ) + + (Gk ).
Dar, conform etapei 1), (Gi ) = mi ni + 1 i {1, . . . , k}, si astfel prin
adunare rezulta ca (G) = m n + k.
Observatia 1.1.1. Demonstratia teoremei anterioare este constructiva, indicand urmatorul algoritm de determinare a unei baze de cicluri pentru graful G:
se determina componentele conexe G1 , . . . , Gk ;
pentru fiecare componenta Gi , se determina un arbore partial T (de
exemplu arborele DF sau BF ) si ciclurile elementare C1 , . . . , Cmi ni +1
din grafurile T + ei , pentru fiecare muchie ei din Gi ce nu apartine lui
T;
ciclurile astfel determinate formeaza mpreuna o baza de cicluri pentru
graful G.
Exemplul 1.1.1. Fie graful G reprezentat n Figura 1.1.1.
1

7
4

Figura 1.1.1:

Figura 1.1.2:

Numarul sau ciclomatic este (G) = m n + k = 9 7 + 1 = 3.


Considerand arborele partial T reprezentat n Figura 1.1.2 si aplicand algoritmul din observatia anterioara se obtine baza de cicluri {C1 , C2 , C3 } unde
C1 = {[1, 4], [4, 2], [2, 1]}, C2 = {[4, 5], [5, 2], [2, 4]} si C3 = {[5, 6], [6, 3], [3, 2], [2, 5]}.

TEMA 1. ARBORI SI ARBORESCENT


E

1.2

10

Teorema de caracterizare a arborilor

Teorema 1.2.1 (de caracterizare a arborilor). Fie G = (V, E) un graf


cu n noduri. Urmatoarele afirmatii sunt echivalente:
1) G este un arbore (adica este conex si fara cicluri);
2) G este fara cicluri si are m = n 1 muchii;
3) G este conex si are m = n 1 muchii;
4) G este fara cicluri si maximal cu aceasta proprietate, adica daca se
adauga o muchie ntre oricare doua noduri graful obtinut contine cicluri;
5) G este conex si minimal cu aceasta proprietate, adica dac
a se elimina
o muchie oarecare graful obtinut devine neconex;
6) ntre oricare doua noduri ale lui G exista un unic lant elementar.
Demonstratie. 1) 2) Fie G un arbore, adica si conex si fara cicluri. Deci
0 = (G) = m n + 1 si astfel m = n 1.
2) 3) Fie G fara cicluri si cu m = n 1 muchii. Avem 0 = (G) =
n 1 n + k, unde k reprezinta numarul de componente conexe ale lui G,
deci k = 1, adica G este conex.
3) 4) Fie G conex si cu m = n1 muchii. Avem (G) = n1n+1 =
0, deci G este fara cicluri. Fie G+e = (V, E{e}), e 6 E. Graful G+e ramane
conex si are n noduri si m + 1 = n muchii. Astfel (G + e) = n n + 1 = 1,
adica G + e contine un ciclu (elementar).
4) 5) Fie G fara cicluri maximal. Daca G nu ar fi conex, atunci
adaugand o muchie ntre doua noduri x si y din componente conexe diferite
ale lui G s-ar obtine un graf fara cicluri (deoarece nu exista lant ntre x si y
n G), contradictie cu ipoteza. Deci G este conex.
Fie G e = (V, E \ {e}), e E, e = [x, y]. Daca graful G e ar fi
conex, atunci ar exista un lant elementar [x, v1 , . . . , vk , y] n G e si astfel
[x, v1 , . . . , vk , y, x] ar fi un ciclu n G, contradictie cu ipoteza. Deci G e este
neconex.
5) 6) Fie G conex minimal. Fie x, y V .
Daca x 6= y, rezulta ca exista un lant elementar [x, . . . , y].
Daca x = y exista de asemenea lantul elementar [x] de lungime zero.
Daca ntre nodurile x si y ar exista doua lanturi elementare distincte
1 = [x, v1 , . . . , vi , y] si 2 = [x, w1 , . . . , wj , y], atunci notand cu e muchia
[x, v1 ] a lantului 1 , graful G e = (V, E \ {e}) ar ramane conex (deoarece

11

TEMA 1. ARBORI SI ARBORESCENT


E

ntre x si v1 avem lantul [x, w1 , . . . , wj , y, vi , . . . , v1 ]), contradictie cu ipoteza.


Deci ntre x si y exista un unic lant elementar.
6) 1) Fie G cu proprietatea ca ntre orice doua noduri exista un unic
lant elementar. Evident, G este conex. Daca G ar avea un ciclu elementar
C = [x, v1 , . . . , vk , x] atunci [x, v1 ] si [v1 , . . . , vk , x] ar fi doua lanturi elementare ntre x si v1 , contradictie cu ipoteza. Deci G nu are cicluri elementare, si nici neelementare (deoarece orice ciclu neelementar s-ar descompune n cicluri elementare muchie-disjuncte).

1.3

Num
ararea arborilor partiali

Definitia 1.3.1. Fie G = (V, E) un graf fara bucle, unde V = {v1 , . . . , vn }.


Matricea de admitant
a asociata grafului G este matricea M = (mij )i,j=1,n
definita prin:
mii = dG (vi ), i {1, . . . , n};
mij = numarul de muchii sau arce dintre vi si vj , i, j {1, . . . , n}, i 6= j.
Exemplul 1.3.1. Fie G graful reprezentat n Figura 1.3.1.
2

Figura 1.3.1:
Matricea de admitanta a acestui graf este

2 1 1 0
0
1 5 2 1 1

.
1
2
4
1
0
M =

0 1 1 2
0
0 1 0
0
1
Observatia 1.3.1. Matricea de admitanta este o matrice simetrica (si pentru
grafuri orientate!) si are toate sumele pe linii si pe coloane egale cu zero.
Observatia 1.3.2. Definitia 1.3.1 se poate extinde si pentru grafuri cu bucle,
considerand drept matrice de admitanta a unui astfel de graf matricea de
admitanta a grafului obtinut prin eliminarea tuturor buclelor.

12

TEMA 1. ARBORI SI ARBORESCENT


E

Teorema 1.3.1 (Kirchoff-Trent). Fie G = (V, E) un graf fara bucle avand


matricea de admitanta M = (mij )i,j=1,n, n 2. Atunci numarul t(G) de
arbori partiali ai grafului G verifica egalitatea
t(G) = (1)i+j det[M]ij , i, j {1, . . . , n},
unde [M]ij reprezinta matricea obtinuta din M prin eliminarea liniei i si
coloanei j.
Observatia 1.3.3. Teorema anterioara este valabila si pentru grafuri cu bucle,
folosind Observatia 1.3.2.
Exemplul 1.3.2. Aplicand teorema anterioara rezulta ca numarul arborilor
partiali ai grafului G din Exemplul 1.3.1 este


2 1 0 0


1 4 1 0
= 12.
t(G) = det[M]22 =

0 1 2 0
0
0
0 1

Definitia 1.3.2. a) Graful neorientat simplu Kn = (V, E) definit prin


V = {v1 , . . . , vn }, E = {[vi , vj ]|i, j {1, . . . , n}, i 6= j}
se numeste graf complet de ordinul n, unde n N .
b) Graful neorientat simplu Kp,q = (V, E) definit prin

V = {x1 , . . . , xp , y1 , . . . , yq }, E = {[xi , yj ]|i {1, . . . , p}, j {1, . . . , q}}


se numeste graf bipartit complet, unde p, q N .
Corolarul 1.3.1. Graful complet Kn are nn2 arbori partiali.
Demonstratie. Matricea de admitanta

n 1 1 . . .
1 n 1 . . .
M =
...
... ...
1
1 . . .

a grafului Kn este

1
1
( de tipul n n),
...
n1

deci conform teoremei anterioare avem



n 1 1

1 n 1
t(Kn ) = det[M]11 =
...
...
1
1

...
1
...
1
...
...
... n 1

13

TEMA 1. ARBORI SI ARBORESCENT


E
(determinant de ordinul n 1). Adunand toate liniile la
adunand linia obtinuta la celalalte linii obtinem


1
1 ...
1
...
1 1



1 n 1 . . .
n ...
1 0
=
t(Kn ) =

... ... ... ...
... ... ...
1 1 . . . n 1 0
0 ...

prima linie, apoi


1
0
...
n





= nn2 .


Observatia 1.3.4. Corolarul anterior poate fi reformulat astfel: numarul arborilor ce pot fi construiti cu n noduri date (numiti si arbori etichetati)
este egal cu nn2 .
Corolarul 1.3.2. Graful bipartit complet Kp,q are pq1 q p1 arbori partiali.

1.4

Arborescente

Definitia 1.4.1. Fie G = (V, E) un graf orientat. Un nod x V se numeste


r
ad
acin
a a grafului G daca pentru orice nod y V \ {x} exista cel putin
un drum de la x la y.
Exemplul 1.4.1. In graful din Figura 1.4.1 nodurile 1, 2 si 3 sunt radacini,
iar nodurile 4 si 5 nu sunt radacini.
2

Figura 1.4.1:

Definitia 1.4.2.

a) O arborescent
a este un arbore care are o radacina.

b) O arborescent
a partial
a a unui graf orientat G = (V, E) este un graf
partial al lui G ce este arborescenta (adica o arborescenta T = (V, F )
cu F E).
Exemplul 1.4.2. Graful din Figura 1.4.1 nu este arborescenta (are cicluri,
deci nu este arbore). Doua arborescente partiale ale sale sunt reprezentate
n Figurile 1.4.2 si 1.4.3.

14

TEMA 1. ARBORI SI ARBORESCENT


E
1

Figura 1.4.2:

Figura 1.4.3:

Figura 1.4.4:

Definitia 1.4.3. Un graf orientat G = (V, E) se numeste quasi-tare conex


daca pentru orice doua noduri x, y V exista un nod z V si drumuri de
la z la x si de la z la y.
Observatia 1.4.1. Ca si n definitiile conexitatii si tare-conexitatii, si n Definitiile 1.4.1 si 1.4.3 putem nlocui termenul de drum cu drum elementar.
Observatia 1.4.2. Evident, orice graf quasi-tare conex este conex. Reciproca
nu este adevarata. De exemplu, graful reprezentat n Figura 1.4.4 este conex,
dar nu este quasi-tare conex (pentru nodurile x = 1 si y = 4 nu exista noduri
z din care sa avem drumuri la x si la y).
Observatia 1.4.3. Orice graf tare-conex este quasi-tare conex (deoarece pentru orice noduri x, y luand z = x exista drumuri (z, . . . , x) si (z, . . . , y)).
Reciproca nu este adevarata. De exemplu, graful din Figura 1.4.1 este quasitare conex, dar nu este tare-conex.
Propozitia 1.4.1. Un graf orientat este quasi-tare conex daca si numai daca
are (cel putin) o radacina.
Demonstratie. Fie G = (V, E) un graf quasi-tare conex, V = {v1 , . . . , vn }.
Demonstram prin inductie dupa k {1, . . . , n} ca exista un nod xk V cu
drumuri (xk , . . . , v1 ), (xk , . . . , v2 ), . . . , (xk , . . . , vk ).
Pentru k = 1 luam x1 = v1 .
Presupunem adevarata afirmatia pentru k 1 si o demonstram pentru k.
Deoarece graful este quasi-tare conex, rezulta ca exista un nod xk V cu
drumuri (xk , . . . , xk1 ) si (xk , . . . , vk ). Conform ipotezei de inductie, exista
drumuri (xk1 , . . . , v1 ), . . . , (xk1 , . . . , vk1), deci exista drumuri
(xk , . . . , xk1 , . . . , v1 ), . . . , (xk , . . . , xk1 , . . . , vk1 ), (xk , . . . , vk ).
Demonstratia prin inductie este ncheiata.
Luand k = n, nodul xn este o radacina a grafului G.
Fie G = (V, E) si z V o radacina a lui G. Pentru orice noduri x, y V
exista drumuri (z, . . . , x) si (z, . . . , y), deci G este quasi-tare conex.

TEMA 1. ARBORI SI ARBORESCENT


E

1.5

15

Teorema de caracterizare a arborescentelor

Teorema 1.5.1 (de caracterizare a arborescentelor). Fie G = (V, E)


un graf orientat cu n noduri. Urm
atoarele afirmatii sunt echivalente:
1) G este quasi-tare conex si fara cicluri;
2) G este quasi-tare conex si are m = n 1 arce;
3) G este o arborescenta (adica arbore cu radacina);
4) exista un nod x V astfel ncat pentru orice nod v V exista un unic
drum de la x la v;
5) G este quasi-tare conex si minimal cu aceasta proprietate, adica daca
se elimina un arc oarecare graful obtinut nu mai este quasi-tare conex;
6) G este conex si exista un nod x V astfel ncat d (x) = 0 si d (v) = 1
v V \ {x};
7) G este fara cicluri si exista un nod x V astfel ncat d (x) = 0 si
d (v) = 1 v V \ {x}.
Demonstratie. 1) 2) Fie G quasi-tare conex si fara cicluri. Fiind quasitare conex, G este conex. Deci G este un arbore si astfel are m = n 1 arce
(conform Teoremei de caracterizare a arborilor).
2) 3) Fie G quasi-tare conex si cu m = n 1 arce. Fiind quasi-tare
conex, G este conex si are radacina (conform propozitiei anterioare). Fiind
conex cu m = n 1 arce, G este arbore (conform teoremei amintite mai sus).
3) 4) Fie G arborescenta si x o radacina a lui G. Deci pentru orice
nod v V exista un drum de la x la v. Graful G fiind un arbore, acest drum,
fiind si lant, este unic.
4) 5) Fie G cu proprietatea 4). Deci x este o radacina a lui G si
astfel G este quasi-tare conex (conform propozitiei anterioare). Fie e =
(y, z) E un arc arbitrar fixat. Demonstram ca G e = (V, E \ {e}) nu este
quasi-tare conex prin reducere la absurd. Daca G e ar fi quasi-tare conex,
atunci ar exista un nod v V si drumuri (v, . . . , y) si (v, . . . , z) n G e. x
fiind radacina n G, s-ar obtine doua drumuri distincte (x, . . . , v, . . . , y, z) si
(x, . . . , v, . . . , z) de la x la z n G, contradictie cu ipoteza.
5) 6) Fie G quasi-tare conex minimal. Fiind quasi-tare conex, G este
conex. Conform propozitiei anterioare, G are o radacina x. Demonstram
ca d (x) = 0 prin reducere la absurd. Daca am avea d (x) > 0, atunci

16

TEMA 1. ARBORI SI ARBORESCENT


E

ar exista un arc e = (y, x) E, iar G e ar avea n continuare radacina x


(deoarece exista drum elementar (x, . . . , y) n G, deci si n Ge) si astfel Ge
ar ramane quasi-tare conex (conform propozitiei anterioare), contradictie cu
ipoteza.
Fie acum v V \ {x} un nod arbitrar fixat. x fiind radacina, exista un
drum (x, . . . , y, v) de lungime nenula (v 6= x), deci d (v) 1 ((y, v) E).
Demonstram ca d (v) = 1 prin reducere la absurd. Daca am avea d (v) > 1,
atunci ar exista doua arce diferite e1 = (y1 , v),e2 = (y2 , v) E, iar G e1
ar avea n continuare radacina x (deoarece exista un drum (x, . . . , y2 , v) n
G e1 ) si astfel G e1 ar ramane quasi-tare conex (conform propozitiei
anterioare), contradictie cu ipoteza.
P
6) 7) Fie G cu proprietatea 6). Dar m =
d (t) = n 1, deci G
tV

este un arbore (conform Teoremei de caracterizare a arborilor) si astfel nu


are cicluri.
P
7) 1) Fie G cu proprietatea 7). Din nou, m =
d (t) = n 1, deci
tV

G este un arbore si astfel este conex. Rezulta ca pentru orice nod y V


exista un lant elementar unic [x, v1 , . . . , vk , y].
Deoarece d (x) = 0 nu putem avea (v1 , x) E, deci (x, v1 ) E. Cum
(x, v1 ) E si d (v1 ) = 1, nu putem avea (v2 , v1 ) E, deci (v1 , v2 ) E.
Continuand n acest mod (inductie!) obtinem (v2 , v3 ) E, . . . , (vk , y)
E, deci lantul [x, v1 , . . . , vk , y] este un drum de la x la y.
Rezulta ca x este o radacina n G si astfel, conform propozitiei anterioare,
G este quasi-tare conex.

Corolarul 1.5.1. Orice arborescenta G = (V, E) are o unica radacina x si


aceasta verifica proprietatile 4), 6) si 7) din teorema anterioara.
Demonstratie. Concluzia rezulta imediat din demonstratia teoremei anterioare.

1.6

Arborescente partiale de cost minim

Ca si problema determinarii arborilor partiali de cost minim ntr-un graf


neorientat ponderat, si problema determinarii arborescentelor partiale de
cost minim ale unui graf orientat ponderat are numeroase aplicatii practice.
Prezentam n continuare un algoritm fundamental pentru rezolvarea acestei
probleme.

TEMA 1. ARBORI SI ARBORESCENT


E

17

Definitia 1.6.1. Fie (G, c) un graf orientat ponderat, G = (V, E). O arborescenta partiala T = (V, F ) a lui G cu proprietatea ca
c(T ) = min{c(T )|T = arborescenta partiala a lui G}
se numeste arborescent
a partial
a de cost minim a grafului ponderat
(G, c).
Lema 1.6.1. Un graf orientat are arborescente partiale daca si numai daca
este quasi-tare conex.
Demonstratie. Fie G = (V, E) un graf orientat avand arborescenta
partiala T = (V, F ), F E. Daca x este radacina lui T , atunci evident
x este radacina si n G, deci G este quasi-tare conex (conform Propozitiei
1.4.1).
Fie G = (V, E) un graf orientat quasi-tare conex cu n noduri si m
arce. Daca x este radacina n G (exista, conform Propozitiei 1.4.1), atunci
d (x) 0 si d (y) 1 y V \ {x} (deoarece exista un drum (x, . . . , v, y),
deci un arc (v, y)) si astfel
X
m=
d (t) n 1.
tV

Demonstram ca G are arborescente partiale prin inductie dupa numarul m


de arce ale lui G.
Pentru m = n 1, conform proprietatii 2) din Teorema de caracterizare a arborescentelor obtinem ca G este el nsusi o arborescenta, deci si o
arborescenta partiala n G.
Presupunem adevarata afirmatia pentru orice graf quasi-tare conex cu n
noduri si cel mult m 1 arce (m n) si o demonstram pentru graful G cu
m arce. Daca nu ar exista un arc e E astfel ncat G e = (V, E \ {e})
sa ramana quasi-tare conex, atunci conform proprietatii 5) din Teorema de
caracterizare a arborescentelor ar rezulta ca G este arborescenta si astfel
m = n 1, fals. Deci exista un arc e E astfel ncat G e ramane quasitare conex. Conform ipotezei de inductie, G e are o arborescenta partiala
care este evident si arborescenta partiala n G.
Corolarul 1.6.1. Un graf orientat are arborescente partiale daca si numai
daca are (cel putin) o radacina.
Demonstratie. Se aplica lema anterioara si Propozitia 1.4.1.
Definitia 1.6.2. Fie (G, c) un graf orientat ponderat si quasi-tare conex,
G = (V, E), V = {v1 , . . . , vn }. Fie x = vs o radacina n G.
Definim graful partial H(G, c) = (V, F ) astfel:

18

TEMA 1. ARBORI SI ARBORESCENT


E

pentru fiecare nod vi V \ {x}, fie ei E un arc de cost minim avand


forma ei = (y, vi ), y V (exista un astfel de arc, conform proprietatii
6) din Teorema 1.5.1, Corolarului 1.5.1 si Lemei 1.6.1);
daca d (x) = 0, atunci F = {ei |i {1, . . . , n} \ {s}};
daca d (x) > 0, fie es E un arc de cost minim avand forma es =
(y, x), y V . Fie ei un arc de cost maxim din multimea {ei |i
{1, . . . , n}}. Atunci F = {ei |i {1, . . . , n} \ {i }}.
Observatia 1.6.1. In contextul definitiei anterioare, daca d (x) = 0 atunci
x este unica radacina a lui G, iar daca d (x) > 0 atunci multimea F nu
depinde de alegerea lui x; deci n ambele cazuri graful H(G, c) nu depinde
de alegerea radacinii x.
Exemplul 1.6.1. Fie (G, c) graful ponderat reprezentat n Figura 1.6.1.
1

20
20

23
3

15

5
30

10

10

40

15

10
4

25
20
6

Figura 1.6.1:
Arcele de cost minim la intrarea n noduri fiind (5, 1), (3, 2), (5, 3), (2, 4),
(4, 5), (4, 6), (1, 7), (7, 8) iar cel mai mare cost dintre aceste arce avand arcul
(5, 1), obtinem ca graful H(G, c) este cel reprezentat n Figura 1.6.2.

19

TEMA 1. ARBORI SI ARBORESCENT


E
1
8
3

15

10
7

15

5
10
4

20
6

Figura 1.6.2:
Lema 1.6.2. Fie (G, c) un graf orientat ponderat si quasi-tare conex, si fie
H(G, c) graful partial al lui G dat de definitia anterioara. Daca H(G, c)
nu are circuite, atunci H(G, c) este o arborescenta partiala de cost minim a
grafului (G, c).
Demonstratie. Conform definitiei lui H(G, c), orice ciclu al sau este un circuit. Afirmatia din enunt rezulta conform proprietatii 7) din Teorema 1.5.1
si definitiei lui H(G, c).
Observatia 1.6.2. Algoritmul de construire a grafului H(G, c) este evident un
algoritm specific metodei de programare Greedy.
Definitia 1.6.3. Fie (G, c) un graf orientat ponderat, G = (V, E), si fie C un
circuit elementar al lui G. Definim graful ponderat (G|C , c|C ), G|C = (V , E )
astfel:
V = V \ V (C) {xC }, unde V (C) este multimea nodurilor circuitului
C, iar xC 6 V este un nod nou; spunem ca nodul xC este obtinut prin
contractia circuitului C;
E = E1 E2 E3 , unde
E1 = {e E|e = (x, y), x, y 6 V (C)},
E2 = {(xC , y)|y 6 V (C), x V (C) astfel ncat (x, y) E},
E3 = {(y, xC )|y 6 V (C), x V (C) astfel ncat (y, x) E};

20

TEMA 1. ARBORI SI ARBORESCENT


E
pentru orice e = (x, y) E1 , c|C (e) = c(e);
pentru orice e = (xC , y) E2 ,
c|C (e) = min{c(x, y)|x V (C), (x, y) E};

spunem ca arcul e provine din arcul (x, y) E ce atinge acest


minim;
pentru orice e = (y, xC ) E3 ,
c|C (e) = min{c(y, x) c(z, x)|x V (C), (y, x) E, (z, x) E(C)}
(unde E(C) reprezinta multimea arcelor circuitului C); spunem din nou
ca arcul e provine din arcul (y, x) E ce atinge acest minim.
Spunem ca graful ponderat (G|C , c|C ) se obtine din graful (G, c) prin contractia circuitului C.
Exemplul 1.6.2. Pentru graful ponderat (G, c) din Exemplul 1.6.1 si circuitul
elementar C = (2, 4, 5, 3, 2), graful (G|C , c|C ) este reprezentat n Figura 1.6.3.

1
20
8

8
30
15

9 = xC
40

20

6
Figura 1.6.3:
De exemplu, arcul (xC , 6) provine din arcul de cost minim dintre (4, 6)
si (5, 6), adica din (4, 6), si are costul 20; arcul (1, xC ) provine din acel arc
dintre (1, 2) si (1, 3) ce are diferenta de cost minima dintre c(1, 2) c(3, 2) =
20 10 = 10 si c(1, 3) c(5, 3) = 23 15 = 8, adica din (1, 3) si are costul 8.

TEMA 1. ARBORI SI ARBORESCENT


E

21

Definitia 1.6.4. Fie (G, c) un graf orientat ponderat, G = (V, E), V =


{v1 , . . . , vn }, C un circuit elementar al lui G si (G|C , c|C ) graful ponderat
obtinut din G prin contractia circuitului C, G|C = (V , E ). Fie T = (V , F )
o arborescenta partiala n graful G|C si xT radacina sa. Definim graful partial
(T ) = (V, F ) al lui G prin:
daca xT = xC (xC fiind nodul obtinut prin contractia circuitului C n
graful G), atunci F = F1 F2 [E(C) \ {e }], unde
F1 = {e F |e = (x, y), x, y V \ {xC }},
F2 = {(x, y)|(x, y) E este arcul din care provine un arc (xC , y) F }
(luand un singur arc (x, y) E pentru fiecare arc e = (xC , y) F ),
E(C) este multimea arcelor circuitului C, iar e este un arc de cost
maxim din E(C);
daca xT 6= xC , atunci F = F1 F2 {(y, x)} [E(C) \ {(z, x)}], unde
F1 si F2 sunt definite mai sus, (y, x) E este arcul din care provine
unicul arc (y, xC ) F , iar (z, x) E(C) (arcul unic de pe circuitul C
incident cu x spre interior).
Lema 1.6.3. In contextul definitiei anterioare, (T ) este o arborescenta
partiala n graful G.
Demonstratie. Deoarece T este o arborescenta partiala n G|C , din definitia
lui (T ) si proprietatea 7) din Teorema 1.5.1 rezulta ca (T ) este o arborescenta partiala n G, avand ca radacina radacina xT a lui T , cand xT 6= xC ,
respectiv extremitatea finala a arcului e din definitia anterioara, cand xT =
xC .
Definitia 1.6.5. In contextul definitiei anterioare, spunem ca arborescenta
partiala (T ) se obtine din arborescenta partiala T prin decontractia circuitului C.
Exemplul 1.6.3. Fie graful (G, c) din Exemplul 1.6.1, circuitul elementar C =
(2, 4, 5, 3, 2) si graful (G1 , c1 ) calculat si reprezentat n Exemplul 1.6.2.
Graful partial T = H(G1 , c1 ) construit conform Definitiei 1.6.2 este reprezentat n Figura 1.6.4.

22

TEMA 1. ARBORI SI ARBORESCENT


E

1
8

8
15

9 = xC

7
20

6
Figura 1.6.4:
Deci T este o arborescenta partiala (de cost minim, conform Lemei 1.6.2)
n graful (G1 , c1 ), avand radacina 1, 1 6= xC . Arborescenta partiala (T ) a
grafului initial G obtinuta din T prin decontractia circuitului C este reprezentata n Figura 1.6.5. Arcul (xC , 6) din T s-a nlocuit n (T ) cu arcul (4, 6)
din care a provenit; arcul (1, xC ) din T s-a nlocuit n (T ) cu arcul (1, 3)
din care a provenit si a condus si la eliminarea arcului (5, 3) (arcul unic de
pe circuitul C incident cu 3 spre interior).
Lema 1.6.4. Fie (G, c) un graf orientat ponderat, C un circuit elementar
al lui G si (G1 , c1 ) = (G|C , c|C ) graful ponderat obtinut din G prin contractia
circuitului C. Atunci G are arborescente partiale daca si numai daca G1 are
arborescente partiale.
Demonstratie. Daca G are arborescente partiale, atunci conform Corolarului 1.6.1 G are o radacina x. Avem doua cazuri.
a) Daca x 6 V (C), cum orice drum (x, . . . , y) din G cu y 6 V (C) se
transforma prin contractia lui C ntr-un drum (x, . . . , y) n G1 , iar orice
drum (x, . . . , y) din G cu y V (C) se transforma prin contractia lui C ntrun drum (x, . . . , xC ) n G1 , rezulta ca x este radacina si n G1 , deci G1 are
arborescente partiale.
b) Daca x V (C), cum orice drum (x, . . . , y) din G cu y 6 V (C) se
transforma prin contractia lui C ntr-un drum (xC , . . . , y) n G1 , rezulta ca
xC este radacina n G1 , deci G1 are arborescente partiale.
Daca G1 are arborescente partiale, fie T o arborescenta partiala a
sa. Conform Lemei 1.6.3, (T ) este o arborescenta partiala a lui G.

23

TEMA 1. ARBORI SI ARBORESCENT


E
1
8

23
3

15

10
7

5
10
4

20
6

Figura 1.6.5:
Lema 1.6.5. Fie (G, c) un graf orientat ponderat si quasi-tare conex, C un
circuit elementar al lui G si (G1 , c1 ) = (G|C , c|C ) graful ponderat obtinut
din G prin contractia circuitului C. Fie T o arborescenta partiala n graful (G1 , c1 ) si (T ) arborescenta partiala n graful (G, c) construita conform
Definitiei 1.6.4. Atunci, cu notatiile din acea definitie, avem

c1 (T ) + c(C), daca xC 6= xT ,
c((T )) =
c1 (T ) + c(C) c(e ), daca xC = xT .
Demonstratie. Concluzia rezulta imediat din Definitiile 1.6.4 si 1.6.3.
Lema 1.6.6. Fie (G, c) un graf orientat ponderat si quasi-tare conex si fie
H(G, c) graful partial al lui G dat de Definitia 1.6.2. Fie C un circuit elementar n graful H(G, c), deci si n graful G. Fie (G1 , c1 ) = (G|C , c|C ) graful
ponderat obtinut din G prin contractia circuitului C si fie T o arborescenta
partiala de cost minim n acest graf. Atunci graful (T ) construit conform
Definitiei 1.6.4 este o arborescenta partiala de cost minim n graful (G, c).
Demonstratie. Se foloseste faptul ca din orice arborescenta partiala T0 a lui
G se obtine, prin contractia circuitului C, o arborescenta partiala T1 a lui
G1 (conform demonstratiei Lemei 1.6.4), iar c1 (T1 ) c1 (T ).
Concluzia rezulta din Lema 1.6.5, folosind alegerile grafului H(G, c), grafului (T ) si arcului e (conform definitiilor si lemelor anterioare).

TEMA 1. ARBORI SI ARBORESCENT


E

24

Exemplul 1.6.4. Revenind la exemplul anterior, cum T = H(G1 , c1 ) este o


arborescenta partiala de cost minim n graful (G1 , c1 ) (conform Lemei 1.6.2),
rezulta ca (T ) este o arborescenta partiala de cost minim n graful initial
(G, c).
Conform Lemelor 1.6.2 si 1.6.6 obtinem urmatorul algoritm pentru determinarea unei arborescente partiale de cost minim.
Algoritmul 1.6.1 (Edmonds). Fie (G, c) un graf orientat ponderat si quasitare conex (verificarea quasi-tare conexitatii poate fi efectuata pe baza Propozitiei 1.4.1). Fie G = (V, E), V = {1, . . . , n}. Algoritmul descris n pseudocod are forma urmatoare.
EDMONDS :
do
k 1;
// k = pasul
nv n;
// nv = num
arul de noduri la pasul curent
GREEDY;
// se determin
a graful part
ial H(G, c)
// pentru graful curent

ine circuite
if (EXISTA CIRCUIT) then // acesta cont

DETERMINA CIRCUIT; // se determin


a un circuit
// elementar C
nv nv + 1;
// nv reprezint
a nodul xC
CONTRACT
IE;
// se efectueaz
a contract
ia
// circuitului C
k k + 1;
// se reia algoritmul pentru noul graf
CIRCUIT);
while (EXISTA
// nu mai exist
a circuite, structura H(G, c) din graful
// curent este arborescent

a part
ial
a de cost minim
// ^
n acest graf; trecem la decontract
iile succesive
// ale arborescent
elor part
iale de cost minim,
// ^
n ordinea invers
a a pa
silor
k k 1;
while (k > 0) do
DECONTRACT
IE;
// decontract
ia arborescent
ei
// part
iale din graful curent
nv nv 1;
k k 1;
// se reia algoritmul pentru noul graf
AFIS
ARE;

// se afi
seaz
a arborescent
a part
ial
a
// de cost minim

Graful partial (structura de tip greedy) H(G, c) poate fi usor memorat

TEMA 1. ARBORI SI ARBORESCENT


E

25

ntr-un vector T AT A avand semnificatia



j, daca (j, i) este un arc al grafului H(G, c),
T AT A[i] =
0, n caz contrar,
iar circuitul elementar C din acest graf poate fi determinat si memorat
folosind un vector P AS avand semnificatia

k, daca nodul i face parte din circuitul C de la un pas k,
P AS[i] =
0, n caz contrar.
Teorema 1.6.1 (de corectitudine a Algoritmului Edmonds). In contextul Algoritmului 1.6.1, fie (G, c) graful orientat ponderat si quasi-tare
conex initial. Fie (G1 , c1 ) = (G, c) si (G2 , c2 ), . . . , (Gp , cp ) grafurile succesive
obtinute prin contractia succesiva a circuitelor elementare C1 din H(G1 , c1 ),
. . . , Cp1 din H(Gp1 , cp1), unde H(Gp , cp ) nu mai are circuite. Fie Tp =
H(Gp , cp ), Tp1 = (Tp ), . . . , T1 = (T2 ) arborescentele partiale succesive din
Gp , Gp1, . . . , respectiv din G1 = G.
Atunci T1 este o arborescenta partiala de cost minim a grafului (G, c).
Demonstratie. Conform Lemelor 1.6.1 si 1.6.4, grafurile G2 , . . . , Gp sunt quasitare conexe, deci au arborescente partiale.
Deoarece la fiecare pas circuitul Ci contine cel putin un arc, deci Gi+1
are cel putin un arc mai putin decat Gi , rezulta ca numarul p de pasi ai
algoritmului este finit, adica exista p N astfel ncat H(Gp , cp ) nu mai
contine circuite. Conform Lemei 1.6.2, Tp este arborescenta partiala de cost
minim n (Gp , cp ). Conform Lemelor 1.6.3 si 1.6.6, rezulta ca Tp1 , . . . , T1
sunt arborescente partiale de cost minim n (Gp1, cp1 ), . . . , respectiv n
(G1 , c1 ).
Observatia 1.6.3. Algoritmul Edmonds este specific metodei de programare Greedy. In implementarea optima, se poate arata ca acest algoritm
are complexitatea O (mn), unde n si m reprezinta numerele de noduri, respectiv de arce ale grafului dat.

Tema 2
Clase particulare de grafuri
2.1

Grafuri euleriene

Definitia 2.1.1. a) Fie G = (V, E) un graf. Un lant simplu, ciclu, drum


simplu sau circuit n graful G ce contine toate muchiile sau arcele lui
G se numeste eulerian.
b) Un graf neorientat se numeste eulerian daca are (cel putin) un ciclu
eulerian.
c) Un graf orientat se numeste eulerian daca are (cel putin) un circuit
eulerian.
Exemplul 2.1.1. Graful neorientat reprezentat n Figura 2.1.1 este eulerian,
un ciclu eulerian al sau fiind C = [1, 2, 3, 4, 10, 9, 3, 6, 2, 5, 8, 7, 5, 1].
1

10

6
5

Figura 2.1.1:
Exemplul 2.1.2. Fie graful orientat reprezentat n Figura 2.1.2. Un drum
eulerian n acest graf este (1, 2, 3, 4, 6, 3, 5, 6, 1, 5, 4).
26

27

TEMA 2. CLASE PARTICULARE DE GRAFURI


2

Figura 2.1.2:
Observatia 2.1.1. Existenta lanturilor, ciclurilor, drumurilor sau circuitelor
euleriene nu este influentata de prezenta unor eventuale noduri izolate, deci
putem analiza n continuare doar grafurile fara noduri izolate.
Teorema 2.1.1 (Euler, de caracterizare a grafurilor euleriene neorientate). Un graf neorientat fara noduri izolate este eulerian dac
a si numai
daca este conex si par.
Demonstratie. Fie G = (V, E) un graf neorientat eulerian, fara noduri
izolate. Fie C un ciclu eulerian al lui G. Neexistand noduri izolate, orice nod
x V are o muchie incidenta, si cum aceasta muchie apartine lui C rezulta
ca si nodul x apartine lui C. Deci C contine si toate nodurile lui G. Rezulta
ca G este conex, ntre orice doua noduri distincte x, y V existand un lant
elementar continut n ciclul C.
Cum C contine toate muchiile lui G rezulta ca
dG (x) = dC (x) = par, x V
(orice ciclu este evident un subgraf par).
Fie G = (V, E) un graf neorientat conex, par si fara noduri izolate.
Conform Propozitiei 1.1.2, graful G are o descompunere n cicluri elementare
muchie-disjuncte C1 , . . . , Ck , k 1.
Daca k = 1, atunci C1 este un ciclu eulerian n G.
Daca k 2, graful G fiind conex, ciclul C1 are un nod comun cu un alt
ciclu din {C2 , . . . , Ck }. Fie C2 acest ciclu si C2 ciclul obtinut pornind din
nodul comun si parcurgand ntai C1 apoi C2 . Spunem ca C2 se obtine prin
concatenarea (alipirea) ciclurilor C1 si C2 .
Daca k = 2, atunci C2 este un ciclu eulerian n G.
Daca k 3, din conexitatea lui G obtinem ca C2 are un nod comun
cu un alt ciclu din {C3 , . . . , Ck }, fie acesta C3 , si fie C3 ciclul obtinut prin

TEMA 2. CLASE PARTICULARE DE GRAFURI

28

concatenarea ciclurilor C2 si C3 . Continuand acest procedeu de concatenare


a ciclurilor, rezulta (prin inductie dupa k) ca obtinem un ciclu Ck ce este
eulerian n G.
Exemplul 2.1.3. Graful din Exemplul 2.1.1 este conex, par si fara noduri
izolate, deci este eulerian.
Observatia 2.1.2. Demonstratia teoremei anterioare este constructiva, ea indicand un algoritm de determinare a unui ciclu eulerian ntr-un graf neorientat conex, par si fara noduri izolate.
Prezentam n continuare un algoritm pentru determinarea unui ciclu eulerian bazat pe arborele DF al grafului dat.
Algoritmul 2.1.1 (de determinare a unui ciclu eulerian). Fie G = (V, E)
un graf neorientat conex, par si fara noduri izolate. Verificarea conexitatii, cu neglijarea nodurilor izolate, poate fi efectuata cu ajutorul parcurgerii
DF , iar verificarea paritatii poate fi efectuata calculand gradele nodurilor
prin intermediul matricei de adiacenta. Fie T = (V, F ) arborele DF al lui
G, considerand ca radacina a parcurgerii DF un nod x1 V arbitrar fixat.
Un ciclu eulerian n G poate fi obtinut astfel:
se porneste din nodul radacina x1 ;
se parcurg cu prioritate muchiile (neparcurse anterior) ce nu apartin
arborelui DF (adica daca exista o astfel de muchie [x, y], incidenta cu
nodul curent x, se parcurge aceasta muchie si nodul curent devine y,
iar daca nu exista o astfel de muchie se parcurge, daca exista, o muchie
[x, z] a arborelui DF , incidenta cu nodul curent x, si nodul curent
devine z).
se continua parcurgerea n modul descris mai sus, cat timp este posibil.
Exemplul 2.1.4. Arborele DF (1) al grafului din Exemplul 2.1.1 este reprezentat n Figura 2.1.3.

29

TEMA 2. CLASE PARTICULARE DE GRAFURI


1

10

6
5

Figura 2.1.3:
Aplicand algoritmul anterior obtinem ciclul eulerian
[1, 5, 8, 7, 5, 2, 6, 3, 9, 10, 4, 3, 2, 1].
Teorema 2.1.2 (de corectitudine a Algoritmului 2.1.1). In contextul
Algoritmului 2.1.1, muchiile selectate succesiv formeaz
a un ciclu eulerian al
grafului dat.
Demonstratie. Fie G = (V, E) graful neorientat, conex, par si fara noduri izolate. Fie x1 , x2 , . . . , xn multimea nodurilor grafului G, n ordinea parcurgerii
DF , iar T = (V, F ) arborele DF .
Fie e1 , e2 , . . . , ek muchiile selectate prin aplicarea algoritmului. Deoarece
G este par, din descrierea algoritmului rezulta ca e1 , e2 , . . . , ek sunt, n aceasta
ordine, muchiile unui ciclu avand ca extremitate radacina x1 .
Fie C acest ciclu si E(C) = {e1 , e2 , . . . , ek }. Demonstram ca F E(C)
prin reducere la absurd. Daca am avea F 6 E(C), fie f1 = [xi , xj ] prima
muchie din F \ E(C), n ordinea parcurgerii DF , unde i < j. Din descrierea
algoritmului, xi 6= x1 (n caz contrar ar continua selectarea de muchii din
radacina x1 ). Deoarece graful G C = (V, E \ E(C)) ramane par, pornind
din nodul xi , parcurgand muchia f1 = [xi , xj ] si continuand parcurgerea de
muchii din graful G C cat timp este posibil, obtinem un ciclu C avand ca
extremitati pe xi (a se vedea Figura 2.1.4).

TEMA 2. CLASE PARTICULARE DE GRAFURI

30

x1

xl
xi
xj

xk
Figura 2.1.4:
Din definitia parcurgerii DF , nodul xj si orice succesor xk al sau n arborele DF nu pot avea ca vecini decat succesori sau predecesori n acest
arbore, deci pentru a ajunge din nou n nodul xi ciclul C trebuie sa contina
cel putin o muchie de forma f2 = [xk , xl ], f2 6= f1 , unde xk este xj sau un
succesor al sau n arborele DF , iar xl este xi sau un predecesor al sau n arborele DF . Muchia f2 se numeste muchie de ntoarcere pentru parcurgea
DF . Ar rezulta ca f2 (E \ F ) \ E(C) este incidenta cu nodul xl , iar xl
apartine lantului elementar [x1 , . . . , xi ] al arborelui DF . Avem doua cazuri.
Cazul 1) xl = x1 . Atunci algoritmul nu s-ar fi ncheiat fara selectarea
muchiei f2 , deci f2 E(C), fals.
Cazul 2) xl 6= x1 . Atunci fiecare muchie [xs , xt ], s < t, a lantului
[x1 , . . . , xl ] de pe arborele DF a fost parcursa de ciclul C pornind din xt .
Intr-adevar, daca prima muchie [x1 , xt ] F a acestui lant ar fi fost par1
cursa de ciclul C pornind din x1 , atunci la revenirea n x1 ciclul C ar folosi
o muchie de ntoarcere [xq , x1 ] E \ F si s-ar contrazice selectarea cu prioritate a muchiilor din E \ F ; folosind acum ca [x1 , xt1 ] a fost parcursa de
ciclul C pornind din xt1 , analog se arata ca a doua muchie [xt1 , xt2 ] a lantului
[x1 , . . . , xl ] a fost parcursa pornind din xt2 si asa mai departe (inductie!). Deci
ultima muchie [xtr , xl ] F a lantului [x1 , . . . , xl ] a fost parcursa pornind din
xl . Cum muchia f2 = [xk , xl ] E \ F nu a fost selectata, s-ar contrazice
selectarea cu prioritate a muchiilor din E \ F .
Demonstratia prin reducere la absurd este ncheiata, deci F E(C).
Cum arborele T contine toate nodurile grafului conex G, fiecare muchie
e E \ F este o muchie de ntoarcere e = [xk , xl ], k > l. Analog ca mai sus
se obtine ca e = [xk , xl ] este selectata nainte de selectarea muchiei [xtr , xl ]

TEMA 2. CLASE PARTICULARE DE GRAFURI

31

de pe lantul elementar [x1 , . . . , xl ] al arborelui DF . Deci E(C) = E si astfel


ciclul C este eulerian n graful G.
Observatia 2.1.3. Datorita necesitatii parcurgerii DF si a tuturor muchiilor
grafului dat, complexitatea Algoritmului 2.1.1 este O (m), unde m reprezinta
numarul de muchii ale grafului dat.
Observatia 2.1.4. Pentru implementarea Algoritmului 2.1.1, n cazul grafurilor simple putem memora arborele DF tot n matricea de adiacenta A
considerand
aij = 2 daca muchia [i, j] apartine arborelui DF .
Algoritmul descris n pseudocod are forma urmatoare.
CICLU EULERIAN(x) :
i x;
// i este nodul curent al ciclului eulerian
do

VIZITEAZA(i);
// se viziteaz
a nodul i,
// de exemplu se afi
seaz
a i
j 1;
while (aij 6= 1 and j n) do
// c
aut
am [i, j] 6 DF
j j + 1;
if (j n) then
// exist
a, deci [i, j] ciclu eulerian
aij 0; aji 0;
// elimin
am [i, j] din graf
i j;
else
j 1;
while (aij 6= 2 and j n) do
// c
aut
am [i, j] DF
j j + 1;
if (j n) then
// exist
a, deci [i, j] ciclu eulerian
aij 0; aji 0;
// elimin
am [i, j] din graf
i j;
while (j n);
Observatia 2.1.5. In cazul grafurilor nesimple, pentru implementarea Algoritmului 2.1.1 graful dat poate fi memorat cu ajutorul matricei de adiacenta,
iar arborele DF poate fi memorat cu ajutorul vectorului T AT A. Verificarea
daca [i, j] DF revine la T AT A[i] = j sau T AT A[j] = i, iar eliminarea
unei muchii [i, j] din graf revine la aij aij 1 si aji aji 1.
Corolarul 2.1.1. Un graf neorientat fara noduri izolate are un lant eulerian
deschis daca si numai daca este conex si are exact doua noduri de grade

TEMA 2. CLASE PARTICULARE DE GRAFURI

32

impare. In plus, orice lant eulerian are ca extremitati cele dou


a noduri de
grade impare.
Demonstratie. Fie G = (V, E) un graf neorientat fara noduri izolate,
avand un lant eulerian deschis = [x, v1 , . . . , vk , y]. Evident, G este conex.
Fie G = (V, E {e}), unde e = [y, x], e 6 E (muchie noua). Adaugand
muchia e la lantul obtinem un ciclu eulerian C = [x, v1 , . . . , vk , y, x] n
graful G . Conform Teoremei 2.1.1, G este conex si par. Rezulta ca
dG (x) = dG (x) 1 = impar,
dG (y) = dG (y) 1 = impar,
dG (z) = dG (z) = par z V \ {x, y}.
Fie G = (V, E) un graf neorientat conex, fara noduri izolate, cu
exact doua noduri x si y de grade impare. Fie G graful definit ca mai
sus. Rezulta ca G este conex si par, deci conform Teoremei 2.1.1 el contine
un ciclu eulerian C = [x, v1 , . . . , vk , y, x]. Eliminand muchia e = [y, x] de
pe ciclul C obtinem un lant eulerian deschis = [x, v1 , . . . , vk , y] n graful
G.
Observatia 2.1.6. Folosind trecerea ntre grafurile G si G si ntre lantul eulerian deschis si ciclul eulerian C din demonstratia corolarului anterior, precum si Algoritmul 2.1.1, se obtine un algoritm pentru determinarea lanturilor
euleriene deschise ntr-un graf dat.
Teorema 2.1.3 (de caracterizare a grafurilor euleriene orientate).
Un graf orientat fara noduri izolate este eulerian daca si numai daca este
conex si d+ (x) = d (x), pentru orice nod x.
Demonstratie. Demonstratia este analoga cu cea a Teoremei 2.1.1, nlocuind
ciclu cu circuit si d(x) = par cu d+ (x) = d (x).
Existenta unui circuit se obtine pornind dintr-un nod arbitrar si parcurgand succesiv arce cat timp este posibil (revenirea n nodul initial este
asigurata de conditia d+ (x) = d (x) x).
Corolarul 2.1.2. Un graf orientat fara noduri izolate are un drum eulerian
deschis daca si numai daca este conex si are doua noduri x si y astfel ncat
d+ (x) = d (x) + 1, d+ (y) = d (y) 1, d+ (z) = d (z) pentru orice nod z
diferit de x si y. In plus, orice drum eulerian are ca extremitate initiala
nodul x si ca extremitate finala nodul y.
Demonstratie. Demonstratia este analoga cu cea a Corolarului 2.1.1, utilizand acum Teorema 2.1.3.

33

TEMA 2. CLASE PARTICULARE DE GRAFURI

Exemplul 2.1.5. Graful din Exemplul 2.1.2 este conex, fara noduri izolate si
d+ (1) = d (1) + 1, d+ (4) = d (4) 1, d+ (z) = d (z) z V \ {1, 4},
deci graful are drumuri euleriene de forma (1, . . . , 4).
Observatia 2.1.7. Demonstratia Teoremei 2.1.3 este constructiva, ea indicand
un algoritm de determinare a unui circuit eulerian ntr-un graf orientat ce
verifica ipotezele teoremei. De asemenea, analog Observatiei 2.1.6, acest
algoritm poate fi utilizat si pentru determinarea unui drum eulerian deschis
ntr-un graf orientat ce verifica ipotezele Corolarului 2.1.2.

2.2

Grafuri hamiltoniene

Definitia 2.2.1. a) Fie G = (V, E) un graf. Un lant elementar, ciclu


elementar, drum elementar sau circuit elementar n graful G ce contine
toate nodurile lui G se numeste hamiltonian.
b) Un graf neorientat se numeste hamiltonian daca are (cel putin) un
ciclu hamiltonian.
c) Un graf orientat se numeste hamiltonian daca are (cel putin) un circuit hamiltonian.
Exemplul 2.2.1. Graful eulerian din Exemplul 2.1.1 nu este hamiltonian,
deoarece pentru ca un circuit sa treaca de la nodul 1 la nodul 3 si sa revina
n nodul 1 ar trebui sa treaca de cel putin doua ori prin nodul 2.
Exemplul 2.2.2. Graful reprezentat n Figura 2.2.1 este hamiltonian, un ciclu hamiltonian al sau fiind C = [1, 2, 3, 4, 8, 7, 6, 5, 1]. Acest graf nu este
eulerian, avand 4 noduri de grade impare.
1

Figura 2.2.1:

TEMA 2. CLASE PARTICULARE DE GRAFURI

34

Observatia 2.2.1. Spre deosebire de problemele euleriene studiate n sectiunea


anterioara, problemele de testare a hamiltoneitatii unui graf si de determinare
a unui ciclu sau circuit hamiltonian optim ntr-un graf ponderat sunt probleme pentru care nu se cunosc (pana n prezent) algoritmi de rezolvare cu
complexitate polinomiala (numite si probleme NP). Dispunem totusi de
numeroase conditii fie necesare, fie suficiente, pentru ca un graf dat sa fie
hamiltonian. Cateva astfel de conditii vor fi prezentate n continuare.
Observatia 2.2.2. Este evident ca ntr-un graf cu n 3 noduri orice lant,
ciclu, drum sau circuit hamiltonian nu utilizeaza bucle si nici muchii sau
arce multiple, deci este suficient sa studiem hamiltoneitatea pentru grafurile
simple.
Lema 2.2.1 (Bondy, Chv
atal). Fie G = (V, E) un graf neorientat simplu
cu n 3 noduri. Fie x, y V astfel ncat
x 6= y, [x, y] 6 E si d(x) + d(y) n.
Atunci graful G este hamiltonian daca si numai daca graful
G + [x, y] = (V, E {[x, y]})
este hamiltonian.
Demonstratie. Evident, daca G este hamiltonian atunci orice ciclu hamiltonian n G este ciclu hamiltonian si n G+[x, y], deci G+[x, y] este hamiltonian.
Reciproc, fie G + [x, y] hamiltonian si C un ciclu hamiltonian n acest
graf.
Cazul 1) Daca C nu contine muchia [x, y], atunci C este un ciclu hamiltonian n graful G.
Cazul 2) Daca C contine muchia [x, y], atunci prin eliminarea muchiei
[x, y] din ciclul C obtinem un lant hamiltonian
= [x = v1 , v2 , . . . , vn = y]
n graful G. Fie
A = {i {1, . . . , n 1}|[x, vi+1 ] E},
B = {i {1, . . . , n 1}|[vi , y] E}.
Avem card (A) = d(x) si card (B) = d(y), deci, conform ipotezei,
card (A) + card (B) n.

35

TEMA 2. CLASE PARTICULARE DE GRAFURI


Cum A B {1, . . . , n 1}, avem card (A B) n 1, deci
card (A B) = card (A) + card (B) card (A B) n (n 1) = 1,
adica A B 6= . Fie k A B. Atunci
[x = v1 , v2 , . . . , vk , y = vn , vn1 , . . . , vk+1 , x]
este un ciclu hamiltonian n graful G.

Definitia 2.2.2. Fie G un graf neorientat simplu cu n 3 noduri.


Inchiderea lui G, notata cu cl(G), este graful neorientat simplu obtinut din
G prin adaugarea repetata a tuturor muchiilor [x, y] ntre noduri distincte si
neadiacente x, y cu d(x) + d(y) n n graful curent.
Observatia 2.2.3. Daca H = cl(G), atunci pentru orice noduri distincte x, y
cu [x, y] 6 E(H) avem dH (x) + dH (y) < n, unde E(H) este multimea muchiilor grafului H.
Observatia 2.2.4. Graful cl(G) este bine definit, nedepinzand de ordinea de
adaugare a muchiilor. Acest fapt poate fi demonstrat prin inductie dupa
numarul muchiilor adaugate.
Exemplul 2.2.3. Fie G graful reprezentat n Figura 2.2.2.
2

Figura 2.2.2:
Adaugand succesiv muchiile [1, 5] (deoarece d(1) + d(5) = 4 + 2 n = 6),
[2, 4] (deoarece d(2) + d(4) = 2 + 4 n, n graful curent), [2, 5] (deoarece
d(2) + d(5) = 3 + 3 n, n graful curent!), [2, 6], [3, 5] si [3, 6], obtinem
nchiderea cl(G) = K6 , unde K6 este graful complet cu 6 noduri.
Lema 2.2.2 (Lema nchiderii; Bondy, Chv
atal). Fie G un graf neorientat simplu cu n 3 noduri. Atunci G este hamiltonian daca si numai daca
graful cl(G) este hamiltonian.

36

TEMA 2. CLASE PARTICULARE DE GRAFURI

Demonstratie. Concluzia este evidenta conform Lemei 2.2.1 si definitiei anterioare.


Lema 2.2.3. Fie G un graf neorientat simplu cu n 3 noduri. Daca avem
cl(G) = Kn , atunci G este hamiltonian.
Demonstratie. Concluzia rezulta folosind lema anterioara si faptul ca graful
complet Kn , n 3, este evident hamiltonian (orice succesiune de forma
[v1 , v2 , . . . , vn , v1 ] cu nodurile v1 , . . . , vn distincte este un ciclu hamiltonian n
Kn ).
Observatia 2.2.5. Reciproca lemei anterioare nu este adevarata. De exemplu
graful G reprezentat n Figura 2.2.3 este hamiltonian, dar cl(G) = G 6= K6 .
2

Figura 2.2.3:
Teorema 2.2.1 (Chv
atal). Fie G = (V, E) un graf neorientat simplu cu
n 3 noduri avand gradele
d1 d2 dn .
Daca pentru orice k N este verificata proprietatea
n
dk k < dnk n k,
2
atunci G este hamiltonian.
Demonstratie. Se arata ca are loc egalitatea cl(G) = Kn si conform lemei
anterioare rezulta astfel ca G este hamiltonian.
Observatia 2.2.6. Daca graful G verifica ipoteza Teoremei lui Chvatal atunci
cl(G) = Kn . Reciproca nu este adevarata. De exemplu, graful G din Exemplul 2.2.3 are cl(G) = Kn , dar nu verifica ipoteza Teoremei lui Chvatal (are
gradele, n ordine crescatoare, 2, 2, 3, 3, 4, 4, deci d2 2 < n2 dar d4 < 4).
Astfel nici reciproca Teoremei lui Chvatal nu este adevarata.

37

TEMA 2. CLASE PARTICULARE DE GRAFURI

Corolarul 2.2.1 (Teorema lui Bondy). Fie G un graf neorientat simplu


cu n 3 noduri avand gradele
d1 d2 dn .
Daca pentru orice p, q N este verificata proprietatea
dp p, dq q, p 6= q dp + dq n,
atunci G este hamiltonian.
Demonstratie. Se arata ca graful G verifica ipoteza Teoremei lui Chvatal si
astfel este hamiltonian.
Observatia 2.2.7. Teorema lui Chvatal generalizeaza Teorema lui Bondy.
Aceasta generalizare este stricta. De exemplu, graful reprezentat n Figura
2.2.4 are gradele, n ordine crescatoare, 3, 3, 3, 4, 5, 5, 5, 6, deci verifica ipoteza
Teoremei lui Chvatal dar nu verifica ipoteza Teoremei lui Bondy (d3 = 3 3,
d4 = 4 4, dar d3 + d4 = 7 < n = 8).
3

Figura 2.2.4:
Corolarul 2.2.2 (Teorema lui P
osa). Fie G un graf neorientat simplu cu
n 3 noduri avand gradele
d1 d2 dn .
Daca

dk > k, k < n1
,
2
dk+1 > k, pentru k =

atunci G este hamiltonian.

n1
2

si n = impar,

38

TEMA 2. CLASE PARTICULARE DE GRAFURI

Demonstratie. Se arata ca graful G verifica ipoteza Teoremei lui Bondy (corolarul anterior) si astfel este hamiltonian.
Observatia 2.2.8. Teorema lui Bondy generalizeaza Teorema lui Posa. Generalizarea este stricta. De exemplu, graful reprezentat n Figura 2.2.5 are
gradele, ordonate crescator, 2, 2, 4, 4, 4, 4, deci verifica ipoteza Teoremei lui
Bondy, dar nu verifica ipoteza Teoremei lui Posa.
2

1
4

Figura 2.2.5:
Corolarul 2.2.3 (Teorema lui Ore). Fie G = (V, E) un graf neorientat
simplu cu n 3 noduri. Daca pentru orice doua noduri x, y distincte si
neadiacente avem
d(x) + d(y) n,
atunci G este hamiltonian.
Demonstratie. Se arata ca graful G verifica ipoteza Teoremei lui Posa (corolarul anterior) si astfel este hamiltonian.
Observatia 2.2.9. Teorema lui Posa generalizeaza Teorema lui Ore. Aceasta
generalizare este stricta. De exemplu, graful reprezentat n Figura 2.2.6 are
gradele, ordonate crescator, 2, 3, 3, 4, 4, 4, deci verifica ipoteza Teoremei lui
Posa, dar nu verifica ipoteza Teoremei lui Ore.
Corolarul 2.2.4 (Teorema lui Dirac). Fie G = (V, E) un graf neorientat
simplu cu n 3 noduri. Daca
d(x)
atunci G este hamiltonian.

n
, x V,
2

39

TEMA 2. CLASE PARTICULARE DE GRAFURI

Demonstratie. Se arata ca graful G verifica ipoteza Teorema lui Ore (corolarul anterior), deci este hamiltonian.
Observatia 2.2.10. Teorema lui Ore generalizeaza Teorema lui Dirac. Aceasta
generalizare este stricta. De exemplu, graful reprezentat n Figura 2.2.7
verifica ipoteza Teoremei lui Ore, dar nu verifica ipoteza Teoremei lui Dirac.
2

1
4

Figura 2.2.6:

2.3

Figura 2.2.7:

Grafuri bipartite

Definitia 2.3.1. Un graf G = (V, E) se numeste bipartit daca exista o


partitie V = A B (A 6= , B 6= , A B = ) a.. fiecare muchie sau arc
al grafului are o extremitate n A si cealalta extremitate n B.
Exemplul 2.3.1. Graful reprezentat n Figura 2.2.3 este bipartit, luand partitia
nodurilor V = {1, 3, 5} {2, 4, 6}. O alta reprezentare a acestui graf bipartit,
cu evidentierea partitiei nodurilor prin asezarea n stanga a nodurilor din
partea A = {1, 3, 5} si n dreapta a nodurilor din partea B = {2, 4, 6}, este
data n Figura 2.3.1.

Figura 2.3.1:

TEMA 2. CLASE PARTICULARE DE GRAFURI

40

Teorema 2.3.1 (de caracterizare a grafurilor bipartite). Un graf cu


n 2 noduri este bipartit daca si numai daca nu contine cicluri de lungime
impara.
Demonstratie. Fie G = (V, E) un graf bipartit avand partitia nodurilor
V = A B ca n definitia anterioara. Orice ciclu al grafului G are una din
formele [a1 , b1 , a2 , b2 , . . . , ak , bk , a1 ] sau [b1 , a1 , b2 , a2 , . . . , bk , ak , b1 ] cu a1 , a2 ,
. . . , ak A si b1 , b2 , . . . , bk B, deci are lungimea 2k.
Fie G = (V, E) un graf cu n 2 noduri ce nu contine cicluri de
lungime impara. Demonstram ca graful G este bipartit n doua etape.
Etapa 1) Presupunem ca graful G este conex. Fie v V un nod arbitrar
fixat. Pentru orice nod x V definim numarul d(v, x) N prin
d(v, x) = min{l()| este lant de la v la x n G},
unde l() reprezinta lungimea lantului . Definitia este corecta, deoarece
graful este conex. Pentru grafuri neorientate d(v, x) se numeste distanta de
la v la x. Fie
A = {x V |d(v, x) = numar par} si B = {x V |d(v, x) = numar impar}.
Evident, V = A B si A B = . Deoarece d(v, v) = 0 rezulta ca v A,
deci A 6= . Fie v1 un nod vecin cu v (exista, deoarece graful este conex si
are cel putin doua noduri). Atunci d(v, v1 ) = 1, deci v1 B si astfel B 6= .
Demonstram prin reducere la absurd ca orice muchie (sau arc) a grafului
are o extremitate n A si cealalta extremitate n B si astfel va rezulta ca
graful este bipartit. Fie [x, y] E o muchie (sau arc) arbitrar fixata. Fie
1 un lant de lungime minima de la v la x si 2 un lant de lungime minima
de la v la y, deci l(1 ) = d(v, x) si l(2 ) = d(v, y). Evident, lanturile 1
si 2 sunt elementare. Presupunem prin absurd ca x, y A sau x, y B,
adica numerele d(v, x) si d(v, y) au aceeasi paritate. Atunci [x, y] nu apartine
lantului 1 , deoarece n caz contrar y ar fi penultimul nod al acestui lant si
cum orice sublant (portiune) al unui lant de lungime minima este un lant de
lungime minima ntre extremitatile sale am avea d(v, y) = d(v, x) 1, fals.
Analog, [x, y] nu apartine nici lantului 2 . Fie
= [v, . . . , x, y, . . . , v]
lantul nchis obtinut parcurgand ntai lantul 1 de la v la x, apoi muchia
[x, y] si apoi lantul 2 de la y la v. Avem
l() = l(1 ) + 1 + l(2 ) = d(v, x) + 1 + d(v, y) = numar impar.

TEMA 2. CLASE PARTICULARE DE GRAFURI

41

Deoarece muchia [x, y] nu apartine lanturilor 1 si 2 , rezulta ca prin eliminarea din lantul nchis a eventualelor portiuni comune L1 , . . . , Lr ale
lanturilor 1 si 2 ramane o multime nevida de cicluri (elementare) muchiedisjuncte C1 , . . . , Cs (iar muchia [x, y] apartine unuia din aceste cicluri).
Folosind aceasta descompunere, lungimea lantului nchis poate fi scrisa
sub forma
l() = 2l(L1 ) + + 2l(Lr ) + l(C1 ) + + l(Cs ).
Cum l() este un numar impar, rezulta ca l(C1 )+ +l(Cs ) = numar impar,
deci cel putin unul din ciclurile C1 , . . . , Cs are lungimea impara, contradictie
cu ipoteza. Demonstratia prin reducere la absurd este ncheiata.
Etapa 2) Fie acum G un graf oarecare si G1 = (V1 , E1 ), . . . , Gk = (Vk , Ek )
componentele sale conexe. Deoarece G nu contine cicluri de lungime impara,
rezulta ca si componentele sale conexe G1 , . . . , Gk au aceasta proprietate.
Conform etapei 1) rezulta ca toate componentele conexe Gi cu cel putin doua
noduri sunt grafuri bipartite. Pentru fiecare astfel de componenta conexa,
fie Vi = Ai Bi partitia corespunzatoare grafului bipartit Gi . Daca exista si
componente conexe Gi cu un singur nod (adica card Vi = 1 si Ei = , deoarece
Gi nu contine bucle, buclele fiind cicluri de lungime 1), atunci pentru fiecare
astfel de componenta conexa definim Ai = Vi , Bi = sau Bi = Vi , Ai = .
Fie
A = A1 Ak si B = B1 Bk .
Atunci V = A B este o partitie si fiecare muchie sau arc al grafului G are o
extremitate n A si cealalta extremitate n B, deci graful G este bipartit.
Exemplul 2.3.2. Graful reprezentat n Figura 2.2.2 nu este bipartit, deoarece
contine cicluri de lungime impara (de exemplu ciclul [1, 2, 3, 1] de lungime 3).
Corolarul 2.3.1. Orice graf bipartit conex G = (V, E) are o unica partitie
V = A B ce verifica Definitia 2.3.1.
Demonstratie. Pentru un nod v arbitrar fixat, submultimile A si B definite
n etapa 1) a demonstratiei teoremei anterioare determina unica partitie cu
proprietatea ca v A. Intr-adevar, fie V = A B o partitie arbitrara ce
verifica Definitia 2.3.1 si proprietatea v A . Pentru orice nod x A exista
= [v = v0 , v1 , . . . , v2k = x] lant de lungime minima de la v la x, deci avem,
succesiv:
v = v0 A , v1 B , v2 A , . . . , v2k = x A .
Analog, pentru orice nod y B exista = [v = w0 , w1, . . . , w2p+1 = y] lant
de lungime minima de la v la y, deci avem, succesiv:
v = w0 A , w1 B , w2 A , . . . , w2p+1 = y B .

TEMA 2. CLASE PARTICULARE DE GRAFURI

42

Rezulta ca A A si B B . Cum B = V \ A si B = V \ A rezulta ca


A = A si B = B .
Observatia 2.3.1. Demonstratia teoremei anterioare este constructiva, indicand urmatorul algoritm de determinare dac
a un graf G este bipartit si, n caz afirmativ, a unei partitii V = A B a nodurilor sale.
Se determina componentele conexe G1 , . . . , Gk .
Pentru fiecare componenta Gi = (Vi , Ei ) cu cel putin doua noduri, se
parcurg urmatoarele etape:
Se fixeaza un nod vi Vi .
Se calculeaza distantele d(vi , x) pentru toate nodurile x Vi . De
exemplu,
d(vi , x) =lungimea lantului elementar unic de la vi la x n
arborele BF (vi )
(corespunzator parcurgerii BF a grafului neorientat G pornind din
nodul vi ; daca graful G este orientat se parcurge graful neorientat
obtinut prin eliminarea orientarii arcelor!).
Se calculeaza multimile
Ai = {x Vi |d(vi , x) = numar par} si
Bi = {x Vi |d(vi , x) = numar impar}.
Daca exista o muchie (sau arc) de forma [x, y] Ei a.. x, y Ai
sau x, y Bi , atunci componenta Gi nu este graf bipartit, deci
nici graful G nu este bipartit si algoritmul se ncheie.
In caz contrar componenta Gi este graf bipartit si Vi = Ai Bi
este partitia corespunzatoare acestui graf bipartit.
Pentru fiecare componenta Gi = (Vi , Ei ) cu cate un singur nod, adica
Vi = {vi }, se parcurg urmatoarele etape:
Daca [vi , vi ] Ei (bucla), atunci graful G nu este bipartit si algoritmul se ncheie.
In caz contrar se calculeaza multimile Ai = Vi , Bi = pentru
prima componenta Gi si Bi = Vi , Ai = pentru urmatoarele
componente Gi (se asigura astfel ca A 6= si B 6= ).

TEMA 2. CLASE PARTICULARE DE GRAFURI

43

Toate componentele conexe cu cel putin doua noduri sunt grafuri bipartite, iar toate componentele conexe cu cate un singur nod nu contin
bucle. Atunci graful G este bipartit si o partitie corespunzatoare este
V = A B, cu A = A1 Ak si B = B1 Bk .
Exemplul 2.3.3. Fie graful reprezentat n Figura 2.2.1. Aplicam algoritmul
din observatia anterioara. Fixand nodul v = 1 (pentru singura componenta
conexa), obtinem distantele
d(1, 1) = 0, d(1, 2) = d(1, 5) = 1, d(1, 3) = d(1, 6) = 2,
d(1, 4) = d(1, 7) = 3, d(1, 8) = 4,
deci A = {1, 3, 6, 8} si B = {2, 4, 5, 7}. Nu exista nicio muchie [x, y] a.. x, y
A sau x, y B, deci graful dat este bipartit si unica partitie corespunzatoare
este V = A B. O reprezentare a acestui graf bipartit, cu evidentierea
partitiei nodurilor, este data n Figura 2.3.2.

Figura 2.3.2:

Tema 3
Invarianti ai unui graf

44

Tema 4
Calculul invariantlor pentru
grafurile bipartite

45