Documente Academic
Documente Profesional
Documente Cultură
2022
Tematica
2 Partit, ii 17
2.1 Compuneri ale unui număr natural . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Partit, ii ale unui număr natural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Partit, ii ale unei mult, imi finite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3 Grafuri 24
3.1 Definit, ii generale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 Reprezentarea (memorarea) grafurilor . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3 Grade, secvent, e grafice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4 Arbori s, i arborescent, e 39
6 Grafuri euleriene 41
7 Grafuri hamiltoniene 42
8 Grafuri turneu 43
10 Grafuri bipartite 45
11 Grafuri planare 46
1
Evaluare
• Activitate laborator: 30% (Programe obligatorii, programe suplimentare s, i probleme din Temele
de laborator)
• Teme de casă: 20% (Programe suplimentare s, i probleme nerezolvate ı̂n timpul laboratorului,
din Temele de laborator)
2
Bibliografie
[1] A.V. Aho, J.E. Hopcroft, J.D. Ullman, Data Structures and Algorithms, Addison-Wesley, Massachusetts, 2009.
[2] Gh. Barbu, V. Păun, Calculatoare personale s, i programare ı̂n C/C++, Editura Didactică s, i Pedagogică,
Bucures, ti, 2005.
[3] Gh. Barbu, V. Păun, Programarea ı̂n limbajul C/C++, Editura Matrix Rom, Bucures, ti, 2011.
[4] Gh. Barbu, I. Văduva, M. Bolos, teanu, Bazele informaticii, Editura Tehnică, Bucures, ti, 1997.
[5] C. Bălcău, Combinatorică s, i teoria grafurilor, Editura Universităt, ii din Pites, ti, Pites, ti, 2007.
[6] O. Bâscă, L. Livovschi, Algoritmi euristici, Editura Universităt, ii din Bucures, ti, Bucures, ti, 2003.
[7] E. Ciurea, Algoritmi. Introducere ı̂n algoritmica grafurilor, Editura Tehnică, Bucures, ti, 2001.
[8] E. Ciurea, L. Ciupală, Algoritmi. Introducere ı̂n algoritmica fluxurilor ı̂n ret, ele, Editura Matrix Rom, Bucures, ti,
2006.
[11] T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms, MIT Press, Cambridge, 2009.
[12] C. Croitoru, Tehnici de bază ı̂n optimizarea combinatorie, Editura Universităt, ii ”Al. I. Cuza”, Ias, i, 1992.
[14] D. Fanache, Teoria algoritmică a grafurilor, Editura Paralela 45, Pites, ti, 2016.
[15] H. Georgescu, Tehnici de programare, Editura Universităt, ii din Bucures, ti, Bucures, ti, 2005.
[16] C.A. Giumale, Introducere ı̂n analiza algoritmilor. Teorie s, i aplicat, ii, Editura Polirom, Ias, i, 2004.
[17] F.V. Jensen, T.D. Nielsen, Bayesian Networks and Decision Graphs, Springer, New York, 2007.
[20] D.E. Knuth, The Art Of Computer Programming. Vol. 4A: Combinatorial Algorithms, Addison-Wesley, Mas-
sachusetts, 2011.
[22] L. Livovschi, H. Georgescu, Sinteza s, i analiza algoritmilor, Editura S, tiint, ifică s, i Enciclopedică, Bucures, ti, 1986.
[23] D. Logofătu, Algoritmi fundamentali ı̂n Java: Aplicat, ii, Editura Polirom, Ias, i, 2007.
3
4
[25] L. Panaitopol, A. Szilard, D. S, erbănescu, Probleme de combinatorică pentru juniori, Editura Gil, Zalău, 2019.
[26] V. Pop, L. Popa, D. Popa, M. Olteanu, G. Mincu, M. Burlică, R. Strungariu, M. Ispas, Teme s, i probleme pentru
concursurile student, es, ti de matematică. Volumul II. Concursuri internat, ionale, Editura StudIS, Ias, i, 2013.
[27] V. Pop, M. Teleucă, Probleme de combinatorică elementară. Numărare, grafuri, jocuri, Editura Matrix Rom,
Bucures, ti, 2013.
[28] D.R. Popescu, Combinatorică s, i teoria grafurilor, Societatea de S, tiint, e Matematice din România, Bucures, ti,
2005.
[29] D.R. Popescu, R. Marinescu-Ghemeci, Combinatorică s, i teoria grafurilor prin exercit, ii s, i probleme, Editura
Matrix Rom, Bucures, ti, 2014.
[30] C.P. Popovici, H. Georgescu, L. State, Bazele informaticii. Vol. I s, i II, Editura Universităt, ii din Bucures, ti,
Bucures, ti, 1990-1991.
[31] S.S. Ray, Graph Theory with Algorithms and its Applications, Springer, New Delhi, 2013.
[32] O.A. Schipor, S.G. Pentiuc, F. Gı̂ză-Belciug, Limbajul C - Tehnici de programare eficientă, Editura Matrix Rom,
Bucures, ti, 2014.
[34] N.O. Stănăs, ilă s, .a., Teme s, i probleme pentru concursurile student, es, ti de matematică. Volumul III. Concursuri
nat, ionale, Editura StudIS, Ias, i, 2013.
[35] R. Stephens, Essential Algorithms: A Practical Approach to Computer Algorithms, Wiley, Indianopolis, 2013.
[36] T. Toadere, Grafe. Teorie, algoritmi s, i aplicat, ii, Editura Albastră, Cluj-Napoca, 2002.
[37] I. Tomescu, Combinatorică s, i teoria grafurilor, Tipografia Universităt, ii din Bucures, ti, Bucures, ti, 1978.
[38] I. Tomescu, Probleme de combinatorică s, i teoria grafurilor, Editura Didactică s, i Pedagogică, Bucures, ti, 1981.
[39] I. Tomescu, Data structures, Editura Universităt, ii din Bucures, ti, Bucures, ti, 2004.
[40] ***, Handbook of combinatorics, edited by R.L. Graham, M. Grőtschel and L. Lovász, Elsevier, Amsterdam,
1995.
[41] ***, 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.
[42] ***, Revista MATINF. Publicat, ie bianuală de matematică s, i informatică pentru elevi s, i profesori, editată de
Departamentul Matematică-Informatică, Universitatea din Pites, ti, Editura Universităt, ii din Pites, ti.
Tema 1
1.1 Preliminarii
În această lect, ie vom prezenta formule de numărare s, i algoritmi de generare (enumerare) pentru
cele mai cunoscute familii de obiecte combinatoriale: produs cartezian, submult, imi, aranjamente
(fără repetit, ie, cu repetit, ie sau ordonate), combinări (fără repetit, ie sau cu repetit, ie), permutări (fără
repetit, ie sau cu repetit, ie). Reamintim ı̂n continuare câteva not, iuni uzuale.
Definit, ia 1.1.1. Fie A o mult, ime finită. Numărul de elemente ale lui A, notat cu card (A), se
numes, te cardinalul mult, imii A.
Definit, ia 1.1.2. Fie A un alfabet (adică o mult, ime finită) s, i n ∈ N⋆ . O secvent, ă de forma
a = a1 a2 . . . an , cu a1 , a2 , . . . , an ∈ A,
se numes, te cuvânt de lungime n peste alfabetul A. Lungimea cuvântului a se notează cu |a|.
Observat, ia 1.1.1. Evident, cuvântul a1 a2 . . . an poate fi identificat cu vectorul (a1 , a2 , . . . , an ).
Definit, ia 1.1.3. Fie A o mult, ime (alfabet) total ordonată s, i x = (x1 , . . . , xn ), y = (y1 , . . . , ym )
doi vectori (cuvinte) cu elemente (litere) din A. Spunem că x este mai mic decât y ı̂n ordine
lexicografică s, i notăm x ≺ y dacă
(x1 , . . . , xn ) = (y1 , . . . , yn ) s, i m > n
sau dacă există un indice i, i ≤ min{m, n}, astfel ı̂ncât
(x1 , . . . , xi−1 ) = (y1 , . . . , yi−1) s, i xi < yi .
Exemplul 1.1.1. Considerând alfabetul A = {a, b, c, . . . , z} s, i ordinea alfabetică uzuală a < b < c <
· · · < z, avem
ion ≺ ionela ≺ ionescu.
Definit, ia 1.1.4. Fie x ∈ R s, i n ∈ N. Notăm
1, dacă n = 0, 1, dacă n = 0,
[x]n = x(x − 1) . . . (x − n + 1), dacă n ≥ 1, [x]n = x(x + 1) . . . (x + n − 1), dacă n ≥ 1.
| {z } | {z }
n factori n factori
[x]n se numes, te polinomul factorial descrescător de gradul n, iar [x]n se numes, te polinomul
factorial crescător de gradul n.
Exemplul 1.1.2. Avem [1,5]3 = 1,5 · 0,5 · (−0,5) = −0,375, iar [1,5]3 = 1,5 · 2,5 · 3,5 = 13,125.
5
TEMA 1. ARANJAMENTE, COMBINĂRI, PERMUTĂRI 6
A1 × A2 × . . . × An = {(a1 , a2 , . . . , an )|a1 ∈ A1 , a2 ∈ A2 , . . . , an ∈ An }.
Exemplul 1.2.1. {a, b} × {+, −} × {c} = {(a, +, c), (a, −, c), (b, +, c), (b, −, c)}.
are un element următor dacă s, i numai dacă există un indice k ∈ {n, . . . , 1} astfel ı̂ncât ck < mk .
În acest caz, luând cel mai mare indice k cu această proprietate, elementul următor, ı̂n ordine
lexicografică, este
(c1 , . . . , ck−1, ck + 1, 1, . . . , 1).
În pseudocod, algoritmul poate fi descris sub forma
PRODUS CARTEZIAN(n, m) :
for i = 1, n do c[i] ← 1;
AFISARE(c, n);
repeat
k ← n;
while (c[k] = m[k]) and (k > 0) do k ← k − 1;
if (k > 0) then
c[k] ← c[k] + 1;
for i = k + 1, n do c[i] ← 1;
AFISARE(c, n);
while (k > 0);
unde funct, ia de afis, are este
AFISARE(c, n) :
for i = 1, n do
afis, ează c[i];
TEMA 1. ARANJAMENTE, COMBINĂRI, PERMUTĂRI 7
Observat, ia 1.2.1. Pentru generarea produsului cartezian A1 × A2 × . . . × An al unor mult, imi finite
arbitrare
se poate folosi algoritmul anterior, bazat pe generarea indicilor, ı̂nlocuind afis, area indicilor ci cu
afis, area elementelor corespunzătoare aici din mult, imile Ai , adică ı̂nlocuind funct, ia AFIS, ARE(c, n)
cu funct, ia
AFISARE(c, a, n) :
for i = 1, n do
afis, ează a[i, c[i]];
SUBMULT, IMI(a, n) :
for i = 1, n do c[i] ← 1;
AFISARE(c, a, n);
repeat
k ← n;
while (c[k] = 2) and (k > 0) do k ← k − 1;
if (k > 0) then
c[k] ← 2;
for i = k + 1, n do c[i] ← 1;
AFISARE(c, a, n);
while (k > 0);
unde funct, ia de afis, are este
AFISARE(c, a, n) :
for i = 1, n do
if c[i] = 1 then afis, ează a[i];
(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2), (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2).
1.5 Aranjamente
Propozit, ia 1.5.1 (de numărare a aranjamentelor). Fie m, n ∈ N. Atunci numărul de cuvinte
de lungime n cu litere distincte peste un alfabet cu m litere este egal cu [m]n .
Demonstrat, ie. Fie B = {1, 2, . . . , m} s, i C1 = {(c1 , c2 , . . . , cn )|ci ∈ B ∀ i, ci 6= cj ∀ i 6= j}. Avem
C1 = {(c1 , c2 , . . . , cn )|c1 ∈ {1, . . . , m}, c2 ∈ {1, . . . , m} \ {c1 }, c3 ∈ {1, . . . , m} \ {c1 , c2 }, . . . , cn ∈
{1, . . . , m} \ {c1 , . . . , cn−1 }}, deci card (C1 ) = m(m − 1)(m − 2) . . . (m − n + 1) = [m]n .
TEMA 1. ARANJAMENTE, COMBINĂRI, PERMUTĂRI 9
Definit, ia 1.5.1. Cuvintele numărate ı̂n propozit, ia anterioară se numesc aranjamente (fără repetit, ie)
de m luate câte n. De asemenea s, i numărul lor, adică [m]n , se numes, te tot aranjamente (fără
repetit, ie) de m luate câte n s, i se mai notează cu Anm .
Observat, ia 1.5.1. Pentru n > m avem [m]n = m . . . (m − m) . . . (m − n + 1) = 0.
Exemplul 1.5.1. Pentru m = 4 s, i n = 2, aranjamentele sunt, ı̂n ordine lexicografică:
(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3).
Deci avem [4]2 = 4 · 3 = 12 aranjamente.
Un algoritm pentru generarea aranjamentelor va fi prezentat ı̂n Sect, iunea 1.7.
1.6 Permutări
Propozit, ia 1.6.1 (de numărare a permutărilor). Fie n ∈ N. Atunci numărul de cuvinte ce
cont, in exact o dată fiecare literă a unui alfabet cu n litere este egal cu n!, unde
n! = 1 · 2 · 3 · · · · · n (n factorial), 0! = 1.
Demonstrat, ie. Luăm m = n ı̂n Propozit, ia 1.5.1 s, i folosim egalitatea [n]n = n(n − 1) . . . 1 = n!.
Definit, ia 1.6.1. Cuvintele numărate ı̂n propozit, ia anterioară se numesc permutări (fără repetit, ie)
de ordinul n. De asemenea s, i numărul lor, adică n!, se numes, te tot permutări (fără repetit, ie)
de n.
Exemplul 1.6.1. Pentru n = 3, permutările mult, imii standard {1, 2, 3} sunt, ı̂n ordine lexicografică:
(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1).
Deci avem 3! = 1 · 2 · 3 = 6 permutări.
Algoritmul 1.6.1 (de generare a permutărilor). Fie mult, imea standard A = {1, 2, . . . , n}. Vom
utiliza din nou ”regula următorului”.
• Prima permutare, ı̂n ordine lexicografică, este
(p1 , p2 , . . . , pn ) = (1, 2, . . . , n).
1.7 Combinări
Propozit, ia 1.7.1 (de numărare a combinărilor). Fie m, n ∈ N. Atunci
numărul de cuvinte strict crescătoare de lungime n peste un alfabet (ordonat) cu m litere
= numărul de submult
, imi cu n elemente ale unei mult, imi cu m elemente
[m]n def m
= = .
n! n
Demonstrat, ie. Fie B = {1, 2, . . . , m}. Notăm mult, imile din enunt, astfel:
C3 = {(c1 , c2 , . . . , cn )|ci ∈ B ∀ i, ci < ci+1 ∀ i}, S3 = {S|S ⊆ B, card (S) = n}.
Între aceste mult, imi definim funct, iile µ : C3 → S3 , ν : S3 → C3 prin:
• ∀ (c1 , c2 , . . . , cn ) ∈ C3 , µ(c1 , c2 , . . . , cn ) = {c1 , c2 , . . . , cn };
• ∀ {c1 , c2 , . . . , cn } ∈ S3 cu c1 < c2 < . . . < cn , ν({c1 , c2 , . . . , cn }) = (c1 , c2 , . . . , cn ).
Aceste funct, ii sunt inverse una celeilalte, deci sunt bijective s, i astfel card (C3 ) = card (S3 ).
Permutând fiecare combinare (c1 , c2 , . . . , cn ) ∈ C3 ı̂n toate cele n! moduri posibile, obt, inem fără
repetare toate aranjamentele din mult, imea C1 = {(a1 , a2 , . . . , an )|ai ∈ B ∀ i, ai 6= aj ∀i 6= j}.
[m]n
Deci card (C3 )·n! = card (C1 ). Conform Propozit, iei 1.5.1, card (C1 ) = [m]n , deci card (C3 ) = .
n!
TEMA 1. ARANJAMENTE, COMBINĂRI, PERMUTĂRI 11
Definit, ia 1.7.1. Oricare obiecte din cele 2 tipuri numărate ı̂n propozit, ia anterioarăse
numesc com-
m
binări (fără repetit, ie) de m luate câte n. De asemenea s, i numărul lor, adică , se numes, te
n
n
tot combinări (fără repetit, ie) de m luate câte n s, i se mai notează cu Cm .
m
Observat, ia 1.7.1. Pentru n > m avem = 0, deoarece [m]n = 0.
n
m! m m!
Pentru n ≤ m, deoarece [m]n = m(m − 1) . . . (m − n + 1) = avem = .
(m − n)! n n!(m − n)!
Exemplul 1.7.1. Pentru m = 5 s, i n = 3, corespondent, ele din demonstrat, ia anterioară sunt redate ı̂n
următorul tabel:
(c1 , c2 , c3 ) ∈ C3 S ∈ S3
(1,2,3) {1, 2, 3}
(1,2,4) {1, 2, 4}
(1,2,5) {1, 2, 5}
(1,3,4) {1, 3, 4}
(1,3,5) {1, 3, 5}
(1,4,5) {1, 4, 5}
(2,3,4) {2, 3, 4}
(2,3,5) {2, 3, 5}
(2,4,5) {2, 4, 5}
(3,4,5) {3, 4, 5}.
5 [5]3 5·4·3
Deci avem = = = 10 combinări.
3 3! 1·2·3
Algoritmul 1.7.1 (de generare a combinărilor). Fie mult, imea standard B = {1, 2, . . . , m} s, i
n ≤ m. Vom utiliza din nou ”regula următorului”.
• Prima combinare (de m luate câte n), ı̂n ordine lexicografică, este
are o combinare următoare dacă s, i numai dacă există un indice k ∈ {n, . . . , 1} astfel ı̂ncât
ck < m − n + k. În acest caz, luând cel mai mare indice k cu această proprietate, combinarea
următoare, ı̂n ordine lexicografică, este
COMBINĂRI(m, n) :
for i = 1, n do c[i] ← i;
AFISARE(c, n);
repeat
k ← n;
while (c[k] = m − n + k) and (k > 0) do k ← k − 1;
if (k > 0) then
c[k] ← c[k] + 1;
for i = k + 1, n do c[i] ← c[i − 1] + 1;
AFISARE(c, n);
while (k > 0);
Algoritmul 1.7.2 (de generare a aranjamentelor). Fie mult, imea standard B = {1, 2, . . . , m} s, i
n ≤ m. Conform demonstrat, iei anterioare, putem genera aranjamentele de m luate câte n prin
generarea combinărilor s, i permutarea fiecărei combinări. Folosind Algoritmii 1.7.1 s, i 1.6.1 obt, inem
următoarea descriere ı̂n pseudocod.
ARANJAMENTE(m, n) :
for i = 1, n do c[i] ← i;
PERMUTĂRI(n);
repeat
k ← n;
while (c[k] = m − n + k) and (k > 0) do k ← k − 1;
if (k > 0) then
c[k] ← c[k] + 1;
for i = k + 1, n do c[i] ← c[i − 1] + 1;
PERMUTĂRI(n);
while (k > 0);
unde PERMUTĂRI(n) este funct, ia din Algoritmul 1.6.1 ı̂nlocuind funct, ia de afis, are cu
AFISARE(c, p, n) :
for i = 1, n do
afis, ează c[p[i]];
(1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 1, 3), (1, 1, 2, 2), (1, 1, 2, 3), (1, 1, 3, 3), (1, 2, 2, 2), (1, 2, 2, 3),
(1, 2, 3, 3), (1, 3, 3, 3), (2, 2, 2, 2), (2, 2, 2, 3), (2, 2, 3, 3), (2, 3, 3, 3), (3, 3, 3, 3).
3 [3]4 3·4·5·6
Deci avem = = = 15 combinări cu repetit, ie.
4 4! 1·2·3·4
Algoritmul 1.8.1 (de generare a combinărilor cu repetit, ie). Fie mult, imea standard B = {1, 2, . . . , m}.
Vom utiliza din nou ”regula următorului”.
• Prima combinare cu repetit, ie (de m luate câte n), ı̂n ordine lexicografică, este
(c1 , c2 , . . . , cn ) = (1, 1, . . . , 1).
are o combinare cu repetit, ie următoare dacă s, i numai dacă există un indice k ∈ {n, . . . , 1} astfel
ı̂ncât ck < m. În acest caz, luând cel mai mare indice k cu această proprietate, combinarea cu
repetit, ie următoare, ı̂n ordine lexicografică, este
Observat, ia 1.8.1. Analog Observat, iei 1.6.1, algoritmul anterior poate fi adaptat pentru generarea
combinărilor cu repetit, ie pentru mult, imi oarecare.
• ...
• pentru fiecare alegere de mai sus, alegem cei tm indici (din restul de n − t1 − . . . − tm−1 ) ai
n − t1 − . . . − tm−1
literelor egale cu m; rezultă moduri posibile, deci obt, inem
tm
n n − t1 n − t1 − . . . − tm−1
...
t1 t2 tm
Astfel
n n − t1 n − t1 − . . . − tm−1
card (C5 ) = ...
t1 t2 tm
n! (n − t1 )! (n − t1 − . . . − tm−1 )!
= · · ...·
t1 !(n − t1 )! t2 !(n − t1 − t2 )! tm !(n − t1 − . . . − tm )!
n!
=
t1 !t2 ! . . . tm !
(deoarece (n − t1 − . . . − tm )! = 0! = 1).
Definit, ia 1.9.1. Cuvintele numărate ı̂n propozit, ia anterioară se numesc permutări cu repetit , ie
n
(anagrame) de n luate câte t1 , t2 , . . . , tm . De asemenea s, i numărul lor, adică , se
t1 , t2 , . . . , tm
numes, te tot permutări cu repetit, ie de n luate câte t1 , t2 , . . . , tm .
n
Observat, ia 1.9.1. Luând t1 = t2 = · · · = tm = 1 obt, inem n = m s, i = n!, deci
1, 1, . . . , 1
permutările (fără repetit
, ie) sunt
un caz particular al permutărilor cu repetit, ie. Pe de altă parte,
n n!
luând m = 2 obt, inem = , deci s, i combinările (fără repetit, ie) sunt un caz particular al
t1 , t2 t1 !t2 !
permutărilor cu repetit, ie.
Exemplul 1.9.1. Pentru m = 3 s, i t1 = 2, t2 = t3 = 1, deci n = 4, permutările cu repetit, ie sunt, ı̂n
ordine lexicografică:
(1, 1, 2, 3), (1, 1, 3, 2), (1, 2, 1, 3), (1, 2, 3, 1), (1, 3, 1, 2), (1, 3, 2, 1),
(2, 1, 1, 3), (2, 1, 3, 1), (2, 3, 1, 1), (3, 1, 1, 2), (3, 1, 2, 1), (3, 2, 1, 1).
4 4!
Deci avem = = 12 permutări cu repetit, ie.
2, 1, 1 2!1!1!
Algoritmul 1.9.1 (de generare a permutărilor cu repetit, ie). Fie mult, imea standard B =
{1, 2, . . . , m} s, i t1 , t2 , . . . , tm ∈ N, n = t1 + t2 + · · · + tm . Vom utiliza din nou ”regula următorului”.
• Prima permutare cu repetit, ie (de n luate câte t1 , t2 , . . . , tm ), ı̂n ordine lexicografică, este
• Existent, a s, i forma permutării cu repetit, ie următoare ı̂n ordine lexicografică pentru o permutare
cu repetit, ie curentă arbitrară se determină exact ca la permutările fără repetit, ie (Algoritmul
1.6.1).
De exemplu, pentru permutarea cu repetit, ie curentă
(4, 4, 1, 3, 6, 5, 5, 3, 2, 1)
avem k = 4 (p4 = 3 < p5 = 6), j = 7 (pj = 5 > pk = 3), deci permutarea cu repetit, ie următoare se
obt, ine interschimbând ı̂ntâi pk = p4 = 3 cu pj = p7 = 5, apoi răsturnând subvectorul (6, 5, 3, 3, 2, 1)
dintre pozit, iile k + 1 s, i n (de exemplu prin interschimbările 6 ↔ 1, 5 ↔ 2, 3 ↔ 3), adică aceată
permutare cu repetit, ie următoare este
(4, 4, 1, 5, 1, 2, 3, 3, 5, 6).
TEMA 1. ARANJAMENTE, COMBINĂRI, PERMUTĂRI 16
Observat, ia 1.9.2. Analog Observat, iei 1.6.1, algoritmul anterior poate fi us, or adaptat pentru generarea
permutărilor cu repetit, ie pentru mult, imi arbitrare.
Tema 2
Partit, ii
n = n1 + n2 + · · · + nm ,
17
TEMA 2. PARTIT, II 18
Algoritmul 2.1.2 (de generare a compunerilor cu termeni nenuli). Analog algoritmului anterior
se obt, ine următorul algoritm pentru generarea compunerilor lui n cu m termeni nenuli, m ≤ n.
COMPUNERI TERMENI NENULI(n, m) :
for i = 1, m − 1 do t[i] ← 1;
t[m] ← n − m + 1;
AFISARE(t, m);
repeat
k ← m;
while (t[k] = 1) and (k > 1) do k ← k − 1;
if (k > 1) then
t[k − 1] ← t[k − 1] + 1;
t[m] ← t[k] − 1;
if (k < m) then t[k] ← 1;
AFISARE(t, m);
while (k > 1);
n = n1 + n2 + · · · + nk ,
Observat, ia 2.2.1. Deoarece ı̂ntr-o partit, ie ca mai sus nu contează ordinea dintre termeni, putem
presupune că aces, tia sunt scris, i ı̂n ordine crescătoare.
Definit, ia 2.2.2. Fie n, k ∈ N⋆ . Notăm cu P (n, k) numărul de partit, ii ale lui n cu k termeni, iar cu
P (n) numărul tuturor partit, iilor lui n.
6=6=1+5=2+4=3+3=1+1+4=1+2+3=2+2+2
= 1 + 1 + 1 + 3 = 1 + 1 + 2 + 2 = 1 + 1 + 1 + 1 + 2 = 1 + 1 + 1 + 1 + 1 + 1,
Propozit, ia 2.2.1 (relat, ia de recurent, ă a numerelor P (n, k)). Pentru orice n ∈ N⋆ s, i orice
k ∈ {1, . . . , n − 1} avem
P (n, k) = P (n − k, 1) + P (n − k, 2) + · · · + P (n − k, k).
TEMA 2. PARTIT, II 20
Interpretarea acestor funct, ii este următoarea: aplicarea funct, iei α unei partit, ii a lui n cu k termeni
constă ı̂n mics, orarea cu 1 a fiecărui termen s, i eliminarea termenilor care astfel devin egali cu zero,
obt, inându-se o partit, ie a lui n − k cu cel mult k termeni. Reciproc, aplicarea funct, iei β unei partit, ii
a lui n − k cu cel mult k termeni constă ı̂n mărirea cu 1 a fiecărui termen s, i adăugarea de termeni
egali cu 1 pentru a obt, ine k termeni, astfel obt, inându-se o partit, ie a lui n cu k termeni.
k
S
Funct, iile α s, i β sunt bine definite s, i inverse una celeilalte, deci card (P(n, k)) = card P(n − k, i) .
i=1
Cum mult, imile P(n − k, 1), . . . , P(n − k, k) sunt evident disjuncte două câte două, rezultă că
k
P
P (n, k) = P (n − k, i).
i=1
Observat, ia 2.2.3. Relat, ia de recurent, ă din Propozit, ia 2.2.1, ı̂mpreună cu condit, iile init, iale evidente
P (n, 1) = P (n, n) = 1, P (n, k) = 0 ∀ k > n permit calculul tuturor numerelor P (n, k), deci s, i al
numerelor P (n), conform Corolarului 2.2.2. De exemplu, tabelul numerelor P (n, k) s, i P (n) pentru
n ≤ 7 (s, i k ≤ 7) este:
Numerele P (n, k) nenule, aflate doar pe diagonala principală s, i sub această diagonală (adică 1 ≤ k ≤
n) formează triunghiul numerelor P (n, k).
Algoritmul 2.2.1 (de generare a partit, iilor lui n cu k termeni). Fie n, k ∈ N⋆ , k ≤ n. Pentru
generarea ı̂n ordine lexicografică a celor P (n, k) partit, ii ale lui n cu k termeni
(t1 , t2 , . . . , tk ), n = t1 + t2 + · · · + tk , ti ∈ N⋆ ∀i, t1 ≤ t2 ≤ · · · ≤ tk
A = {a, b, c} = {a, b} ∪ {c} = {a, c} ∪ {b} = {a} ∪ {b, c} = {a} ∪ {b} ∪ {c},
prin:
• ∀ {A1 , . . . , Ak } ∈ S(n, k), α({A1 , . . . , Ak }) =
{A1 , . . . , Ak } \ {Ai }, dacă n ∈ Ai s, i Ai = {n},
=
(i, {A1 , . . . , Ai \ {n}, . . . , Ak }), dacă n ∈ Ai s, i Ai 6= {n};
Numerele S(n, k) nenule, aflate doar pe diagonala principală s, i sub această diagonală (1 ≤ k ≤ n)
formează triunghiul numerelor lui Stirling de spet, a a doua.
Algoritmul 2.3.1 (de generare a partit, iilor unei mult, imi ı̂ntr-un număr fixat de părt, i). Fie
A = {1, 2, . . . , n} s, i 1 ≤ k ≤ n. Pentru scrierea unei partit, ii
A = A1 ∪ · · · ∪ Ak
vom folosi convent, ia că ı̂n fiecare parte Ai elementele sunt ordonate crescător, iar ordinea dintre
părt, ile A1 , . . . , Ak este dată de ordinea dintre cele mai mici elemente ale acestor mult, imi.
De exemplu, partit, ia
{1, 2, 3, 4, 5} = {3, 2} ∪ {5} ∪ {4, 1}
va fi scrisă sub forma
{1, 2, 3, 4, 5} = {1, 4} ∪ {2, 3} ∪ {5}. (2.3.1)
Pentru reprezentarea unei partit, ii A = A1 ∪ · · · ∪ Ak scrise conform convent, iei de mai sus, vom folosi
vectorul caracteristic v = (v1 , . . . , vn ), unde
unde funct, ia de afis, are, ce transformă vectorul caracteristic v ı̂n partit, ia corespunzătoare, este
AFISARE(v) :
for j = 1, k do // afis, ăm partea Aj
afis, ează ”{”
for i = 1, n do
if (v[i] = j) then afis, ează i;
afis, ează ”}”;
Tema 3
Grafuri
Grafurile sunt modele matematice cu o gamă largă de aplicat, ii. Această aplicabilitate a condus
la dezvoltarea accelerată a teoriei grafurilor, atât din punct de vedere al rezultatelor teoretice cât
s, i al algoritmicii, grafurile impunându-se drept modele de bază ı̂n informatică, ı̂n special ı̂n teoria
structurilor de date s, i a analizei algoritmilor.
• V este o mult, ime finită s, i nevidă, elementele sale numindu-se nodurile (vârfurile, punctele)
grafului G;
• E este o colect, ie (mult, ime multiplă, multiset) finită de perechi neordonate, posibil egale, de
noduri, elementele sale numindu-se muchiile (legăturile directe, liniile) grafului G.
Observat, ia 3.1.1. Într-o pereche neordonată, notată [x, y], nu contează ordinea dintre elemente, adică
[x, y] = [y, x].
Definit, ia 3.1.2. Un graf orientat (digraf, pseudodigraf) este o pereche G = (V, E) unde:
• V este o mult, ime finită s, i nevidă, elementele sale numindu-se vârfurile (nodurile, punctele)
grafului G;
• E este o colect, ie (mult, ime multiplă, multiset) finită de perechi ordonate de vârfuri, elementele
sale numindu-se arcele (legăturile directe ale) grafului G.
Observat, ia 3.1.2. Într-o pereche ordonată, notată (x, y), contează ordinea dintre elemente, adică
(x, y) 6= (y, x) pentru x 6= y.
Definit, ia 3.1.3. Numărul de noduri ale unui graf (neorientat sau orientat) se numes, te ordinul
grafului, iar numărul de muchii sau arce se numes, te dimensiunea grafului.
Definit, ia 3.1.4. a) Dacă e = [x, y] este o muchie a unui graf neorientat, atunci nodurile x s, i y
se numesc extremităt, ile muchiei e s, i spunem că muchia e este incidentă cu nodurile x s, i
y.
24
TEMA 3. GRAFURI 25
b) Dacă e = (x, y) este un arc al unui graf orientat, atunci nodul x se numes, te extremitatea
init, ială iar nodul y se numes, te extremitatea finală a arcului e s, i spunem că arcul e este
incident cu x spre exterior s, i cu y spre interior.
c) O buclă a unui graf (neorientat sau orientat) este o muchie sau un arc având extremităt, ile
egale (adică o muchie de forma [x, x], respectiv un arc de forma (x, x)).
d) Două noduri x s, i y ale unui graf (neorientat sau orientat) se numesc adiacente (vecine) dacă
există o muchie sau un arc incident cu x s, i cu y (adică o muchie de forma [x, y], respectiv un
arc de forma (x, y) sau de forma (y, x)).
Definit, ia 3.1.5. Dacă ı̂n colect, ia (mult, imea multiplă) de muchii sau arce a unui graf (neorientat
sau orientat) există două sau mai multe elemente egale (s, i aflate pe pozit, ii diferite), atunci acestea
se numesc muchii sau arce multiple.
Definit, ia 3.1.6. Un graf (neorientat sau orientat) fără bucle se numes, te multigraf (neorientat,
respectiv orientat).
Definit, ia 3.1.7. Un graf (neorientat sau orientat) se numes, te simplu (sau strict) dacă nu cont, ine
nici bucle s, i nici muchii sau arce multiple.
Observat, ia 3.1.3. a) Un graf neorientat simplu este o pereche G = (V, E), unde V este o mult, ime
finită s, i nevidă (de elemente numite noduri) iar E ⊆ P2 (V ) este o mult, ime finită (de elemente numite
muchii), unde
P2 (V ) = {{x, y}|x, y ∈ V, x 6= y}
Definit, ia 3.1.8. Fie G = (V, E) un graf (orientat sau neorientat). O reprezentare grafică a lui
G se obt, ine reprezentând nodurile sale prin puncte distincte (ı̂n plan sau pe o altă suprafat, ă dată),
iar muchiile [x, y] sau arcele (x, y) prin segmente (de curbă continuă) distincte neorientate, respectiv
orientate, de la punctul ce reprezintă nodul x până la punctul ce reprezintă nodul y.
Observat, ia 3.1.4. În reprezentările grafice, nodurile unui graf sunt reprezentate adesea ı̂ncadrate ı̂n
cerculet, e (sau pătrătele).
Exemplul 3.1.1. Graful neorientat G = (V, E), cu V = {1, 2, 3, 4, 5, 6} s, i E = {e1 , e2 , e3 , e4 , e5 , e6 , e7 , e8 , e9 },
unde e1 = [1, 2], e2 = [1, 4], e3 = [2, 2], e4 = [2, 5], e5 = [3, 6], e6 = [3, 6], e7 = [4, 5], e8 = [4, 5], e9 =
[4, 5] (E este o mult, ime multiplă!) are reprezentarea grafică din Figurile 3.1.1 (cu nodurile reprezen-
tate prin puncte) s, i 3.1.2 (cu nodurile reprezentate ı̂n cerculet, e).
TEMA 3. GRAFURI 26
e3
1 e1 2 3
e2 e4 e5 e6
e7
4 e8 5
e9 6
Figura 3.1.1:
e3
e1
1 2 3
e2 e4 e5 e6
e7
e8
4 5 6
e9
Figura 3.1.2:
Acest graf are ordinul 6 s, i dimensiunea 9. El cont, ine bucla e3 , muchiile multiple e5 , e6 s, i muchiile
multiple e7 , e8 , e9 , deci nu este nici multigraf, nici simplu. Nodurile 1 s, i 2 sunt adiacente, iar nodurile
1 s, i 5 nu sunt adiacente.
Exemplul 3.1.2. Graful orientat G = (V, E), cu V = {1, 2, 3, 4, 5} s, i
E = {(1, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (5, 4)}
este un graf simplu având reprezentarea grafică din Figurile 3.1.3 cu nodurile reprezentate prin
puncte) s, i 3.1.4 (cu nodurile reprezentate ı̂n cerculet, e).
TEMA 3. GRAFURI 27
1 2
5
3 4
Figura 3.1.3:
1 2
3 4
Figura 3.1.4:
Definit, ia 3.1.9. Fie G1 = (V1 , E1 ) s, i G2 = (V2 , E2 ) două grafuri (ambele orientate sau ambele
neorientate).
Definit, ia 3.1.10. Fie G = (V, E) un graf (neorientat sau orientat) s, i U ⊆ V o submult, ime nevidă
de noduri. Subgraful indus (generat) de U ı̂n G este subgraful G[U] = (U, F ), unde F este
colect, ia tuturor muchiilor sau arcelor din E ce au ambele extremităt, i ı̂n U.
Definit, ia 3.1.11. Fie G = (V, E) un graf (orientat sau neorientat) s, i F ⊆ E o colect, ie de muchii
sau de arce.
a) Subgraful indus (generat) de F ı̂n G este subgraful G[F ] = (U, F ), unde U este mult, imea
tuturor nodurilor din V ce sunt extremităt, i pentru cel put, in o muchie sau un arc din F .
b) Graful part, ial indus (generat) de F ı̂n G este graful part, ial (V, F ).
Exemplul 3.1.3. Pentru graful neorientat din Exemplul 3.1.1, subgraful generat de submult, imea de
noduri {1, 3, 4, 5} are reprezentarea din Figura 3.1.5.
TEMA 3. GRAFURI 28
1 3
e2
e7
e8
4 5
e9
Figura 3.1.5:
Pentru graful orientat din Exemplul 3.1.2, subgraful generat de submult, imea de arce {(2, 3), (5, 4)}
are reprezentarea din Figura 3.1.6, iar graful part, ial generat de aceeas, i submult, ime de arce are
reprezentarea din Figura 3.1.7.
2 1 2
5 5
3 4 3 4
Definit, ia 3.1.12. Fie G = (V, E) un graf (neorientat sau orientat) s, i U ⊆ V o submult, ime de
noduri a.ı̂. U 6= V . Subgraful obt, inut din G prin eliminarea nodurilor mult, imii U este
subgraful G \ U = (V \ U, F ), unde F este colect, ia tuturor muchiilor sau arcelor din E ce nu sunt
incidente cu niciun nod din U.
Definit, ia 3.1.13. Fie G = (V, E) un graf (neorientat sau orientat) s, i F ⊆ E o colect, ie de muchii
sau arce. Graful part, ial obt, inut din G prin eliminarea muchiilor sau arcelor din F este
G \ F = (V, E \ F ) (adică subgraful ce cont, ine toate nodurile lui G s, i muchiile sau arcele lui G care
nu apart, in lui F ).
Exemplul 3.1.4. Pentru graful orientat din Exemplul 3.1.2, subgraful obt, inut prin eliminarea nodului
2 are reprezentarea din Figura 3.1.8.
3 4
Figura 3.1.8:
TEMA 3. GRAFURI 29
Pentru graful neorientat din Exemplul 3.1.1, graful part, ial obt, inut prin eliminarea muchiilor
e2 , e4 , e6 , e8 are reprezentarea din Figura 3.1.9.
e3
e1
1 2 3
e5
e7
4 5 6
e9
Figura 3.1.9:
Exemplul 3.2.1. Matricea de adiacent, ă asociată grafului neorientat din Exemplul 3.1.1 este
0 1 0 1 0 0
1 1 0 0 1 0
0 0 0 0 0 2
A= 1 0 0 0 3 0 ,
0 1 0 3 0 0
0 0 2 0 0 0
iar matricea de adiacent, ă asociată grafului orientat din Exemplul 3.1.2 este
0 1 0 0 0
0 0 1 1 1
A= 1 1 0 0 0 .
0 0 0 0 0
0 0 0 1 0
Observat, ia 3.2.2. Evident, orice graf neorientat are matricea de adiacent, ă simetrică (aij = aji ∀ i, j).
Demonstrat, ie. a) Orice graf neorientat simplu având mult, imea de noduri V este bine determinat de
matricea sa de adiacent, ă, care este o matrice binară (cu elemente 0 s, i 1), simetrică s, i cu elementele
de pe diagonala principală egale cu zero. Cum o astfel de matrice este bine determinată de cele
n(n − 1)
n −1+···+2+1 =
2
elemente 0 sau 1 de deasupra diagonalei principale, utilizând Propozit, ia 1.4.1 obt, inem că numărul
n(n−1)
de astfel de matrice este egal cu 2 2 .
Punctul b) se demonstrează analog, folosind acum faptul că matricea de adiacent, ă a unui graf
orientat simplu este o matrice binară cu elementele de pe diagonala principală egale cu zero, deci
este bine determinată de cele n2 − n elemente 0 sau 1 nesituate pe această diagonală.
a) Dacă G este neorientat, atunci matricea de incident, ă asociată grafului G este matricea
B = (bij ) i = 1, n definită prin
j = 1, m
0, dacă ej nu este incidentă cu vi ,
bij = 1, dacă ej nu este buclă s, i este incidentă cu vi ,
2, dacă ej este o buclă incidentă cu vi ,
b) Dacă G este orientat s, i fără bucle, atunci matricea de incident, ă asociată grafului G este
matricea B = (bij ) i = 1, n definită prin
j = 1, m
0, dacă ej nu este incidentă cu vi ,
bij = 1, dacă ej este incidentă cu vi spre exterior,
−1, dacă ej este incidentă cu vi spre interior,
Exemplul 3.2.2. Matricea de incident, ă a grafului neorientat din Exemplul 3.1.1 este
1 1 0 0 0 0 0 0 0
1 0 2 1 0 0 0 0 0
0 0 0 0 1 1 0 0 0
B= 0
,
1 0 0 0 0 1 1 1
0 0 0 1 0 0 1 1 1
0 0 0 0 1 1 0 0 0
Observat, ia 3.2.3. Fie G = (V, E) un graf (neorientat sau orientat), unde V = {v1 , . . . , vn } s, i E =
{e1 , . . . , em }, E 6= ∅. O altă reprezentare a grafului G este matricea T ce ret, ine ı̂n fiecare coloană
extremităt, ile unei muchii sau arc, adică T = (tkj ) k = 1, 2 definită prin t1j = x, t2j = y, unde
j = 1, m
ej = [x, y] (pentru muchii) sau ej = (x, y) (pentru arce), ∀ j ∈ {1, . . . , m}. Pentru graful din
Exemplul 3.1.1 matricea T este
1 1 2 2 3 3 4 4 4
T = ,
2 4 2 5 6 6 5 5 5
Observat, ia 3.2.4. O altă formă frecvent utilizată ı̂n reprezentarea grafurilor simple este dată de
listele de adiacent, ă (memorate static sau dinamic). Lista de adiacent, ă a unui nod x este formată
din toate nodurile y pentru care există muchie sau arc de la x la y (y se numes, te succesor direct
al lui x). Pentru graful orientat din Exemplul 3.1.2, listele de adiacent, ă sunt
L(1) = {2}, L(2) = {3, 4, 5}, L(3) = {1, 2}, L(4) = ∅, L(5) = {4},
unde L(i) reprezintă lista de adiacent, ă a nodului i. Pentru grafurile orientate simple, deseori se
memorează s, i listele de predecesori direct, i. Lista de predecesori direct, i a unui nod x este formată
TEMA 3. GRAFURI 32
din toate nodurile y pentru care există arc de la y la x (y se numes, te predecesor direct al lui x).
Pentru graful din Exemplul 3.1.2, aceste liste sunt
L̄(1) = {3}, L̄(2) = {1, 3}, L̄(3) = {2}, L̄(4) = {2, 5}, L̄(5) = {2}.
Evident, pentru grafurile neorientate not, iunile de succesor direct s, i predecesor direct coincid, fiind s, i
sinonime cu not, iunile de vecin sau adiacent.
Observat, ia 3.2.5. Alegerea uneia sau alteia dintre formele de reprezentare a grafurilor descrise mai
sus depinde de eficient, a s, i de us, urint, a implementării operat, iilor necesare de prelucrare a acestor
forme, deci de tipul problemei modelate prin grafuri s, i de algoritmul de rezolvare utilizat.
unde a(x) reprezintă numărul de muchii e ∈ E ce nu sunt bucle s, i sunt incidente cu x, iar b(x)
este numărul de bucle e ∈ E ce sunt incidente cu x.
Exemplul 3.3.1. Pentru graful neorientat din Exemplul 3.1.1, gradele nodurilor sunt: d(1) = 2,
d(2) = 4, d(3) = 2, d(4) = 4, d(5) = 4, d(6) = 2.
Pentru graful orientat din Exemplul 3.1.2, gradele nodurilor sunt:
Definit, ia 3.3.2. Fie G = (V, E) un graf. Un nod x ∈ V cu dG (x) = 0 se numes, te nod izolat, iar
un nod y ∈ V cu dG (y) = 1 se numes, te nod terminal.
Propozit, ia 3.3.1. Fie G = (V, E) un graf, V = {v1 , . . . , vn }, s, i fie A = (aij )i,j=1,n matricea de
adiacent, ă a grafului G.
n
P
a) Dacă G este neorientat, atunci d(vi ) = aii + aij , ∀ i ∈ {1, . . . , n}.
j=1
TEMA 3. GRAFURI 33
n
P n
P
b) Dacă G este orientat, atunci d+ (vi ) = aij , d− (vi ) = aji , ∀ i ∈ {1, . . . , n}.
j=1 j=1
Demonstrat, ie. Egalităt, ile din enunt, sunt evidente, conform definit, iilor gradelor s, i matricei de adia-
cent, ă.
Observat, ia 3.3.1. Dacă graful G este simplu, atunci aii = 0 ∀ i s, i egalitatea de la punctul a) al
n
P
propozit, iei anterioare devine d(vi ) = aij .
j=1
P
Propozit, ia 3.3.2 (Euler). Fie G = (V, E) un graf având dimensiunea m. Atunci d(x) = 2m.
x∈V
P + P −
În plus, dacă G este orientat atunci d (x) = d (x) = m.
x∈V x∈V
Demonstrat, ie. a) Considerăm că G este neorientat. Atunci fiecare muchie e = [vi , vj ] ∈ E (din cele
m muchii) contribuie cu 1 la d(vi ) s, i cu 1 la d(vj ) (cu 2 la d(vi ) dacă vi = vj , adică e = buclă), deci
P
cu 2 la suma d(x). Rezultă că această sumă este egală cu 2m.
x∈V
b) Considerăm că G este orientat. Deoarece fiecare arc e = (vi , vj ) ∈ E contribuie cu 1 la
+
P + P −
d (vi ), deci la d (x), s, i tot cu 1 la d− (vj ), deci la d (x), rezultă că aceste sume sunt egale
x∈V x∈V
P
cu numărul total de arce, adică cu m. Cum d(x) = d+ (x) + d− (x) ∀ x ∈ V , obt, inem s, i d(x) =
x∈V
P + P −
d (x) + d (x) = 2m.
x∈V x∈V
n
P
Demonstrat, ie. ”⇒” Conform Propozit, iei 3.3.2 avem di = 2m, unde m este dimensiunea grafului
i=1
având gradele nodurilor d1 , d2 , . . . , dn , deci suma considerată este un număr par.
Pn
”⇐” Demonstrăm că dacă di = 2m cu m ∈ N, atunci există un graf neorientat G = (V, E) cu
i=1
V = {v1 , . . . , vn } astfel ı̂ncât dG (vi ) = di , ∀ i ∈ {1, . . . , n}, prin induct, ie după m.
Pentru m = 0 rezultă că di = 0, ∀ i ∈ {1, . . . , n}, deci luând E = ∅ avem dG (vi ) = 0 = di ,
∀ i ∈ {1, . . . , n}.
Presupunem afirmat, ia adevărată pentru m − 1 s, i o demonstrăm pentru m, unde m ∈ N∗ . Fie
Pn
di = 2m. Avem două cazuri.
i=1
Cazul 1) Există j, k ∈ {1, . . . , n}, j 6= k, astfel ı̂ncât dj ≥ 1 s, i dk ≥ 1. Fie
′ di − 1, dacă i ∈ {j, k},
di =
di , dacă i ∈ {1, . . . , n} \ {j, k}.
n
P n
P
Atunci d′i = di − 2 = 2(m − 1), deci, conform ipotezei de induct, ie, există un graf neorientat
i=1 i=1
G′ = (V, E ′ ) cu V = {v1 , . . . , vn } astfel ı̂ncât dG′ (vi ) = d′i , ∀ i ∈ {1, . . . , n}. Fie graful G =
(V, E ′ ∪ {e}), unde e = [vj , vk ], e 6∈ E ′ . Evident, avem dG (vj ) = dG′ (vj ) + 1 = d′j + 1 = dj ,
dG (vk ) = dG′ (vk ) + 1 = d′k + 1 = dk s, i dG (vi ) = dG′ (vi ) = d′i = di pentru orice i ∈ {1, . . . , n} \ {j, k}.
Astfel dG (vi ) = di , ∀ i ∈ {1, . . . , n}.
TEMA 3. GRAFURI 34
Cazul 2) Există j ∈ {1, . . . , n} astfel ı̂ncât di = 0 pentru orice i ∈ {1, . . . , n} \ {j}. Atunci
n
P
dj = di = 2m. Fie graful G = (V, E), cu V = {v1 , . . . , vn } s, i E = {e1 , . . . , em }, unde ek = [vj , vj ],
i=1
∀ k ∈ {1, . . . , m}, iar buclele e1 , . . . , em sunt distincte două câte două. Evident, avem dG (vj ) = 2m =
dj s, i dG (vi ) = 0 = di pentru orice i ∈ {1, . . . , n} \ {j}. Astfel, din nou, dG (vi ) = di , ∀ i ∈ {1, . . . , n}.
Demonstrat, ia prin induct, ie este ı̂ncheiată.
Observat, ia 3.3.2. Demonstrat, ia propozit, iei anterioare este constructivă, ea indicând un algoritm de
generare a unui graf neorientat cu gradele nodurilor date.
Exemplul 3.3.2. Numerele 1, 1, 1, 2, 4, 4, 5, 5 nu pot fi gradele nodurilor unui graf neorientat, deoarece
8
P
suma di = 23 este un număr impar.
i=1
Exemplul 3.3.3. Numerele 1, 1, 1, 1, 2, 2, 3, 13 pot fi gradele nodurilor unui graf neorientat, deoarece
8
P
suma di = 24 este un număr par. Mai mult, conform demonstrat, iei propozit, iei anterioare (partea
i=1
”⇐”), un graf având gradele nodurilor numerele date se construies, te adăugând succesiv câte o muchie
ı̂ntre două noduri de grade nenule, grade care se mics, orează cu 1, până când fie toate gradele devin
egale cu zero, fie rămâne un grad nenul d′i , par, care este anulat s, i el prin d′i /2 bucle. Acest procedeu
este evident, iat ı̂n tabelul următor:
Pas Gradele rămase Muchia adăugată
1 1, 1, 1, 1, 2, 2, 3, 13 [v1 , v2 ]
2 0, 0, 1, 1, 2, 2, 3, 13 [v3 , v4 ]
3 0, 0, 0, 0, 2, 2, 3, 13 [v5 , v6 ]
4 0, 0, 0, 0, 1, 1, 3, 13 [v5 , v6 ]
5 0, 0, 0, 0, 0, 0, 3, 13 [v7 , v8 ]
6 0, 0, 0, 0, 0, 0, 2, 12 [v7 , v8 ]
7 0, 0, 0, 0, 0, 0, 1, 11 [v7 , v8 ]
8 0, 0, 0, 0, 0, 0, 0, 10 [v8 , v8 ] de 5 ori
– 0, 0, 0, 0, 0, 0, 0, 0 –
Graful obt, inut are matricea de adiacent, ă
0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0
A= 0
.
0 0 0 0 2 0 0
0 0 0 0 2 0 0 0
0 0 0 0 0 0 0 3
0 0 0 0 0 0 3 5
n−1
P
avem dn = ai , unde, pentru orice i ∈ {1, . . . , n − 1}, ai reprezintă numărul de muchii de forma
i=1
n−1
P
[vn , vi ]. Cum ai ≤ di pentru orice i ∈ {1, . . . , n − 1}, rezultă că dn ≤ di .
i=1
n
P n−1
P
”⇐” Arătăm că dacă di = 2m cu m ∈ N, d1 ≤ d2 ≤ . . . ≤ dn s, i dn ≤ di , atunci există un
i=1 i=1
multigraf neorientat G = (V, E) cu V = {v1 , . . . , vn } astfel ı̂ncât dG (vi ) = di , ∀ i ∈ {1, . . . , n}.
Pentru n = 2 rezultă că d1 = d2 , deci considerând multigraful G = (V, E), cu V = {v1 , v2 } s, i
E = {e1 , . . . , em }, unde m = d1 = d2 s, i ek = [v1 , v2 ], ∀k ∈ {1, . . . , m}, iar muchiile multiple e1 , . . . , em
sunt distincte două câte două, obt, inem că dG (v1 ) = m = d1 s, i dG (v2 ) = m = d2 .
Pentru n ≥ 3 demonstrăm afirmat, ia prin induct, ie după m.
Pentru m = 0 rezultă că di = 0, ∀ i ∈ {1, . . . , n}, deci luând E = ∅ avem dG (vi ) = 0 = di ,
∀ i ∈ {1, . . . , n}.
Presupunem afirmat, ia adevărată pentru m − 1 s, i o demonstrăm pentru m, unde m ∈ N∗ . Fie
Pn n−1
P Pn
di = 2m, d1 ≤ d2 ≤ . . . ≤ dn s, i dn ≤ di . Deoarece di = 2m ≥ 2, rezultă că dn ≥ 1. Cum
i=1 i=1 i=1
n−1
P
dn ≤ di , rezultă că s, i dn−1 ≥ 1. Fie
i=1
di , dacă 1 ≤ i ≤ n − 2,
d′i =
di − 1, dacă i ∈ {n − 1, n}.
n
P n
P
Atunci d′i = di − 2 = 2(m − 1). Avem două cazuri.
i=1 i=1
n−1
P n−1
P
Cazul 1) dn−2 < dn . Atunci d′1 ≤ d′2 ≤ . . . ≤ d′n s, i d′n = dn − 1 ≤ di − 1 = d′i , deci, conform
i=1 i=1
ipotezei de induct, ie, există un multigraf neorientat G′ = (V, E ′ ) cu V = {v1 , . . . , vn } astfel ı̂ncât
dG′ (vi ) = d′i , ∀ i ∈ {1, . . . , n}.
Cazul 2) dn−2 = dn , deci s, i dn−1 = dn . Atunci d′1 ≤ d′2 ≤ . . . ≤ d′n−2 = dn s, i d′n−1 = d′n = dn − 1,
deci
max d′i = d′n−2.
i=1,n
n
P n−3
P n−3
P
Avem d′i − 2d′n−2 = di + dn + (dn − 1) + (dn − 1) − 2dn = di + dn − 2 ≥ −1, deoarece dn ≥ 1.
i=1 i=1 i=1
n
P n
P
Pe de altă parte, d′i − 2d′n−2 = 2(m − 1) − 2d′n−2 , deci d′i − 2d′n−2 este un număr par. Astfel
i=1 i=1
n
P
rezultă că d′i − 2d′n−2 ≥ 0. Obt, inem că
i=1
n−3
X
max d′i = d′n−2 ≤ d′i + d′n−1 + d′n ,
i=1,n
i=1
deci, conform ipotezei de induct, ie (aplicată pentru numerele d′1 , d′2 , . . . , d′n rearanjate ı̂n ordine cres-
cătoare), rezultă din nou că există un multigraf neorientat G′ = (V, E ′ ) cu V = {v1 , . . . , vn } astfel
ı̂ncât dG′ (vi ) = d′i , ∀ i ∈ {1, . . . , n}.
În ambele cazuri, fie multigraful G = (V, E ′ ∪ {e}), unde e = [vn−1 , vn ], e 6∈ E ′ . Evident,
avem dG (vn−1 ) = dG′ (vn−1 ) + 1 = d′n−1 + 1 = dn−1, dG (vn ) = dG′ (vn ) + 1 = d′n + 1 = dn s, i
dG (vi ) = dG′ (vi ) = d′i = di pentru orice i ∈ {1, . . . , n − 2}. Astfel dG (vi ) = di , ∀ i ∈ {1, . . . , n}.
Demonstrat, ia prin induct, ie este ı̂ncheiată.
TEMA 3. GRAFURI 36
Observat, ia 3.3.3. Demonstrat, ia propozit, iei anterioare este constructivă, ea indicând un algoritm de
generare a unui multigraf neorientat cu gradele nodurilor date.
Exemplul 3.3.4. Numerele 1, 1, 1, 1, 2, 2, 3, 13 din exemplul anterior nu pot fi gradele nodurilor unui
P8 P7
multigraf neorientat, deoarece suma di = 24 este un număr par, dar d8 = 13 > 11 = di .
i=1 i=1
Exemplul 3.3.5. Numerele 1, 1, 1, 2, 4, 5, 5, 5 pot fi gradele nodurilor unui multigraf neorientat, deoarece
8
P P7
suma di = 24 este un număr par s, i d8 = 5 ≤ 19 = di . Mai mult, conform demonstrat, iei propo-
i=1 i=1
zit, iei anterioare (partea ”⇐”), un multigraf având gradele nodurilor numerele date se construies, te
adăugând succesiv câte o muchie ı̂ntre două noduri de grade nenule maxime, grade care se mics, orează
cu 1, până când gradele devin toate egale cu zero. Acest procedeu este evident, iat ı̂n tabelul următor:
Pas Gradele rămase Muchia adăugată
1 1, 1, 1, 2, 4, 5, 5, 5 [v7 , v8 ]
2 1, 1, 1, 2, 4, 5, 4, 4 [v6 , v8 ]
3 1, 1, 1, 2, 4, 4, 4, 3 [v6 , v7 ]
4 1, 1, 1, 2, 4, 3, 3, 3 [v5 , v8 ]
5 1, 1, 1, 2, 3, 3, 3, 2 [v6 , v7 ]
6 1, 1, 1, 2, 3, 2, 2, 2 [v5 , v8 ]
7 1, 1, 1, 2, 2, 2, 2, 1 [v6 , v7 ]
8 1, 1, 1, 2, 2, 1, 1, 1 [v4 , v5 ]
9 1, 1, 1, 1, 1, 1, 1, 1 [v7 , v8 ]
10 1, 1, 1, 1, 1, 1, 0, 0 [v5 , v6 ]
11 1, 1, 1, 1, 0, 0, 0, 0 [v3 , v4 ]
12 1, 1, 0, 0, 0, 0, 0, 0 [v1 , v2 ]
– 0, 0, 0, 0, 0, 0, 0, 0 –
Multigraful obt, inut are matricea de adiacent, ă
0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 1 0 0 0
A= 0 0 0
.
1 0 1 0 2
0 0 0 0 1 0 3 1
0 0 0 0 0 3 0 2
0 0 0 0 2 1 2 0
Exemplul 3.3.7. Verificăm dacă secvent, a (1, 1, 2, 3, 4, 5, 5, 5) este secvent, ă grafică. Conform teoremei
anterioare avem echivalentele:
Cum ultima secvent, ă, S5 , este o secvent, ă grafică, fiind secvent, a gradelor grafului simplu de ordin
4 s, i dimensiune 0, rezultă că s, i secvent, a init, ială, S1 , este secvent, ă grafică. Mai mult, conform
demonstrat, iei teoremei amintite (partea ”⇐”), avem succesiv:
v2 v3
v1 v4
v8 v5
v7 v6
Figura 3.3.1:
Tema 4
Arbori s, i arborescent, e
39
Tema 5
40
Tema 6
Grafuri euleriene
41
Tema 7
Grafuri hamiltoniene
42
Tema 8
Grafuri turneu
43
Tema 9
44
Tema 10
Grafuri bipartite
45
Tema 11
Grafuri planare
46
Tema 12
47
Tema 13
48