AU
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
44
44
49
56
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
(1.1.1)
7
4
Figura 1.1.1:
Figura 1.1.2:
1.2
10
11
1.3
Num
ararea arborilor partiali
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
12
n 1 1 . . .
1 n 1 . . .
M =
...
... ...
1
1 . . .
a grafului Kn este
1
1
( de tipul n n),
...
n1
...
1
...
1
...
...
... n 1
13
= 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
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
Figura 1.4.2:
Figura 1.4.3:
Figura 1.4.4:
1.5
15
16
1.6
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
18
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
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
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.
21
22
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
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).
24
ine circuite
if (EXISTA CIRCUIT) then // acesta cont
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
25
Tema 2
Clase particulare de grafuri
2.1
Grafuri euleriene
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
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
28
29
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).
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 ]
31
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
32
33
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
Figura 2.2.1:
34
35
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
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
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 =
n1
2
si n = impar,
38
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
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
Figura 2.3.1:
40
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 .
42
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
3.1
Definitii si exemple
44
TEMA 3. INVARIANT
I AI UNUI GRAF
45
Figura 3.1.1:
Urmatoarele doua submultimi de noduri sunt multimi stabile n graful G:
M1 = {1, 5}, M2 = {2, 5, 7}.
Numarul de stabilitate al grafului G este
(G) = 3
(deoarece orice multime stabila care contine nodul 1 poate sa mai contina
doar nodul 5, iar orice multime stabila care nu contine nodul 1 poate sa
contina cel mult cate un nod din fiecare din submultimile {2, 3}, {4, 5, 6} si
{7}).
Astfel M2 este o multime stabila de cardinal maxim n graful G.
Definitia 3.1.2. Fie G = (V, E) un graf neorientat simplu.
a) Un cuplaj (multime independent
a de muchii) n graful G este o
submultime C E cu proprietatea ca orice doua muchii din C nu au
nicio extremitate comuna.
b) Numarul
(G) = max{card (C) | C = cuplaj n G}
se numeste num
arul de muchie-independent
a al grafului G.
c) Un cuplaj C n G a.. card (C ) = (G) se numeste cuplaj de cardinal maxim n graful G.
TEMA 3. INVARIANT
I AI UNUI GRAF
46
TEMA 3. INVARIANT
I AI UNUI GRAF
47
TEMA 3. INVARIANT
I AI UNUI GRAF
48
TEMA 3. INVARIANT
I AI UNUI GRAF
3.2
49
Propriet
ati
TEMA 3. INVARIANT
I AI UNUI GRAF
50
TEMA 3. INVARIANT
I AI UNUI GRAF
51
Pentru orice i {1, . . . , n 2k}, nodul zi nu este izolat, deci exista cel
putin o muchie fi E incidenta cu zi . Evident, fi 6 C , i {1, . . . , n2k}
(deoarece muchiile e1 = [x1 , y1 ], . . . , ek = [xk , yk ] nu sunt incidente cu zi ).
Pentru orice i 6= j avem fi 6= fj , deoarece n caz contrar ar rezulta ca
fi = fj = [zi , zj ], deci muchia fi nu ar avea nicio extremitate comuna cu
muchiile e1 , . . . , ek si astfel multimea C {fi } ar un cuplaj de cardinal k + 1
n graful G, contradictie cu alegerea lui C drept cuplaj de cardinal maxim
n G. Fie multimea
A = C {f1 , . . . , fn2k }.
Pentru orice i {1, . . . , k}, nodurile xi si yi sunt extremitati pentru muchia
ei C A, iar pentru orice i {1, . . . , n 2k} nodul zi este extremitate
pentru muchia fi A. Deci A este o acoperire n graful G. Evident,
card (A) = card (C ) + card ({f1 , . . . , fn2k }) = k + n 2k = n k.
Din definitia numarului (G) rezulta ca (G) card (A), deci (G) nk =
n (G), si astfel
(G) + (G) n.
(3.2.1)
Demonstram n continuare inegalitatea contrara.
Fie p = (G) si A = {e1 , . . . , ep } o acoperire de cardinal minim n graful
G. A fiind o acoperire, rezulta ca orice nod al grafului G este extremitate
pentru cel putin o muchie din A , deci subgraful indus de A n G este graful
partial G[A ] = (V, A ) si acest graf nu contine noduri izolate. Mai mult, n
graful G[A ] nu exista lanturi simple de lungime 3, deoarece daca ar exista
un lant simplu [x, y, z, w] cu [x, y], [y, z], [z, w] A (muchii distincte doua
cate doua), atunci multimea A \ {[y, z]} ar ramane o acoperire n graful G
(extremitatile y si z ale muchiei eliminate fiind extremitati si pentru muchiile
[x, y], respectiv [z, w]) si card (A \ {[y, z]}) = p 1, contradictie cu alegerea
lui A drept acoperire de cardinal minim n G. Astfel graful G[A ] nu contine
noduri izolate, dar nici cicluri si nici lanturi deschise simple de lungime mai
mare decat 2, deci toate componentele conexe ale acestui graf sunt grafuri
stea (avand cel putin doua noduri fiecare, deci cel putin o muchie fiecare).
Fie r numarul de componentele conexe ale grafului G[A ]. Conform Teoremei
numarului ciclomatic (Teorema 1.1.1) rezulta ca
0 = (G[A ]) = card (A ) card (V ) + r = p n + r, deci r = n p.
Fie
K1,t1 , . . . , K1,tnp
componentele conexe ale grafului G[A ], t1 , . . . , tnp 1 (t1 + + tnp =
n (n p) = p). Fie multimea
C = {f1 , . . . , fnp
},
TEMA 3. INVARIANT
I AI UNUI GRAF
52
(3.2.2)
TEMA 3. INVARIANT
I AI UNUI GRAF
53
Figura 3.2.1:
Acest graf partial are trei componente conexe, si anume grafurile stea
K1,2 = ({1, 4, 5}, {[1, 4], [4, 5]}), K1,1 = ({2, 3}, {[2, 3]}), K1,1 = ({6, 7}, {[6, 7]}).
Luand cate o muchie din fiecare componenta conexa, obtinem, de exemplu,
cuplajul
C = {[1, 4], [2, 3], [6, 7]}.
Aplicand propozitia si observatia anterioara rezulta ca submultimea de muchii
C este un cuplaj de cardinal maxim n G.
Definitia 3.2.1. Fie G = (V, E) un graf neorientat simplu. Graful G =
(V, P2 (V ) \ E) se numeste graful complementar al lui G.
Observatia 3.2.2. Graful complementar G este tot un graf simplu. Doua
noduri distincte x, y V sunt adiacente n G daca si numai daca nu sunt
adiacente n G. Astfel graful complementar al lui G este chiar G, adica
G=G
Exemplul 3.2.3. Fie graful simplu G reprezentat n Figura 3.1.1. Graful
complementar al lui G este graful simplu G reprezentat n Figura 3.2.2.
TEMA 3. INVARIANT
I AI UNUI GRAF
54
Figura 3.2.2:
Propozitia 3.2.5. Fie G = (V, E) un graf neorientat simplu.
a) O submultime U V este o multime stabila n G daca si numai daca
este o clica n graful complementar G.
b) O submultime U V este o clica n G daca si numai daca este o
multime stabila n graful complementar G.
c) O submultime U V este o multime stabila de cardinal maxim n G
daca si numai daca este o clica de cardinal maxim n graful complementar G.
d) O submultime U V este o clica de cardinal maxim n G daca si
numai daca este o multime stabila de cardinal maxim n graful complementar G.
e) Au loc egalit
atile
(G) = (G) si (G) = (G).
Demonstratie. a) Utilizand definitiile multimii stabile (Definitia 3.1.1), grafului complementar (Definitia 3.2.1) si clicii (Definitia 3.1.5) avem echivalentele:
U = multime stabila n G
orice doua noduri distincte din U nu sunt adiacente n graful G
orice doua noduri distincte din U sunt adiacente n graful G
U = clica n G
TEMA 3. INVARIANT
I AI UNUI GRAF
55
TEMA 3. INVARIANT
I AI UNUI GRAF
56
trei probleme de mai sus, pentru aceste doua probleme dispunem de algoritmi de rezolvare cu complexitate polinomiala. Un astfel de algoritm va fi
prezentat n capitolul urmator.
In cazul particular al grafurilor bipartite, exista algoritmi de rezolvare cu
complexitate polinomiala pentru toate cele cinci probleme. Astfel de algoritmi vor fi prezentati n ultimul capitol.
3.3
Teorema Berge-Norman-Rabin
Observatia 3.3.1. Fie G = (V, E) un graf neorientat simplu si C E. Conform Definitiei 3.1.2, avem echivalenta
C = cuplaj n G dC (v) 1, v V,
unde dC (v) reprezinta gradul nodului v n graful partial (V, C).
Definitia 3.3.1. Fie G = (V, E) un graf neorientat simplu si C E un
cuplaj n G.
a) Un nod v V se numeste nod saturat de cuplajul C daca dC (v) =
1. Notam
SG (C) = {v V | v = nod saturat de cuplajul C}.
b) Un nod v V se numeste nod nesaturat (expus) de cuplajul C
daca dC (v) = 0. Notam
S G (C) = {v V | v = nod nesaturat de cuplajul C}.
Exemplul 3.3.1. Fie graful simplu G reprezentat n Figura 3.3.1 si fie cuplajul
C = {[2, 3], [4, 9], [5, 6], [7, 10], [8, 11]},
muchiile ce alcatuiesc acest cuplaj fiind reprezentate ngrosat n figura.
TEMA 3. INVARIANT
I AI UNUI GRAF
57
Figura 3.3.1:
Avem SG (C) = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11} si S G (C) = {1, 12, 13, 14}.
Observatia 3.3.2. Fie G = (V, E) un graf neorientat simplu si C E un
cuplaj n G. Conform observatiei anterioare, avem
S G (C) = V \ SG (C).
Observatia 3.3.3. Fie G = (V, E) un graf neorientat simplu si
C = {[x1 , y1], . . . , [xk , yk ]} E
un cuplaj n G. Evident, SG (C) = {x1 , y1 , . . . , xk , yk } (deoarece nodurile
x1 , y1 , . . . , xk , yk sunt distincte doua cate doua, conform Definitiei 3.1.2).
Folosind si observatia anterioara rezulta ca pentru orice cuplaj C al grafului
G avem
card (SG (C)) = 2 card (C) si card (S G (C)) = card (V ) 2 card (C).
Observatia 3.3.4. Fie G = (V, E) un graf neorientat simplu si C E un
cuplaj n G a..
card (S G (C)) 1.
Atunci C este un cuplaj de cardinal maxim n G. Intr-adevar, n caz contrar
ar exista un cuplaj C n G cu card (C ) card (C) + 1 si atunci, conform
observatiei anterioare, am avea
card (S G (C )) = card (V ) 2 card (C )
card (V ) 2 card (C) 2
= card (S G (C)) 2 1,
fals.
TEMA 3. INVARIANT
I AI UNUI GRAF
58
TEMA 3. INVARIANT
I AI UNUI GRAF
59
TEMA 3. INVARIANT
I AI UNUI GRAF
60
Figura 3.3.2:
Lantul
= [13, 2, 3, 4, 9, 10, 7, 5]
este un lant alternat relativ la cuplajul C de forma 3 de mai sus, dar nu este
un lant de crestere relativ la cuplajul C deoarece are ca extremitate nodul 5
care este saturat de cuplajul C.
Urmatorul rezultat justifica denumirea unui lant drept lant de crestere
relativ la un cuplaj.
Lema 3.3.1. Fie G = (V, E) un graf neorientat simplu, C E un cuplaj
n G si un lant de crestere n G relativ la cuplajul C. Atunci multimea
CE() este de asemenea un cuplaj n G si
card (CE()) = card (C) + 1
(unde reprezinta operatia de diferenta simetrica a multimilor, adica AB =
(A \ B) (B \ A)).
Demonstratie. Fie un lant de crestere n graful G relativ la cuplajul C.
Conform Observatiei 3.3.6, este un lant deschis elementar de forma =
[x0 , x1 , x2 , . . . , xk ] cu k N , k = impar, xk 6= x0 , x0 , xk S G (C) si
(
[x2i2 , x2i1 ] 6 C, i {1, . . . , (k + 1)/2},
[x2i1 , x2i ] C, i {1, . . . , (k 1)/2}.
Fie C = CE() si fie v V un nod arbitrar fixat. Atunci
dC (v) = dC (v) + dE() (v) 2dCE() (v).
Avem urmatoarele cazuri posibile.
1) v 6 V (). Atunci dE() (v) = 0 si dCE() (v) = 0, deci dC (v) = dC (v)
1.
TEMA 3. INVARIANT
I AI UNUI GRAF
61
k+1
k1
=1+
= 1 + card (E() C).
2
2
Exemplul 3.3.3. Fie graful G si fie cuplajul C din Exemplul 3.3.1 (Figura
3.3.1) si fie lantul de crestere n G relativ la C din Exemplul 3.3.2 (Figura
3.3.2). Multimea
D = CE() = {[1, 2], [3, 4], [5, 9], [6, 7], [10, 11], [8, 12]},
reprezentata prin ngrosarea muchiilor n Figura 3.3.3, este de asemenea un
cuplaj n G si
card (D) = card (C) + 1 = 6.
Figura 3.3.3:
TEMA 3. INVARIANT
I AI UNUI GRAF
62
k1
63
TEMA 3. INVARIANT
I AI UNUI GRAF
Astfel, avem
Fie
(
0,
= 1,
1,
(3.3.1)
r = q q.
Astfel avem q r, deci conform (3.3.2) rezulta ca n multimea de lanturi
independente {1 , 2 , . . . , p } exista cel putin r lanturi de crestere n G relativ
la cuplajul C.
Teorema 3.3.1 (Berge-Norman-Rabin, de caracterizare a cuplajelor
de cardinal maxim). Fie G = (V, E) un graf neorientat simplu. Un cuplaj
C E este un cuplaj de cardinal maxim n G daca si numai daca nu exista
lanturi de crestere n G relativ la cuplajul C.
Demonstratie. Fie C un cuplaj de cardinal maxim n G. Daca ar exista
un lant de crestere n G relativ la cuplajul C, atunci conform Lemei 3.3.1
ar rezulta ca multimea CE() ar fi un cuplaj n G si card (CE()) =
card (C) + 1 > card (C), contradictie. Deci nu exista lanturi de crestere n G
relativ la cuplajul C.
Fie C un cuplaj n G a.. nu exista lanturi de crestere n G relativ la
C. Daca ar exista un cuplaj C n G cu card (C ) > card (C), atunci notand
r = card (C ) card (C), deci r 1, conform Lemei 3.3.2 ar rezulta ca ar
exista r lanturi de crestere n G relativ la cuplajul C, contradictie. Deci C
este un cuplaj de cardinal maxim n G.
TEMA 3. INVARIANT
I AI UNUI GRAF
64
TEMA 3. INVARIANT
I AI UNUI GRAF
65
Observatia 3.3.7. Conform demonstratiei teoremei anterioare, rezulta ca numarul de pasi ai Algoritmului Berge-Norman-Rabin, adica numarul de lanturi
de crestere succesive construite, este
k = card (Ck ) card (C0 ) = (G) card (C0 ).
Observatia 3.3.8. Algoritmul Berge-Norman-Rabin este specific metodei de
programare Greedy. Dificultatea implementarii acestui algoritm consta n
testarea existentei lanturilor de crestere si, n caz afirmativ, n construirea
acestor lanturi.
Tema 4
Invariantii unui graf bipartit
4.1
Teorema lui K
onig
daca (i, j) E ,
daca (i, j) 6 E .
TEMA 4. INVARIANT
II UNUI GRAF BIPARTIT
67
1,
1,
fC : V V N, fC (i, j) =
1,
0,
daca i A, j B, [i, j] C,
daca i = s, j A SC (G),
daca i B SC (G), j = t,
n rest,
jV
68
TEMA 4. INVARIANT
II UNUI GRAF BIPARTIT
jV
jV
jV
jB
jV
jV
2) i B. Atunci
dCf (i) = card {j A | [j, i] Cf } =
=
f (j, i) =
jA
jV
f (j, i)
jV
f (i, t) = 1, i B
X
jA
69
TEMA 4. INVARIANT
II UNUI GRAF BIPARTIT
Rezulta ca
1,
1,
f (i, j) =
1,
0,
Deci
daca i A, j B, [i, j] Cf ,
daca i = s, j A SCf (G),
daca i B SCf (G), j = t,
n rest
(4.1.1)
(4.1.2)
XX
iA jB
(fC (i, j) 0) =
iA jB
i{s}A jB{t}
XX
1 = card (C).
iA jB, [i,j]C
70
TEMA 4. INVARIANT
II UNUI GRAF BIPARTIT
Demonstratie. Afirmatiile din enunt sunt consecinte imediate ale lemei anterioare si ale Teoremei conform careia n reteaua RG exista un flux de valoare
maxima ce are toate componentele numere ntregi.
Teorema 4.1.1 (K
onig). Fie G un graf neorientat bipartit si simplu. Are
loc egalitatea
(G) = (G).
Demonstratie. Fie G = (V, E) un graf neorientat bipartit si simplu, avand
partitia nodurilor V = A B, si fie reteaua RG = (G , s, t, c) construita n
Definitia 4.1.1.
Fie f fluxul de valoare maxima n reteaua RG obtinut prin aplicarea Algoritmul Ford-Fulkerson, pornind cu un flux initial avand toate componentele
numere ntregi, de exemplu fluxul nul. Rezulta ca toate componentele fluxului f sunt numere ntregi, adica f F (RG ).
Fie
C = {[i, j] E | i A, j B, f (i, j) = 1}.
Conform Lemelor 4.1.1 si 4.1.2 rezulta ca multimea C este un cuplaj de
cardinal maxim n graful G si numarul de muchie-independenta (G) verifica
egalitatile
(G) = card (C) = v(f ).
(4.1.3)
Fie
(
(4.1.4)
Fie multimea
U = A T B S.
Demonstram ca U este un suport n graful G prin reducere la absurd. Intradevar, n caz contrar rezulta ca exista o muchie [i, j] E, i A, j B a..
i, j 6 U, deci i A S si j B T . Deoarece i S, rezulta ca exista un
C-lant = [s, . . . , i] n RG relativ la f . Evident, l() 1, deoarece s 6= i.
Avem doua cazuri posibile.
1) l() = 1, adica = [s, i]. Arcul (s, i) este arc direct pentru
(din definitia retelei RG ), deci, conform definitiei notiunii de C-lant, avem
f (s, i) < c(s, i). Cum c(s, i) = 1 (din definitia retelei RG ), iar f (s, i) N,
rezulta ca f (s, i) = 0. Conform conditiei de conservare a fluxului f obtinem
71
TEMA 4. INVARIANT
II UNUI GRAF BIPARTIT
ca 0 = f (s, i) =
yB
f (i, j) = 0, deci f (i, j) = 0 < 1 = c(i, j). Rezulta ca [s, i, j] este un C-lant
n RG relativ la f , contradictie cu faptul ca j T .
2) l() 2, adica = [s, . . . , x, i] cu x 6= s. Atunci x B si arcul (i, x)
este arc invers pentru (din definitia retelei RG ), deci, conform definitiei
notiunii de C-lant, avem f (i, x) = c(i, x). Cum c(i, x) = 1 (din definitia
retelei RG ), rezulta ca fP
(i, x) = 1. Conform
Pconditiei de conservare a fluxului
f obtinem ca f (s, i) =
f (i, y) = 1 +
f (i, y). Dar f (s, i) c(s, i) =
yB
yB\{x}
1+
jAT
= card (U).
jAT
X X
iAS jBT
0+
iAS jBT
iBS
1 = card (A T ) + card (B S)
iBS
(4.1.5)
(4.1.6)
TEMA 4. INVARIANT
II UNUI GRAF BIPARTIT
72
4.2
Consecinte algoritmice
TEMA 4. INVARIANT
II UNUI GRAF BIPARTIT
73
Figura 4.2.1:
Figura 4.2.2:
TEMA 4. INVARIANT
II UNUI GRAF BIPARTIT
Figura 4.2.3:
74
Figura 4.2.4:
TEMA 4. INVARIANT
II UNUI GRAF BIPARTIT
75