Documente Academic
Documente Profesional
Documente Cultură
y i1 ≤ y i2 ≤ ... ≤ y in şi strict crescător dacă y ii < y i2 < ... < y in . Cuvintele strict
crescătoare de lungime n formate cu m simboluri se mai numesc combinări de
m luate câte n , iar cele crescătoare se numesc combinări cu repetiţie de m luate
câte n .
74
Propozţia 3. Numărul cuvintelor strict crescătoare de lungime n formate
[m] n
cu m simboluri este egal cu . Acest număr este egal şi cu numărul
n!
submulţimilor cu n elemente ale unei mulţimi cu m elemente.
m
Numerele [m]n se mai notează prin şi se numesc numere binomiale
n
cu parametrii m şi n .
Propoziţia 4. Numărul cuvintelor crescătoare de lungime n formate cu
75
II. PRINCIPIUL INCLUDERII ŞI AL EXCLUDERII ŞI APLICAŢII
Principiul includerii şi al excluderii constituie o generalizare a identităţii:
A∪ B = A + B − A∩ B (3)
unde A, B ⊂ X .
Teorema 1 (Principiul includerii şi al excluderii). Dacă AI ( 1 ≤ i ≤ q )
sunt submulţimi ale unei mulţimi X , are loc relaţia:
q q
∪ Ai = ∑ Ai −
i =1 i =1
∑
1≤i < j ≤ q
Ai ∩ Aj +
(4)
q
∑ Ai ∩ Aj ∩ Ak − ... + ( −1)
q −1
+
1≤i < j < k ≤ q
∩A
i =1
i
Aplicaţii
1. Determinarea funcţiei lui Euler ϕ(n )
Fiind dat un număr natural n, ϕ(n ) reprezintă numărul numerelor
naturale mai mici ca n şi relativ prime cu n. Dacă descompunerea lui n în
i i i
factori primi distincţi este n = p11 p 22 ... p qq şi se notează cu Ai mulţimea
numerelor naturale mai mici sau egale cu n care sunt multipli de pi , se
n n
obţine Ai = , Ai ∩ A j = etc. Deci
pi pi p j
q
ϕ ( n ) = n − A1 ∪ A2 ∪ ... ∪ Aq = n − ∑ Ai + ∑ Ai ∩ Aj − ...
i =1 1≤i < j ≤ q
q
n n n
= n−∑ + ∑ − ... + (−1) q
i =1 pi 1≤i < j ≤ q pi p j p1 ⋅ ... ⋅ pq
adică
1 1 1
ϕ(n ) = n1 − 1 − ... 1 − . (5)
p1 p 2 p q
2. Determinarea numărului D (n ) al permutărilor a n elemente fără puncte
fixe
Fie p o permutare a mulţimii X = {1,..., n}, adică o bijecţie
p : X → X . Permutarea are un punct fix în i dacă p (i ) = i . Dacă notăm
cu Ai mulţimea permutărilor care au un punct fix în i rezultă că
n n
D ( n ) = n !− A1 ∪ ... ∪ An = n !− ∑ Ai + ∑ Ai ∩ Aj − ... + (−1) n ∩A i
i =1 1≤i < j ≤ n i =1
76
Se obţine, Ai1 ∩ Ai2 ∩ ... ∩ Aik = (n − k )! deoarece o permutare din
mulţimea Ai ∩ ... ∩ Ai are puncte fixe în poziţiile i1 , i2 ,..., ik , celelalte
1 k
77
Numerele s (n, k ) se pot calcula prin recurenţă, utilizând relaţiile
s (n.0 ) = 0 , s (n, n ) = 1 şi s (n + 1, k ) = s (n, k − 1) − ns (n, k ) , ultima relaţie
obţinându-se prin egalarea coeficienţilor lui x k în cei doi membri ai egalităţii
[x]n+1 = [x]n ( x − n) . Se obţine tabelul următor, unde s(n, k ) = 0 pentru n < k .
s (n, k ) k =0 1 2 3 4 5 …
n =1 0 1 0 0 0 0 …
2 0 -1 1 0 0 0 …
3 0 2 -3 1 0 0 …
4 0 -6 11 -6 1 0 …
5 0 24 -50 35 -10 1 …
… … … … … … … …
Numărul lui Stirling de speţa a doua, notat S (n, m ) , este numărul
partiţiilor unei mulţimi cu n elemente în m clase. Să observăm că atât ordinea
claselor, cât şi ordinea elementelor într-o clasă a unei partiţii sunt indiferente. De
exemplu, dacă avem X = {a, b, c, d } , partiţiile cu trei clase ale acestei mulţimi
sunt: {(a ), (b ), (c, d )}, {(a ), (c ), (b, d )}, {(a ), (d ), (b, c )}, {(b ), (c ), (a, d )},
{(b ), (d ), (a, c )}, {(c ), (d ), (a, b )}, deci S (4,3) = 6 .
Numerele lui Stirling de speţa a doua pot fi calculate prin recurenţă astfel.
Considerând mulţimea celor S (n, k − 1) partiţii ale unei mulţimi cu n elemente în
k − 1 clase, putem obţine S (n, k − 1) partiţii a n + 1 elemente în k clase, adăugând
la fiecare partiţie o nouă clasă formată dintr-un singur element şi anume al (n + 1) -
lea. Să considerăm acum o partiţie a n elemente în k clase. Deoarece putem adăuga
al (n + 1) -lea element la clasele deja existente în k moduri diferite şi toate partiţiile
a n + 1 elemente cu k clase se obţin fără repetiţii printr-unul din cele două
procedee expuse, rezultă că
S (n + 1, k ) = S (n, k − 1) + kS (n, k )
pentru 1 < k < n şi S (n,1) = S (n, n ) = 1 . Aceste relaţii permit calculul prin
recurenţă al numerelor S (n, m ) obţinându-se tabelul următor:
S (n, m ) m =1 2 3 4 5 …
n =1 1 0 0 0 0 …
2 1 1 0 0 0 …
3 1 3 1 0 0 …
4 1 7 6 1 0 …
5 1 15 25 10 1 …
… … … … … … …
78
Pentru calculul direct al numerelor lui Stirling de speţa a doua, vom arăta
s n,m
că S (n, m ) = . Într-adevăr, oricărei surjecţii f a mulţimii X = {x1 ,..., x n } pe
m!
mulţimea Y = {y1 ,..., y n } îi corespunde o partiţie a mulţimii X cu m clase şi
anume f −1
( y1 ) f −1 ( y 2 )... f −1 ( y m ) . Deoarece într-o partiţie nu contează ordinea
claselor, rezultă că n! funcţii surjective de la X pe Y vor genera o aceeaşi partiţie a
mulţimii X. Ţinând seama de (7) rezultă:
1 1 m −1 m
S (n, m ) = s n ,m = ∑ (−1) k (m − k ) n (9)
m! m! k =0 k
Propoziţia 6. Polinoamele x n se exprimă ca sume de polinoamele [x ]k cu
coeficienţii S (n, k ) , adică:
n
x n = ∑ S (n, k )[x ]k (10)
k =1
Ca urmare a rezultatului din propoziţia 6 putem scrie şi relaţia
n n
m n = ∑ m(m − 1)...(m − k + 1) S (n, k ) = ∑ [n]k S (n, k ) (11)
k =1 k =1
unde B0 = 1 .
Pentru a introduce numerele lui Fibonacci vom rezolva următoarea
problemă de numărare:
79
Propoziţia 8. Se notează cu f (n, k ) numărul submulţimilor lui
X n = {1,..., n} care au k elemente şi nu conţin doi intregi consecutivi. Există
relaţia:
n − k + 1
f (n, k ) = .
k
80
IV. PARTITII ALE UNUI INTREG
O partiţie a numărului natural n cu m părţi este o scriere a lui n sub forma:
n = a1 + a 2 + ... + a m
unde numerele naturale a1 , a 2 ,..., a m (numite părţile partiţiei) verifică inegalităţile:
a1 ≥ a 2 ≥ ... ≥ a m ≥ 1 .
Din cauza condiţiei impuse ca numerele a1 ,..., a m să formeze un şir
descrescător, două partiţii ale lui n se deosebesc numai prin natura părţilor
a1 ,..., a m , nu şi prin ordinea lor. Prin P(n, m) se va nota numărul partiţiilor
numărului natural şi pozitiv n în m părţi. Aceste numere verifică mai multe relaţii
de recurenţă, printre care şi cea dată de propoziţia următoare.
Propoziţia 10. Numerele P (n, m) verifică recurenţa:
P (n,1) + P(n,2) + ... + P(n, k ) = P(n + k , k ) , (15)
iar P (n,1) = P (n, n) = 1 .
Această propoziţie ne permite calculul prin recurenţă al numerelor P (n, k )
linie cu linie, aşa cum se face în tabelul următor.
P(n, m) m = 1 2 3 4 5 6 7 … P(n)
n =1 1 0 0 0 0 0 0 … 1
2 1 1 0 0 0 0 0 … 2
3 1 1 1 0 0 0 0 … 3
4 1 2 1 1 0 0 0 … 5
5 1 2 2 1 1 0 0 … 7
6 1 3 3 2 1 1 0 … 11
7 1 3 4 3 2 1 1 … 15
… … … … … … … … … …
Prin P (n) s-a notat numărul tuturor partiţiilor lui n, adică
P (n) = P(n,1) + P(n,2) + ... + P(n, n) .
O serie de proprietăţi ale partiţiilor unui întreg sunt date de propoziţiile
următoare.
Propoziţia 11. Numărul de partiţii ale lui n, astfel încât cea mai mare
parte să fie egală cu k, este egal cu numărul partiţiilor lui n cu k părţi.
De exemplu, pentru n = 7 şi k = 4 , partiţiile lui 7 cu cea mai mare parte
egală cu 4 sunt: 4 + 1 + 1 + 1 , 4 + 2 + 1 şi 4 + 3 , iar partiţiile lui 7 cu 4 părţi sunt:
4 + 1 + 1 + 1 , 3 + 2 + 1 + 1 şi 2 + 2 + 2 + 1 .
Propoziţia 12. Numărul partiţiilor lui n cu părţi distincte este egal cu
numărul partiţiilor lui n cu părţi impare.
Propoziţia 13 (Euler). Se notează prin Q p (n) numărul partiţiilor lui n cu
un număr par de părţi distincte şi prin Qi (n) numărul partiţiilor lui n cu un
număr impar de părţi distincte. Are loc relaţia Q p (n) = Qi (n) dacă n nu se poate
81
3k 2 ± k
reprezenta sub forma n = cu k număr întreg. În caz contrar, are loc
2
relaţia Q p (n) = Qi (n) + (−1) k .
Corolar 1 (Identitatea lui Euler). Dacă produsul infinat
(1 − x )(1 − x 2 )...(1 − x n )...
este scris sub forma unei serii, se obţine
∞
1 + ∑ ψ (n) x n = 1 − x − x 2 + x 5 + x 7 − x12 − x 15 + x 22 + x 26 − ... ,
n =1
3k 2 ± k
unde ψ (n) = (−1) k dacă n = şi ψ (n) = 0 dacă n nu se poate reprezenta
2
3k 2 ± k
sub forma n = cu k număr întreg.
2
Propoziţia 14. Funcţia generatoare a numerelor P (n) este:
∞
1
∑ P (n) x
n =0
n
=
(1 − x )(1 − x 2 )...(1 − x n )...
, (16)
82
Partea a doua: Elemente de teoria grafurilor
83
Un graf parţial al unui graf G este un graf H care are aceeaşi mulţime de
vârfuri cu G, deci V ( H ) = V (G ) şi E ( H ) ⊆ E (G ) . Deci un graf parţial al lui G
este G sau se obţine din G prin suprimarea anumitor muchii din G. Un subgraf al
unui graf G este un graf H astfel încât V ( H ) ⊆ V (G ) , iar muchiile lui H sunt toate
muchiile lui G care au ambele extremităţi în mulţimea de vârfuri V (H ) . Deci un
subgraf H al unui graf G este graful G însuşi sau se obţine din G prin suprimarea
anumitor vârfuri şi a tuturor muchiilor care au cel puţin o extremitate în mulţimea
vârfurilor care au fost suprimate. Se spune că subgraful H este indus sau generat
de mulţimea de vârfuri V (G ) .
Un lanţ într-un graf G este o succesiune finită de vârfuri ale lui G care se
notează [x0 , x1 ,..., x r ] , cu proprietatea că oricare două vârfuri vecine sunt
adiacente, adică xi xi +1 ∈ E (G ) pentru orice 0 ≤ i ≤ r − 1 . Vârfurile x0 şi x r se
numesc extremităţile lanţului, iar numărul r care reprezintă numărul de muchii ale
lanţului se numeşte lungimea acestui lanţ. Dacă vârfurile x0 , x1 ,..., x r sunt
distincte, lanţul se numeşte elementar. Un lanţ poate fi interpretat ca traseul unei
deplasări pe muchiile grafului. De aceea, un lanţ de extremităţi x0 şi x r se mai
spune că este un lanţ de la x0 la x r . O altă noţiune fundamentală este aceea de
ciclu. Un ciclu într-un graf G este o succesiune finită de vârfuri ale lui G, notată
[x0 , x1 ,..., xr ] , cu următoarele proprietăţi:
a) oricare două vârfuri vecine sunt adiacente, adică xi xi +1 ∈ E (G ) pentru orice
0 ≤ i ≤ r − 1;
b) x0 = x r ;
c) toate muchiile x0 x1 , x1 x 2 , …, x r −1 x r sunt distincte.
Numărul r, care reprezintă numărul de muchii ale ciclului, se numeşte
lungimea acestui ciclu. Dacă toate vârfurile x0 , x1 ,..., x r −1 sunt distincte, ciclul se
numeşte elementar. Deci un ciclu este un lanţ care se întoarce în punctul de plecare
şi pentru care toate muchiile parcurse sunt distincte. Dacă nu am impune condiţia
c), atunci orice graf care are o muchie ab ar conţine şi un ciclu şi anume [a, b, a ] .
Un graf G se numeşte conex dacă pentru orice pereche de vârfuri distincte
x, y ale lui G, există un lanţ de extremităţi x şi y în G. O componentă conexă C a
unui graf G este un subgraf conex maximal al lui G (maximal în sensul că nu există
nici un lanţ care să unească un vârf din C cu orice vârf care nu aparţine lui C).
Grafurile conexe au o singură componentă conexă.
Graful complementar grafului G se notează prin G şi el are
V (G ) = V (G ) şi E (G ) = E (G ) , adică complementara mulţimii muchiilor lui G,
două vârfuri distincte fiind adiacente în G dacă şi numai dacă ele nu sunt
adiacente în G.
84
Clase speciale de grafuri
Un graf pentru care oricare două vârfuri sunt adiacente se numeşte graf
n
complet. Graful complet cu n vârfuri se notează K n şi al are muchii. Toate
2
vârfurile grafului K n au gradul n − 1 . Un graf se numeşte regulat dacă toate
vârfurile sale au un acelaşi grad. Dacă acest grad comun al vârfurilor este egal cu k,
graful se numeşte k-regulat. Graful complet K n este (n − 1) -regulat. Un interes
special în clasa grafurilor regulate îl reprezintă grafurile formate cu vârfurile şi
muchiile celor 5 poliedre regulate. Astfel graful tetraedrului regulat este graful
complet K 4 ; graful cubului este 3-regulat (astfel de grafuri se mai numesc cubice);
el are 8 vârfuri. Graful octaedrului este 4-regulat şi are 6 vârfuri; graful
dodecaedrului este cubic şi are 20 vârfuri, iar graful icosaedrului este 5-regulat şi
are 12 vârfuri.
Ciclurile elementare cu p vârfuri se notează C p . Dacă mulţimea vârfurilor
unui graf G poate fi partiţionată în două mulţimi disjuncte de vârfuri,
V (G ) = V1 ∪ V2 , astfel încât fiecare muchie uneşte un vârf din V1 cu un vârf din
V2 , graful G se numeşte bipartit. Într-un graf bipartit orice ciclu conţine un număr
par de vârfuri, deoarece el trece alternativ din V1 în V2 şi se întoarce în punctul de
plecare. De exemplu ciclurile impare C 2 k +1 , unde k ∈ N nu sunt bipartite şi vom
vedea că inexistenţa ciclurilor impare caracterizează grafurile bipartite. Dacă orice
vârf din V1 este adiacent cu orice vârf din V2 , graful se numeşte bipartit complet.
Un graf bipartit complet pentru care V1 = m şi V2 = n se notează K m ,n . Un graf
bipartit complet de forma K 1,n , format dintr-un vârf central adiacent cu alte n
vârfuri, neadiacente între ele se numeşte graf-stea.
Teorema 1 (Konig). Un graf G este bipartit dacă şi numai dacă nu
conţine cicluri impare.
Două grafuri G şi H se numesc izomorfe dacă există o bijecţie
f : V (G ) → V ( H ) astfel încât: a) dacă xy ∈ E (G ) atunci f ( x) f ( y ) ∈ E ( H ) ;
b) dacă xy ∉ E (G ) atunci f ( x) f ( y ) ∈ E ( H ) . Cu alte cuvinte, grafurile G şi H
diferă eventual printr-o renumerotare a vârfurilor. Deoarece f este o bijecţie între
mulţimile de vârfuri ale celor două grafuri, rezultă că oricare două grafuri izomorfe
au acelaşi număr de vârfuri. De asemenea, grafurile izomorfe au acelaşi număr de
muchii, aceleaşi şiruri ale gradelor vârfurilor, acelaşi număr de cicluri de o anumită
lungime etc.
Noţiunea de izomorfism al grafurilor explică fenomenul de izomerism din
chimie. De exemplu, moleculele de hidrocarburi constau din atomi de carbon de
valenţă 4 şi de hidrogen de valenţă 1. Astfel moleculele de butan şi de 2-
metilpropan (izobutan) conţin fiecare patru atomi de carbon şi zece atomi de
85
hidrogen, având formula C 4 H 10 . Grafurile asociate au fiecare câte 14 vârfuri, dar
nu sunt izomorfe. Astel de structuri neizomorfe care au aceeaşi formulă chimică (în
cazul de faţă C 4 H 10 ) se numesc izomeri. Recunoaşterea izomorfismului a două
grafuri este importantă în chimie, deoarece o substanţă nou descoperită trebuie să
aibă graful neizomorf cu graful substanţelor deja cunoscute.
Există situaţii când modelul de graf neorientat nu este suficient pentru a
reprezenta o situaţie dată, fiind necesar să definim o anumită orientare a muchiilor.
Un graf orientat G este o pereche (V (G ), E (G ) ) , unde V (G ) este o mulţime
finită şi nevidă de elemente numite vârfuri şi E (G ) este o mulţime de perechi
ordonate de elemente distincte din V (G ) , numite arce. V (G ) se numeşte
mulţimea vârfurilor şi E (G ) mulţimea arcelor grafului G. Deci, în cazul
grafurilor orientate mulţimea arcelor este o submulţime a produsului cartezian
V (G ) × V (G ) care conţine numai perechi ( x, y ) de vârfuri distincte. Se spune că x
este extremitatea iniţială şi y este extremitatea finală a arcului ( x, y ) . Ca şi în
cazul grafurilor neorientate, un graf orientat poate fi desenat în plan reprezentând
vârfurile prin puncte şi arcele prin săgeţi orientate de la extremitatea iniţială către
extremitatea finală a oricărui arc. Două vârfuri unite printr-un arc se numesc
adiacente. Spre deosebire de cazul neorientat, orice vârf x are două grade: gradul
exterior, notat d + ( x ) , este numărul arcelor care îl au pe x extremitate iniţială, deci
care pleacă din vărful x; gradul interior, notat d − ( x ) , este numărul arcelor care îl
au pe x extremitate finală, deci care intră în vârful x. Următorul rezultat este
analogul propoziţiei 1 pentru grafuri orientate.
Propoziţia 2. Pentru orice graf orientat G suma gradelor de intrare este
egală cu suma gradelor de ieşire ale vârfurilor lui G, care este egală cu numărul
de arce ale grafului G.
Noţiunile de graf parţial şi de subgraf al unui graf orientat se definesc la
fel ca şi în cazul neorientat, înlocuind peste tot cuvântul muchie prin cuvântul arc.
Un lanţ într-un graf orientat G este o succesiune finită de vârfuri ale lui G
care se notează [x0 ,..., x r ], cu proprietatea că oricare două vârfuri vecine sunt
adiacente, adică (xi , xi +1 ) ∈ E (G ) sau (xi +1 , xi ) ∈ E (G ) pentru orice
0 ≤ i ≤ r − 1 . Ca şi în cazul neorientat, vârfurile x0 şi x r se numesc extremitatea
iniţială, respectiv extremitatea finală ale lanţului, iar numărul de arce r este
lungimea lanţului. Un drum într-un graf orientat G este un caz particular de lanţ,
care se obţine când toate arcele au o aceeaşi orientare, de la extremitatea iniţială
către extremitatea finală. Deci un drum este o succesiune finită de vârfuri ale lui G
care se notează (x 0 ,..., x r ) , cu proprietatea că (xi , xi +1 ) ∈ E (G ) pentru orice
0 ≤ i ≤ r − 1.
Un lanţ închis pentru care arcele nu se repetă se numeşte ciclu, iar un drum
închis pentru care arcele nu se repetă se numeşte circuit. Deci un ciclu într-un graf
86
orientat G este o succesiune finită de vârfuri ale lui G, notată [x0 ,..., x r ] cu
următoarele proprietăţi: a) (xi , xi +1 ) ∈ E (G ) sau (xi +1 , xi ) ∈ E (G ) pentru orice
0 ≤ i ≤ r − 1 ; b) x0 = x r ; c) toate arcele lanţului sunt distincte. Un circuit este o
succesiune finită de vârfuri ale lui G, notată (x 0 ,..., x r ) cu următoarele proprietăţi:
a) (xi , xi +1 ) ∈ E (G ) pentru orice 0 ≤ i ≤ r − 1 ; b) x0 = x r ; c) toate arcele
(x0 , x1 ) , (x1 , x 2 ) , …, (x r −1 , xr ) sunt distincte. Numărul arcelor unui ciclu,
respectiv circuit, se numeşte lungimea sa. Dacă toate vârfurile x0 ,..., x r −1 sunt
distincte, ciclul, respectiv circuitul se numeşte elementar. Un graf orientat G cu
proprietatea că pentru orice arc (x, y ) ∈ E (G ) arcul ( y, x ) ∈ E (G ) se numeşte
simetric. Astfel putem considera grafurile neorientate cazuri particulare de grafuri
orientate şi anume grafuri orientate simetrice. Ca şi în cazul neorientat, un graf
orientat se numeşte conex dacă între oricare două vârfuri distincte există un lanţ
care le uneşte. În cazul grafurilor orientate mai putem defini şi o altă noţiune şi
anume conexitatea tare: un graf orientat G se numeşte tare conex dacă oricare două
vârfuri distincte ale lui G sunt unite printr-un drum. Deoarece putem schimba
rolurile celor două vârfuri, uneori definiţia conexităţii tare se mai formulează astfel:
un graf orientat G se numeşte tare conex dacă oricare ar fi vârfurile x, y ∈ V (G ) ,
x ≠ y , există un drum de la x la y şi un drum de la y la x.
87
O altă matrice care caracterizează un graf orientat şi este utilă în studiul
circuitelor electrice este matricea de incidenţă nod-arc. Dacă graful orientat G are
n vârfuri x1 ,..., x n şi m arce e1 ,..., em , matricea de incidenţă nod-arc este o matrice
dreptunghiulară cu n linii şi m coloane, pe care o notăm B = bij ( ) i =1,..., n şi o
j =1,..., m
definim astfel: bij = 1 dacă arcul e j pleacă din vârful xi , bij = −1 dacă arcul e j
intră în vârful xi şi bij = 0 în caz cantrar, deci dacă xi nu este extremitate a
arcului e j . Să observăm că fiecare coloană a matricii de incidenţă B conţine un 1,
un − 1 şi n − 2 zerouri. Fixând un sens al curentului pe fiecare latură a unei reţele
electrice, care devine astfel un graf orientat şi notând cu i = (i1 ,..., im ) vectorul
intensităţilor curentului pe arcele reţelei electrice, prima lege a lui Kirchhoff se
scrie sub forma: Bi T = 0 T , unde T reprezintă transpusul unui vector, iar 0
reprezintă vectorul linie cu n componente nule.
În cazul grafurilor neorientate, matricea de incidenţă nod-muchie va
conţine doi de 1 pe fiecare coloană. Suma oricăror r linii ale matricii B pentru un
graf G conex cu n vârfuri conţine cel puţin o componentă nenulă pentru r < n .
Într-adevăr, în caz contrar ar rezulta că din mulţimea de vârfuri corespunzătoare
celor r linii nu mai pleacă nici un arc în exterior şi nu mai soseşte nici un arc din
exterior, ceea ce contrazice faptul că G este conex. Deci, oricare r linii r < n ale
matricii B sunt linear independente. Dar suma celor n linii ale matricii B este
vectorul nul, deci ele sunt linear dependente. Am obţinut următorul rezultat:
Propoziţia 3 (Kirchhoff). Dacă graful G are n vârfuri şi este conex,
rangul matricii sale de incidenţă nod-arc este n − 1 .
Aplicând acest rezultat submatricilor corespunzătoare componentelor
conexe ale lui G, se află că rangul matricii B este n − p dacă graful are p
componente conexe.
88
ordinul n cu 0 şi 1 în felul următor: Tk ( A) = B , unde B = bij ( )
i , j =1,..., n
este o
matrice pătrată de ordinul n, definită astfel:
bij = max (aij , min (aik , a kj )) = aij ∨ aik a kj
pentru i, j = 1,..., n . Pentru simplificarea scrierii am notat operaţia maximum prin
∨ , iar operaţia de minimum este tocmai operaţia produs în algebra booleană {0,1} .
Din cauza proprietăţii de absorbţie mai rezultă că bij = a ij dacă i sau j este egal cu
k. La pasul 2 al algoritmului se calculează tocmai matricea Tk ( A) , deoarece
elementele aij = 1 rămân invariante din definiţia operatorilor Tk .
Propoziţia 4. Transformările Tk sunt idempotente, iar oricare două
transformări Tk , Th comută între ele.
Teorema 2. Există egalitatea
n
∏ T ( A) = A
k =1
k
*
89
III. ARBORI SI ALGORITMUL LUI KRUSKAL
Un graf conex şi fără cicluri se numeşte arbore. Terminologia ţine seama
de asemănarea cu arborii din natură. Am văzut că vârfurile de gradul 1 ale unui
graf se numesc vârfuri terminale, care în cazul unui arbore se mai numesc şi
frunze. Astfel, unei expresii aritmetice i se asociază în mod natural un arbore, în
vârfurile căruia se reprezintă atât operatorii, cât şi operanzii. Frunzele au asociaţi
operanzi, iar celelalte vârfuri conţin operatori. Deoarece unele operaţii (scăderea,
ridicarea la putere, împărţirea) nu sunt comutative, avem de a face cu un tip special
de arbori, numiţi arbori binari. Astfel, vârful în care este reprezentată ultima
operaţie se numeşte rădăcina arborelui binar. Rădăcina are un subarbore stâng şi
un subarbore drept. Subarborii stâng şi drept ai rădăcinii sunt, la rândul lor, arbori
binari. În cazul arborilor binari se face distincţie între stânga şi dreapta. Aceşti
arbori sunt utilizaţi în multe capitole ale informaticii. Se observă din desenul unui
arbore că, oricum am suprima o muchie a unui arbore se obţine un graf neconex, cu
două componente conexe. De asemenea, oricum am uni printr-o nouă muchie două
vârfuri neadiacente ale unui arbore, în graful astfel obţinut apare un ciclu. Aceste
proprietăţi au loc pentru orice arbore.
Teorema 3. Următoarele afirmaţii sunt echivalente pentru un graf G:
a) G este conex şi fără cicluri;
b) G este un graf conex minimal, adică G este conex, dar devine neconex prin
suprimarea unei muchii oarecare;
c) G este un graf fără cicluri maximal, adică G nu conţine cicluri, dar prin unirea
printr-o muchie a oricăror două vârfuri neadiacente ale lui G, graful obţinut
conţine cicluri.
Am văzut că un graf parţial H al grafului G, este graful G sau se obţine din
G prin suprimarea anumitor muchii. Dacă graful parţial H este arbore, el se
numeşte arbore parţial al lui G.
Corolar 1. Un graf G are un arbore parţial dacă şi numai dacă G este
conex.
Propoziţia 5. Orice arbore cu n ≥ 2 vârfuri are cel puţin două vârfuri
terminale.
Arborii au o proprietate remarcabilă, dată de teorema următoare.
Teorema 4. Orice arbore cu n vârfuri are n − 1 muchii.
Proprietatea unui arbore de a fi un graf conex minimal face ca arborii să
apară într-o serie de probleme de optimizare, cum este următoarea:
90
determinării unui graf parţial H al lui G care trebuie să fie conex şi să aibă un cost
minim. Un astfel de graf parţial conex de cost minim trebuie să fie un arbore
parţial, deoarece arborii sunt singurele grafuri conexe minimale. Deci orice graf
parţial de cost minim care este conex este un arbore parţial al lui G. Acest arbore
parţial există conform corolarului 1. Pentru găsirea unui arbore parţial de cost
minim al unui graf conex, pe care îl vom numi, pe scurt, arbore parţial minim,
descriem în continuare algoritmul lui Kruskal.
91
IV. DISTANTE SI DRUMURI MINIME IN GRAFURI ORIENTATE
Pentru un graf orientat G să presupunem că pe mulţimea arcelor sale
E (G ) s-a definit o funcţie distanţă d : E (G ) → (0, ∞ ) care asociază fiecărui arc
al grafului G lungimea sa d (i, j ) > 0 , care va fi notată în continuare cu d ij . În
cazul unui astfel de graf ponderat vom defini lungimea unui drum D ca fiind egală
cu suma lungimilor arcelor drumului D. Să observăm că în cazul unui graf
neponderat lungimea unui drum (respectiv lanţ în cazul neorientat) s-a definit
analog dacă se asociază fiecărui arc (respectiv muchii) o lungime egală cu 1. Pentru
două vârfuri x, y ∈ V (G ) pot exista în graful G mai multe drumuri care pleacă din
x şi sosesc în y. Vom defini distanţa minimă de la vârful x la vârful y în graful G
( x ≠ y ) şi o vom nota cu d * ( x, y ) , minimul lungimilor drumurilor din graful G
care au extremitatea iniţială în x şi extremitatea finală în y. Dacă nu există nici un
drum de la x la y în G vom defini d * ( x, y ) = ∞ .
Lungimile d ij ale arcelor grafului se mai numesc şi distanţele directe
dintre vârfurile grafului şi formează matricea distanţelor directe care se defineşte
( )
în felul următor pentru un graf G cu n vârfuri notate 1,..., n : D = d ij i , j =1,...,n , unde
d ii = 0 pentru orice i = 1,..., n , d ij reprezintă lungimea arcului (i, j ) dacă
(i, j ) ∈ E (G ) şi d ij = ∞ dacă (i, j ) ∉ E (G ) . Matricea distanţelor minime,
notată ( )
D * = d ij* i , j =1,..., n
, se defineşte în modul următor: d ii* = 0 pentru orice
i = 1,..., n , d ij* reprezintă distanţa minimă de la vârful i la vârful j dacă există cel
puţin un drum de la i la j şi d ij* = ∞ dacă nu există nici un drum de la i la j în
graful G. Algoritmul lui Floyd permite calcularea matricii D * plecând de la
matricea D a distanţelor directe şi este analog algoritmului lui Roy-
Warshall pentru obţinerea matricii drumurilor plecând de la matricea de adiacenţă a
unui graf. Se schimbă numai operaţiile de maximum şi minimum prin minimum şi
respectiv +, definite pe mulţimea numerelor reale pozitive, iar elementele de pe
diagonala principală nu se mai calculează, ele rămânând egale cu 0.
93
1. S ← ∅ , S ← V (G ) .
2. l ( s ) ← 0 şi l (i ) ← ∞ pentru orice i ≠ s .
3. Cât timp S < n se execută următoarele operaţii:
a) se selectează un vârf i ∈ S pentru care
{
l (i ) = min l ( j ) j ∈ S ; }
i , S ← S \ {i} ;
b) S ← S ∪ {}
c) pentru fiecare arc (i, j ) care are extremitatea iniţială în i şi extremitatea
finală în j ∈ S , dacă
l ( j ) > l (i ) + d ij ,
atunci l ( j ) ← l (i ) + d ij şi pred ( j ) ← i .
Distanţele minime se obţin în ordinea apropierii vârfurilor respective de
originea s. Aplicând de n ori acest algoritm şi luând de fiecare dată ca vârf sursă s
fiecare din vârfurile 1,..., n , se pot obţine distanţele şi drumurile minime pentru
toate perechile ordonate de vârfuri (i, j ) cu i ≠ j şi 1 ≤ i, j ≤ n .
Aceste algoritm se aplică şi grafurilor neorientate, înlocuind la pasul 3c)
arcul (i, j ) prin muchia ij care are una dintre extremităţi în vârful i selectat
la acel pas şi cealaltă extremitate într-un vârf j ∈ S . În acest caz arborescenţa
drumurilor minime devine un arbore al drumurilor minime care au o extremitate
în s.
Complexitatea timp a algoritmului se evaluează astfel: Dacă S are k
elemente ( 1 ≤ k ≤ n ),determinarea minimului din numerele l ( j ) pentru j ∈ S se
face cu ajutorul a k − 1 comparaţii. Deoarece există cel mult k − 1 arce de forma
(i, j ) cu i fixat în S şi j variabil în S , la compararea lui l ( j ) cu suma l (i) + d ij
se fac cel mult k − 1 comparaţii şi k − 1 adunări. Deci numărul total de adunări
n(n − 1)
este cel mult egal cu 1 + 2 + ... + (n − 1) = şi un număr dublu de
2
comparaţii, adică n(n − 1) .
Dacă graful conţine şi arce cu lungimea negativă, se poate ca anumite
distanţe minime dintre vârfurile sale să nu existe. De exemplu, între vârfurile
situate pe un circuit cu suma lungimilor arcelor sale negativă nu există un minim al
distanţelor între vârfurile sale, acestea putând fi făcute să tindă la − ∞ . Există
algoritmi (de exemplu algoritmul lui Dantzig) care detectează existenţa circuitelor
negative, iar în cazul inexistenţei acestora găsesc distanţele minime între vârfurile
unui graf pentru care distanţele directe îintre vârfuri pot lua şi valori negative.
94
V. FLUX MAXIM IN RETELE DE TRANSPORT
95
şi
ϕt = ∑ ϕ(u ) .
u∈ω− ( t )
96
Algoritmul lui Ford-Fulkerson
În cazul când capacităţile arcelor sunt numere naturale,
algoritmul lui Ford-Fulkerson constă în următoarele:
Pasul 1: Se determină un flux cu componente numere naturale, care verifică
condiţiile de conservare şi mărginire; de exemplu se poate alege fluxul
cu componente nule pe fiecare arc.
Pasul 2: Se aplică următorul procedeu de etichetare: Se etichetează intrarea s. Un
vârf y neetichetat se poate eticheta în următoarele două situaţii:
a) există arcul u = ( x, y ) , unde x este etichetat şi ϕ(u ) < c(u ) . În
acest caz vârful y se etichetează cu [+ x ] ;
b) există arcul v = ( y, x ) , unde x este etichetat şi ϕ(v) > 0 . În acest
caz y se etichetează cu [− x ] .
Dacă după ce se fac toate etichetările posibile ieşirea t nu a fost
etichetată, ne oprim, fluxul obţinut este maxim. În caz contrar t a fost
etichetată. Urmărind etichetele vârfurilor în sens invers, de la t la s, se
reconstituie un lanţ nesaturat L pe care fluxul poate fi mărit cu ε , definit
în acelaşi mod ca în demonstraţia teoremei lui Ford-Fulkerson. Cu noul
flux ϕ′ se merge la pasul 2.
Algoritmul are un număr finit de paşi deoarece atât capacităţile arcelor cât
şi componentele fluxului fiind numere naturale, la fiecare mărire a fluxului
valoarea ϕ t creşte cu ε ≥ 1 iar fluxul este mărginit, el neputând depăşi capacitatea
minimă a unei tăieturi. La sfârşitul aplicării algoritmului arcele care unesc vârfurile
etichetate cu vârfurile neetichetate constituie o tăietură de capacitate minimă,
demonstraţia acestei proprietăţi decurgând din demonstraţia teoremei lui Ford-
Fulkerson.
97