Professional Documents
Culture Documents
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
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
(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
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
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
44
Tema 4
Calculul invariantlor pentru
grafurile bipartite
45