74

COMBINATORICĂ ŞI TEORIA GRAFURILOR

Prof. Dr. Ioan Tomescu

Partea întâi: Elemente de combinatorică

I. FUNCTII DE NUMARARE SI FORMULA MULTINOMULUI

În cele ce urmează se va lucra cu mulţimi finite. Numărul de elemente din
mulţimea finită X va fi notat cu X . Unei funcţii f de la X în Y , unde X şi
Y sunt mulţimi finite, astfel încât { }
n
x x X ,...,
1
= şi { }
m
y y Y ,...,
1
= , i se pune în
corespondenţă o aranjare a mulţimii X de obiecte în mulţimea Y de căsuţe, astfel
încât în căsuţa
i
y să intre obiectele din mulţimea { }
i
y x f X x x = ∈ ) ( , . Această
corespondenţă este o bijecţie. De asemenea, se poate stabili o bijecţie între
mulţimea funcţiilor Y X f → : şi mulţimea n -uplelor formate cu elemente din Y
sau a cuvintelor de lungime n formate cu litere din mulţimea Y astfel: unei funcţii
f i se pune în corespondenţă cuvântul ( ) ( ) ( )
n
x f x f x f ...
2 1
în care ordinea
literelor este esenţială.
Propoziţia 1. Numărul funcţiilor Y X f → : este egal cu
n
m , dacă
n X = şi m Y = .
Prin definiţie se notează | | ) 1 )...( 1 ( + − − = n x x x x
n
şi
| | ) 1 )...( 1 ( − + + = n x x x x
n
, ambele produse conţinând câte n factori consecutivi.
Propoziţia 2. Numărul funcţiilor injective Y X f → : , unde n X = şi
m Y = este egal cu | |
n
m .
Aranjamente de m luate câte n se numesc cuvintele de lungime n
formate cu litere diferite din mulţimea Y , iar numărul lor este | |
n
m . Dacă n m = ,
aceste cuvinte de lungime n formate cu litere din Y se numesc permutări ale
mulţimii Y şi numărul lor este egal cu | |
n
n , care se notează cu n n ⋅ ⋅ ⋅ = ... 2 1 ! şi
se numeşte n factorial. Prin definiţie 1 ! 0 = .
Dacă mulţimea Y este o mulţime ordonată astfel încât
n
y y y < < < ...
2 1
,
un cuvânt de lungime n format cu litere din Y,
n
i i
y y ...
1
se numeşte crescător dacă
n
i i i
y y y ≤ ≤ ≤ ...
2 1
şi strict crescător dacă
n
i i
i
i
y y y < < < ...
2
. 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 .
75
Propozţia 3. Numărul cuvintelor strict crescătoare de lungime n formate
cu m simboluri este egal cu
| |
! n
m
n
. Acest număr este egal şi cu numărul
submulţimilor cu n elemente ale unei mulţimi cu m elemente.
Numerele | |
n
m se mai notează prin
|
|
.
|

\
|
n
m
şi se numesc numere binomiale
cu parametrii m şi n .
Propoziţia 4. Numărul cuvintelor crescătoare de lungime n formate cu
m simboluri este egal cu
| |
! n
m
n
.
Numerele binomiale apar drept coeficienţi în formula binomului:
( )

=

|
|
.
|

\
|
= +
n
k
k k n n
b a
k
n
b a
0
, (1)
care este valabilă pentru orice b a, dintr-un inel comutativ.
Propoziţia 5. Numărul de aranjări ale unei mulţimi de n obiecte
{ }
n
x x X ,...,
1
= într-o mulţime de p căsuţe { }
p
y y Y ,...,
1
= , astfel încât căsuţa
i
y să conţină
i
n obiecte pentru orice p i ≤ ≤ 1 ( ) n n n
p
= + +...
1
este egal cu
! !... !
!
2 1 p
n n n
n
.
Acest raport de factoriale se mai notează
|
|
.
|

\
|
p
n n n
n
,..., ,
2 1
şi se numeşte
număr multinomial, care generalizează numerele binomiale (cazul 2 = p ) şi apar
în formula multinomului care extinde relaţia (1):
( )

= + +

|
|
.
|

\
|
= + + +
n
p
n n
p
n n
p
n
p
n n
p
n
p
a a a
n n n
n
a a a
...
1
0 ,...,
1
2
2
1
1
2 1
2 1
...
,..., ,
...
.
(2)











76
II. PRINCIPIUL INCLUDERII ŞI AL EXCLUDERII ŞI APLICAŢII

Principiul includerii şi al excluderii constituie o generalizare a identităţii:
B A B A B A ∩ ∪ − + = (3)
unde X B A ⊂ , .
Teorema 1 (Principiul includerii şi al excluderii). Dacă
I
A ( q i ≤ ≤ 1 )
sunt submulţimi ale unei mulţimi X , are loc relaţia:
( )
1 1 1
1
1 1
... 1
q q
i i i j
i i j q i
q
q
i j k i
i j k q i
A A A A
A A A A
= ≤ < ≤ =

≤ < < ≤ =
= − +
+ − + −
∑ ∑


∩ ∩


(4)
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
factori primi distincţi este
q
i
q
i i
p p p n ...
2
2
1
1
= şi se notează cu
i
A mulţimea
numerelor naturale mai mici sau egale cu n care sunt multipli de
i
p , se
obţine
i
i
p
n
A = ,
j i
j i
p p
n
A A = ∩ etc. Deci
( )
1 2
1 1
1 1
1
... ...
... ( 1)
...
q
q i i j
i i j q
q
q
i i j q
i i j q
n n A A A n A A A
n n n
n
p p p p p
ϕ
= ≤ < ≤
= ≤ < ≤
= − = − + −
= − + − + −
⋅ ⋅
∑ ∑
∑ ∑
∪ ∪ ∪ ∩

adică
( )
|
|
.
|

\
|

|
|
.
|

\
|

|
|
.
|

\
|
− = ϕ
q
p p p
n n
1
1 ...
1
1
1
1
2 1
. (5)
2. Determinarea numărului ( ) n D al permutărilor a n elemente fără puncte
fixe
Fie p o permutare a mulţimii { } n X ,..., 1 = , adică o bijecţie
X X p → : . Permutarea are un punct fix în i dacă ( ) i i p = . Dacă notăm
cu
i
A mulţimea permutărilor care au un punct fix în i rezultă că
( )
1
1 1 1
! ... ! ... ( 1)
n n
n
n i i j i
i i j n i
D n n A A n A A A A
= ≤ < ≤ =
= − = − + − + −
∑ ∑
∪ ∪ ∩


77
Se obţine, ( )! ...
2 1
k n A A A
k
i i i
− = ∩ ∩ ∩ deoarece o permutare din
mulţimea
k
i i
A A ∩ ∩...
1
are puncte fixe în poziţiile
k
i i i ,..., ,
2 1
, celelalte
imagini putând fi alese în ( )! k n − moduri. Deoarece k poziţii
k
i i ,...,
1
pot
fi alese din mulţimea celor n poziţii în
|
|
.
|

\
|
k
n
moduri, rezultă
( )
|
|
.
|

\
| −
+ +

+ − + − =
!
) 1 (
...
!
) 1 (
...
! 2
1
! 1
1
1 !
n k
n n D
n k
. (6)
3. Determinarea numărului
m n
s
,
al funcţiilor surjective
Fie mulţimile { }
n
x x X ,...,
1
= şi { }
m
y y Y ,...,
1
= . Pentru fiecare i ,
m i ≤ ≤ 1 , să notăm prin
i
A mulţimea funcţiilor de la X în Y pentru care
i
y nu este imaginea nici unui element din X, adică
{ } ) ( : X f y Y X f A
i i
∉ → = . Se obţine.
, 1
1 1 1
... ... ( 1)
m m
n n m
n m m i i j i
i i j m i
s m A A m A A A A
= ≤ < ≤ =
= − = − + − + −
∑ ∑
∪ ∪ ∩

.
i
A este mulţimea funcţiilor definite pe X cu valori în { }
i
y Y \ , deci
n
i
m A ) 1 ( − = şi în general
n
l
i i
l m A A ) ( ...
1
− = ∩ ∩ . Deoarece fiecare
sumă

≤ < < ≤ m
l
i i
l
i i
A A
...
1
1
1
... ∩ ∩ conţine
|
|
.
|

\
|
l
m
termeni egali cu
n
l m ) ( − ,
deducem:
1
,
( 1) ( 2) ... ( 1)
1 2 1
n n n m
n m
m m m
s m m m
m

| | | | | |
= − − + − − + −
| | |

\ . \ . \ .

(7)

III. NUMERELE LUI STIRLING, BELL, FIBONACCI ŞI CATALAN

Alături de numerele binomiale şi multinomiale, numerele lui Stirling, Bell
şi Fibonacci joacă un rol deosebit în probleme de numărare.
Pentru a defini numerele lui Stirling de prima speţă, pe care le notăm
( ) k n s , , vom dezvolta polinomul | |
n
x în ordinea crescătoare a puterilor lui x.
Coeficienţii acestei dezvoltări sunt prin definiţie numerele lui Stirling de prima
speţă, adică
| | ( )

=
=
n
k
k
n
x k n s x
0
, (8)
78
Numerele ( ) k n s , se pot calcula prin recurenţă, utilizând relaţiile
( ) 0 0 . = n s , ( ) 1 , = n n s şi ( ) ( ) ( ) k n ns k n s k n s , 1 , , 1 − − = + , ultima relaţie
obţinându-se prin egalarea coeficienţilor lui
k
x în cei doi membri ai egalităţii
| | | | ) (
1
n x x x
n n
− =
+
. Se obţine tabelul următor, unde ( ) 0 , = k n s pentru k n < .

( ) k n s ,
0 = k 1 2 3 4 5 …
1 = n 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 ( ) m n S , , 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 { } d c b a X , , , = , partiţiile cu trei clase ale acestei mulţimi
sunt: ( ) ( ) ( ) { } d c b a , , , , ( ) ( ) ( ) { } d b c a , , , , ( ) ( ) ( ) { } c b d a , , , , ( ) ( ) ( ) { } d a c b , , , ,
( ) ( ) ( ) { } c a d b , , , , ( ) ( ) ( ) { } b a d c , , , , deci 6 ) 3 , 4 ( = S .
Numerele lui Stirling de speţa a doua pot fi calculate prin recurenţă astfel.
Considerând mulţimea celor ( ) 1 , − k n S partiţii ale unei mulţimi cu n elemente în
1 − k clase, putem obţine ( ) 1 , − k n S partiţii a 1 + n elemente în k clase, adăugând
la fiecare partiţie o nouă clasă formată dintr-un singur element şi anume al ( ) 1 + n -
lea. Să considerăm acum o partiţie a n elemente în k clase. Deoarece putem adăuga
al ( ) 1 + n -lea element la clasele deja existente în k moduri diferite şi toate partiţiile
a 1 + n elemente cu k clase se obţin fără repetiţii printr-unul din cele două
procedee expuse, rezultă că
( ) ( ) ( ) k n kS k n S k n S , 1 , , 1 + − = +
pentru n k < < 1 şi ( ) ( ) 1 , 1 , = = n n S n S . Aceste relaţii permit calculul prin
recurenţă al numerelor ( ) m n S , obţinându-se tabelul următor:
( ) m n S ,
1 = m 2 3 4 5 …
1 = n 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 …
… … … … … … …
79
Pentru calculul direct al numerelor lui Stirling de speţa a doua, vom arăta
că ( )
!
,
,
m
s
m n S
m n
= . Într-adevăr, oricărei surjecţii f a mulţimii { }
n
x x X ,...,
1
= pe
mulţimea { }
n
y y Y ,...,
1
= îi corespunde o partiţie a mulţimii X cu m clase şi
anume ( ) ( ) ( )
m
y f y f y f
1
2
1
1
1
...
− − −
. 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
0
,
) ( ) 1 (
!
1
!
1
,
m
k
n k
m n
k m
k
m
m
s
m
m n S (9)
Propoziţia 6. Polinoamele
n
x se exprimă ca sume de polinoamele | |
k
x cu
coeficienţii ( ) k n S , , adică:
( )| |

=
=
n
k
k
n
x k n S x
1
, (10)
Ca urmare a rezultatului din propoziţia 6 putem scrie şi relaţia
( ) | | ( )
∑ ∑
= =
= + − − =
n
k
k
n
k
n
k n S n k n S k m m m m
1 1
, , ) 1 )...( 1 ( (11)
Sunstituindu-l în (10) pe | |
k
x cu expresia dată de (8) şi egalând coeficienţii
lui
n
x din cei doi membri ai expresiei astfel obţinute, se deduce că matricile, de un
ordin fixat, ale numerelor lui Stirling de prima şi de a doua speţă sunt inverse una
alteia, adică ( ) ( )
q p
n
k
q k s k p S
,
1
, , δ =

=
pentru orice n număr natural fixat şi orice
n q p ≤ ≤ , 1 , unde
q p,
δ este simbolul lui Kronecker. Numărul tuturor partiţiilor
unei mulţimi cu n elemente se notează cu
n
B şi se numeşte numărul lui Bell. Deci
conform definiţiei, ( )

=
=
n
k
n
k n S B
1
, .
Propoziţia 7. Numerele lui Bell verifică următoarea relaţie de recurenţă:

=
+
|
|
.
|

\
|
=
n
k
k n
B
k
n
B
0
1
(12)
unde 1
0
= B .
Pentru a introduce numerele lui Fibonacci vom rezolva următoarea
problemă de numărare:





80
Propoziţia 8. Se notează cu ( ) k n f , numărul submulţimilor lui
{ } n X
n
,..., 1 = care au k elemente şi nu conţin doi intregi consecutivi. Există
relaţia:
( )
|
|
.
|

\
| + −
=
k
k n
k n f
1
, .

Rezultă că numărul tuturor submulţimilor lui
n
x care nu conţin doi întregi
consecutivi (luând în considerare şi mulţimea vidă, căreia îi corespunde cuvântul
având 0 ...
1
= α = = α
n
), este egal cu:


+
|
|
.
|

\
| + −
=
0
1
1
k
n
k
k n
F
(13)
Ultimul indice k pentru care suma de mai sus conţine termeni nenuli este

+
2
1 n
, deoarece numerele binomiale sunt nenule numai pentru indicele superior
mai mare sau egal cu indicele inferior. Din (13) se obţine: 1
0
= F , 1
1
= F ,
2
2
= F , 3
3
= F , 5
4
= F şi se observă că
2 1 − −
+ =
n n n
F F F pentru orice 2 ≥ n .
Numerele
n
F Se numesc numerele lui Fibonacci.
Pentru a defini numerele lui Catalan, notate
n
C , vom considera
următoarea problemă de numărare: Să se determine în câte moduri putem pune
parantezele într-un produs de n factori scrişi în ordinea
n
x x x ,..., ,
2 1
. Notând acest
număr cu
n
C , se deduce 1
2
= C , 2
3
= C , 5
4
= C , deoarece avem ( )
2 1
x x ;
( )
3 2 1
x x x , ( )
3 2 1
x x x ; ( )( )
4 3 2 1
x x x x , ( ) ( )
4 3 2 1
x x x x , ( ) ( )
4 3 2 1
x x x x , ( ) ( )
4 3 2 1
x x x x ,
( ) ( )
4 3 2 1
x x x x . Prin definiţie se consideră 1
1
= C . Expresia numerelor lui Catalan
este dată de propoziţia următoare:
Propoziţia 9. Există relaţia:
|
|
.
|

\
|


=
1
2 2
1
n
n
n
C
n
(14)
Numerele lui Catalan intervin în multe probleme de numărare, de exemplu
n
C reprezintă numărul de arbori binari cu n noduri terminale (frunze), ceea ce se
obţine imediat asociind în mod canonic fiecărui mod de a pune parantezele într-un
produs cu n factori un arbore binar cu cele n frunze etichetate cu cei n factori ai
produsului sau numărul de moduri în care putem triangulariza suprafaţa unui
poligon convex cu 1 + n vârfuri ducând 2 − n diagonale ( 2 ≥ n ) (Euler).



81
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:
m
a a a n + + + = ...
2 1

unde numerele naturale
m
a a a ,..., ,
2 1
(numite părţile partiţiei) verifică inegalităţile:
1 ...
2 1
≥ ≥ ≥ ≥
m
a a a .
Din cauza condiţiei impuse ca numerele
m
a a ,...,
1
să formeze un şir
descrescător, două partiţii ale lui n se deosebesc numai prin natura părţilor
m
a a ,...,
1
, nu şi prin ordinea lor. Prin ) , ( m n P 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 ) , ( m n P verifică recurenţa:
) , ( ) , ( ... ) 2 , ( ) 1 , ( k k n P k n P n P n P + = + + + , (15)
iar 1 ) , ( ) 1 , ( = = n n P n P .
Această propoziţie ne permite calculul prin recurenţă al numerelor ) , ( k n P
linie cu linie, aşa cum se face în tabelul următor.
) , ( m n P 1 = m 2 3 4 5 6 7 … ) (n P
1 = n 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 ) (n P s-a notat numărul tuturor partiţiilor lui n, adică
) , ( ... ) 2 , ( ) 1 , ( ) ( n n P n P n P n P + + + = .
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 7 = n şi 4 = k , partiţiile lui 7 cu cea mai mare parte
egală cu 4 sunt: 1 1 1 4 + + + , 1 2 4 + + şi 3 4 + , iar partiţiile lui 7 cu 4 părţi sunt:
1 1 1 4 + + + , 1 1 2 3 + + + şi 1 2 2 2 + + + .
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 ) (n Q
p
numărul partiţiilor lui n cu
un număr par de părţi distincte şi prin ) (n Q
i
numărul partiţiilor lui n cu un
număr impar de părţi distincte. Are loc relaţia ) ( ) ( n Q n Q
i p
= dacă n nu se poate
82
reprezenta sub forma
2
3
2
k k
n
±
= cu k număr întreg. În caz contrar, are loc
relaţia
k
i p
n Q n Q ) 1 ( ) ( ) ( − + = .
Corolar 1 (Identitatea lui Euler). Dacă produsul infinat
( )( ) ( )... 1 ... 1 1
2 n
x x x − − −
este scris sub forma unei serii, se obţine
... 1 ) ( 1
1
26 22 15 12 7 5 2
− + + − − + + − − = ψ +


= n
n
x x x x x x x x x n ,
unde
k
n ) 1 ( ) ( − = ψ dacă
2
3
2
k k
n
±
= şi 0 ) ( = ψ n dacă n nu se poate reprezenta
sub forma
2
3
2
k k
n
±
= cu k număr întreg.
Propoziţia 14. Funcţia generatoare a numerelor ) (n P este:
( )( ) ( )... 1 ... 1 1
1
) (
2
0
n
n
n
x x x
x n P
− − −
=


=
,
(16)
unde prin definiţie 1 ) 0 ( = P .
Corolar 2 (teorema pentagonală a lui Euler). Pentru orice 3 ≥ n
numerele ) (n P verifică relaţia de recurenţă
... ) 7 ( ) 5 ( ) 2 ( ) 1 (
2
3
2
3
) 1 ( ) (
0
2 2
1
+ − − − − − + − =
=
|
|
.
|

\
|
|
|
.
|

\
| +
− +
|
|
.
|

\
| −
− − =



n P n P n P n P
k k
n P
k k
n P n P
k
K


Bibliografie partea întâi

1. I. Tomescu, Introducere în combinatorică, Editura Tehnică, Bucureşti, 1972.
Ediţia engleză: Introduction to combinatorics, Collet's Publishers Ltd., London
and Wellingborough, 1975.
2. I. Tomescu, Combinatorică şi teoria grafurilor, Tipografia Universităţii din
Bucureşti, 1978.
3. I. Tomescu, Probleme de combinatorică şi teoria grafurilor, Editura Didactică
şi Pedagogică, Bucureşti, 1981. Ediţia engleză: Problems in Combinatorics
and Graph Theory, John Wiley, New York, 1985.
4. M. Aigner, Combinatorial theory, Springer-Verlag, Berlin-Heidelberg, 1979.
5. C. Berge, Principes de combinatoire, Dunod, Paris, 1968.
6. L. Comtet, Analyse combinatoire, I, II, Presses Universitaires de France, Paris,
1970.


83
Partea a doua: Elemente de teoria grafurilor

I. NOTIUNI SI DEFINITII DE BAZA

Prima lucrare de teoria grafurilor a fost scrisă de Euler în anul 1736, fiind
consacrată ''problemei celor 7 poduri'' din Konigsberg, în care a demonstrat
imposibilitatea realizării unui traseu care să treacă o singură dată peste fiecare pod.
Un graf neorientat este compus din două mulţimi: o mulţime de vârfuri şi o
mulţime de muchii care sunt perechi de vârfuri. Aceste muchii pot reprezenta
legăturile chimice dintr-o moleculă, rezistenţele sau tensiunile electromotoare
dintr-o reţea electrică, legăturile rutiere sau feroviare dintre localităţi, muchiile unui
poliedru, legăturile dintre nodurile unei reţele de calculatoare, ierarhiile dintr-o
structură administrativă, meciurile directe dintre echipele participante la un turneu
sportiv, graniţele dintre statele reprezentate pe o hartă. În secolul al XIX-lea
dezvoltarea teoriei grafurilor a fost impulsionată de aplicaţiile în fizică (teoria
reţelelor electrice), chimie (studiul fenomenelor de izomerism, descoperite de
Crum Brown), studiul poliedrelor convexe şi a legăturii lor cu grafurile planare şi
problema celor patru culori. În prezent, teoria grafurilor este o ramură a
matematicii, dar modelul de graf este utilizat în cercetarea operaţională pentru
rezolvarea unor probleme de optimizare, în informatică, pentru studiul reţelelor de
calculatoare, al algoritmilor de sortare şi regăsirea informaţiei, al reţelelor de
interconexiune din calculul paralel, în chimie, precum şi în multe alte domenii.
Mai întâi vom defini noţiunile de bază relative la grafurile neorientate, pe
care le vom numi pe scurt grafuri. Un graf este o pereche ( ) ) ( ), ( G E G V , unde
) (G V este o mulţime finită şi nevidă de elemente numite vârfuri şi ) (G E este o
mulţime de perechi neordonate de elemente distincte din ) (G V numite muchii.
) (G V se numeşte mulţimea vârfurilor şi ) (G E mulţimea muchiilor grafului G.
O muchie { } y x, se va nota mai simplu xy şi vom spune că ea uneşte vârfurile x şi
y. Orice graf G poate fi desenat în plan reprezentând vârfurile sale prin puncte şi
muchiile prin linii care unesc anumite perechi de vârfuri. Într-o astfel de
reprezentare nu contează distanţele dintre vârfuri sau unghiurile dintre muchii.
Două vârfuri unite printr-o muchie se numesc adiacente. Cele două vârfuri care
compun o muchie se numesc extremităţile muchiei. Gradul unui vârf x este egal cu
numărul muchiilor care au o extremitate în vârful x şi se notează cu ) (x d . Un vârf
de gradul zero se numeşte vârf izolat, iar un vârf de gradul unu este numit vârf
terminal.
Propoziţia 1. Pentru orice graf suma gradelor este egală cu dublul
numărului de muchii, adică ) ( 2 ) (
) (
G E x d
G V x
=


.
De aici rezultă că pentru orice graf numărul vârfurilor de grad impar este
par.

84
Un graf parţial al unui graf G este un graf H care are aceeaşi mulţime de
vârfuri cu G, deci ) ( ) ( G V H V = şi ) ( ) ( G E H E ⊆ . 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 ) ( ) ( G V H V ⊆ , iar muchiile lui H sunt toate
muchiile lui G care au ambele extremităţi în mulţimea de vârfuri ) (H V . 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 ) (G V .
Un lanţ într-un graf G este o succesiune finită de vârfuri ale lui G care se
notează | |
r
x x x ,..., ,
1 0
, cu proprietatea că oricare două vârfuri vecine sunt
adiacente, adică ) (
1
G E x x
i i

+
pentru orice 1 0 − ≤ ≤ r i . Vârfurile
0
x şi
r
x 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
r
x x x ,..., ,
1 0
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
0
x şi
r
x se mai
spune că este un lanţ de la
0
x la
r
x . 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ă
| |
r
x x x ,..., ,
1 0
, cu următoarele proprietăţi:
a) oricare două vârfuri vecine sunt adiacente, adică ) (
1
G E x x
i i

+
pentru orice
1 0 − ≤ ≤ r i ;
b)
r
x x =
0
;
c) toate muchiile
1 0
x x ,
2 1
x x , …,
r r
x x
1 −
sunt distincte.
Numărul r, care reprezintă numărul de muchii ale ciclului, se numeşte
lungimea acestui ciclu. Dacă toate vârfurile
1 1 0
,..., ,
− r
x x x 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
( ) ) (G V G V = şi ( ) ) (G E G E = , 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.

85
Clase speciale de grafuri

Un graf pentru care oricare două vârfuri sunt adiacente se numeşte graf
complet. Graful complet cu n vârfuri se notează
n
K şi al are
|
|
.
|

\
|
2
n
muchii. Toate
vârfurile grafului
n
K au gradul 1 − n . 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
n
K este ) 1 ( − n -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
4
K ; 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ă
p
C . Dacă mulţimea vârfurilor
unui graf G poate fi partiţionată în două mulţimi disjuncte de vârfuri,
2 1
) ( V V G V ∪ = , astfel încât fiecare muchie uneşte un vârf din
1
V cu un vârf din
2
V , 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
1
V în
2
V şi se întoarce în punctul de
plecare. De exemplu ciclurile impare
1 2 + k
C , unde N k ∈ nu sunt bipartite şi vom
vedea că inexistenţa ciclurilor impare caracterizează grafurile bipartite. Dacă orice
vârf din
1
V este adiacent cu orice vârf din
2
V , graful se numeşte bipartit complet.
Un graf bipartit complet pentru care m V =
1
şi n V =
2
se notează
n m
K
,
. Un graf
bipartit complet de forma
n
K
, 1
, 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
) ( ) ( : H V G V f → astfel încât: a) dacă ) (G E xy ∈ atunci ) ( ) ( ) ( H E y f x f ∈ ;
b) dacă ) (G E xy ∉ atunci ) ( ) ( ) ( H E y f x f ∈ . 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
86
hidrogen, având formula
10 4
H C . 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ţă
10 4
H C ) 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 ( ) ) ( ), ( G E G V , unde ) (G V este o mulţime
finită şi nevidă de elemente numite vârfuri şi ) (G E este o mulţime de perechi
ordonate de elemente distincte din ) (G V , numite arce. ) (G V se numeşte
mulţimea vârfurilor şi ) (G E mulţimea arcelor grafului G. Deci, în cazul
grafurilor orientate mulţimea arcelor este o submulţime a produsului cartezian
) ( ) ( G V G V × care conţine numai perechi ( ) y x, de vârfuri distincte. Se spune că x
este extremitatea iniţială şi y este extremitatea finală a arcului ( ) y x, . 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 ( ) x d
+
, este numărul arcelor care îl au pe x extremitate iniţială, deci
care pleacă din vărful x; gradul interior, notat ( ) x d

, 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ă | |
r
x x ,...,
0
, cu proprietatea că oricare două vârfuri vecine sunt
adiacente, adică ( ) ) ( ,
1
G E x x
i i

+
sau ( ) ) ( ,
1
G E x x
i i

+
pentru orice
1 0 − ≤ ≤ r i . Ca şi în cazul neorientat, vârfurile
0
x şi
r
x 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ă ( )
r
x x ,...,
0
, cu proprietatea că ( ) ) ( ,
1
G E x x
i i

+
pentru orice
1 0 − ≤ ≤ r i .
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
87
orientat G este o succesiune finită de vârfuri ale lui G, notată | |
r
x x ,...,
0
cu
următoarele proprietăţi: a) ( ) ) ( ,
1
G E x x
i i

+
sau ( ) ) ( ,
1
G E x x
i i

+
pentru orice
1 0 − ≤ ≤ r i ; b)
r
x x =
0
; c) toate arcele lanţului sunt distincte. Un circuit este o
succesiune finită de vârfuri ale lui G, notată ( )
r
x x ,...,
0
cu următoarele proprietăţi:
a) ( ) ) ( ,
1
G E x x
i i

+
pentru orice 1 0 − ≤ ≤ r i ; b)
r
x x =
0
; c) toate arcele
( )
1 0
, x x , ( )
2 1
, x x , …, ( )
r r
x x ,
1 −
sunt distincte. Numărul arcelor unui ciclu,
respectiv circuit, se numeşte lungimea sa. Dacă toate vârfurile
1 0
,...,
− r
x x sunt
distincte, ciclul, respectiv circuitul se numeşte elementar. Un graf orientat G cu
proprietatea că pentru orice arc ( ) ) ( , G E y x ∈ arcul ( ) ) ( , G E x y ∈ 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 ) ( , G V y x ∈ ,
y x ≠ , există un drum de la x la y şi un drum de la y la x.

II. MATRICI ASOCIATE UNUI GRAF ORIENTAT

Un graf orientat G cu n vârfuri poate fi caracterizat de o matrice pătrată cu
n linii şi n coloane, cu elemente 0 şi 1 şi numită matricea de adiacenţă a grafului.
Dacă vârfurile grafului sunt
n
x x ,...,
1
, matricea de adiacenţă, notată
( )
n i i
ij
a A
,..., 1 , =
= se defineşte astfel: 1 =
ij
a dacă există arcul ( ) ) ( , G E x x
j i
∈ şi
0 =
ij
a în caz contrar. Dacă graful G este neorientat, matricea sa de adiacenţă are
proprietatea că 1 =
ij
a dacă există muchia
j i
x x între vârfurile
i
x şi
j
x şi 0 =
ij
a
în caz contrar. În acest caz matricea de adiacenţă este simetrică, adică
ji ij
a a =
pentru orice n j i ,..., 1 , = . O altă matrice utilă în studiul conexităţii unui graf este
matricea drumurilor (sau matricea închiderii tranzitive a relaţiei binare asociate
grafului orientat), care se notează ( )
n j i
ij
a A
,..., 1 ,
* *
=
= şi are se defineşte astfel:
1
*
=
ij
a dacă există în graful G un drum care pleacă din vârful
i
x şi ajunge în
vârful
j
x şi 0
*
=
ij
a în caz contrar. Vom avea 1
*
=
ii
a dacă există un circuit care
trece prin
i
x şi 0
*
=
ii
a în caz contrar.


88
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
n
x x ,...,
1
şi m arce
m
e e ,...,
1
, matricea de incidenţă nod-arc este o matrice
dreptunghiulară cu n linii şi m coloane, pe care o notăm ( )
m j
n i
ij
b B
,..., 1
,..., 1
=
= = şi o
definim astfel: 1 =
ij
b dacă arcul
j
e pleacă din vârful
i
x , 1 − =
ij
b dacă arcul
j
e
intră în vârful
i
x şi 0 =
ij
b în caz cantrar, deci dacă
i
x nu este extremitate a
arcului
j
e . Să observăm că fiecare coloană a matricii de incidenţă B conţine un 1,
un 1 − şi 2 − n 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 ( )
m
i i i ,...,
1
= vectorul
intensităţilor curentului pe arcele reţelei electrice, prima lege a lui Kirchhoff se
scrie sub forma:
T T
Bi 0 = , 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 n r < .
Î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 n r < 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 1 − n .
Aplicând acest rezultat submatricilor corespunzătoare componentelor
conexe ale lui G, se află că rangul matricii B este p n − dacă graful are p
componente conexe.

Algoritmul lui Roy-Warshall

Acest algoritm serveşte la obţinerea matricii drumurilor
*
A plecând de la
matricea de adiacenţă A a unui graf G cu n vârfuri şi constă în următoarele:
1. Se face 1 = k .
2. Pentru n i ,..., 1 = şi n j ,..., 1 = şi k j i ≠ , se înlocuiesc elementele 0 =
ij
a
prin ( )
kj ik
a a , min .
3. Se repetă pasul 2 pentru n k ,..., 2 = .
Vom arăta că, la sfârşitul aplicării, algoritmului matricea obţinută este
tocmai matricea drumurilor
*
A . Acest algoritm poate fi exprimat şi în limbaj
operatorial, definind operatorul
k
T ce acţionează asupra unei matrici pătrate de
89
ordinul n cu 0 şi 1 în felul următor: B A T
k
= ) ( , unde ( )
n j i
ij
b B
,..., 1 , =
= este o
matrice pătrată de ordinul n, definită astfel:
( ) ( )
kj ik ij kj ik ij ij
a a a a a a b ∨ = = , min , max
pentru n j i ,..., 1 , = . Pentru simplificarea scrierii am notat operaţia maximum prin
∨, iar operaţia de minimum este tocmai operaţia produs în algebra booleană { } 1 , 0 .
Din cauza proprietăţii de absorbţie mai rezultă că
ij ij
a b = dacă i sau j este egal cu
k. La pasul 2 al algoritmului se calculează tocmai matricea ) ( A T
k
, deoarece
elementele 1 =
ij
a rămân invariante din definiţia operatorilor
k
T .
Propoziţia 4. Transformările
k
T sunt idempotente, iar oricare două
transformări
k
T ,
h
T comută între ele.
Teorema 2. Există egalitatea
*
1
) ( A A T
n
k
k
=

=

pentru orice matrice de adiacenţă A de ordinul n.
Să observăm că transformarea
k
T constă în înlocuirea tuturor elementelor
0 care nu se găsesc pe linia sau coloana k prin 1, dacă ambele lor proiecţii pe linia
şi coloana k sunt egale cu 1. Deoarece sunt ( )
2
1 − n elemente care nu se găsesc pe
linia şi coloana k, rezultă că atât numărul de operaţii minimum, cât şi numărul de
operaţii maximum necesitate de aplicarea algoritmului este egal fiecare cu
( )
2
1 − n n , care este complexitatea acestui algoritm.
Să notăm cu ( )
i
x S mulţimea vârfurilor care sunt extremităţi terminale ale
unor drumuri care pleacă din
i
x şi cu ( )
i
x P mulţimea vârfurilor care sunt
extremităţi iniţiale ale unor drumuri care se termină în
i
x . Componenta tare conexă
care conţine vârful
i
x este tocmai mulţimea ( ) ( ) { }
i i i
x x P x S ∪ ∩ . Dar mulţimile
( )
i
x S , respectiv ( )
i
x P se obţin imediat din matricea drumurilor
*
A : ( )
i
x S este
compusă din acele vârfuri
j
x pentru care indicele j verifică 1
*
=
ij
a , deci
corespund coloanelor care conţin un 1 în linia i , iar ( )
i
x P este compusă din acele
vârfuri
j
x pentru care 1
*
=
ji
a , deci care corespund liniilor care conţin un 1 în
coloana i . De aici rezultă un algoritm pentru găsirea componentelor tare conexe
ale unui graf orientat G plecând de la matricea drumurilor
*
A , ţinând seama că
aceste componente tare conexe constituie o partiţie a mulţimii de vârfuri ) (G V .



90
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 2 ≥ n 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 1 − n 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:

Problema arborelui parţial minim

Fie G un graf conex şi c o funcţie ( ) ∞ → , 0 ) ( : G E c care asociază
fiecărei muchii a grafului G un număr real pozitiv numit costul acelei muchii.
Costul unui graf parţial al lui G este egal prin definiţie cu suma costurilor asociate
muchiilor lui H, ceea ce vom scrie:


=
) (
) ( ) (
H E u
u c H c . Se pune problema
91
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.

Algoritmul lui Kruskal

Fie G un graf conex cu 2 ≥ n vârfuri şi o funcţie cost ( ) ∞ → , 0 ) ( : G E c .
Muchiile unui arbore parţial minim sunt selectate una câte una, după cum urmează:
Pasul 1: Dintre muchiile nealese ale lui ) (G E se selectează o muchie de cost
minim cu condiţia să nu formeze cicluri cu muchiile deja alese.
Pasul 2: Au fost selectate 1 − n muchii? Dacă da, ne oprim. Muchiile selectate
sunt muchiile unui arbore parţial minim al lui G. Dacă nu, se repetă
pasul 1.
Teorema 5. Algoritmul lui Kruskal produce un arbore parţial de cost
minim.
Se observă că la pasul curent al aplicării algoritmului muchiile selectate, în
ordinea crescătoare a costurilor, formează un număr de componente conexe care
toate sunt arbori. Aceştia se unesc în final pentru a forma un singur arbore, care
este un arbore parţial de cost minim. Dacă atribuim o aceeaşi etichetă (de exemplu
un număr natural cuprins între 1 şi n) tuturor vârfurilor dintr-o aceeaşi componentă,
având grijă ca componentele diferite să aibă etichete diferite, selectarea unei noi
muchii se poate face acum uşor, verificând numai ca etichetele extremităţilor ei să
fie diferite; apoi cele două componente în care se găsesc extremităţile ei se unifică
într-o singură componentă, deci toate etichetele celor două componente trebuie
unificate (de exemplu, cu eticheta cea mai mică). Folosind un vector cu n
componente V se iniţializează i i V = ) ( pentru n i ,..., 1 = , apoi se aplică algoritmul
descris de unificare a etichetelor la alegerea unei noi muchii pq astfel încât
) ( ) ( q V p V ≠ . Dacă G are n vârfuri şi m muchii, sortarea prealabilă a muchiilor în
ordinea crescătoare a costurilor necesită o complexitate de calcul de ordinul
( ) m m O log , iar parcurgerea de 1 − n ori a vectorului V al etichetelor şi unificarea
etichetelor vârfurilor din componentele care se unesc la fiecare pas mai necesită o
complexitate de ( )
2
n O . Rezultă în total o complexitate timp de ordinul
( )
2
log n m m O + , al doilea termen fiind absorbit de primul dacă graful are multe
muchii.




92
IV. DISTANTE SI DRUMURI MINIME IN GRAFURI ORIENTATE

Pentru un graf orientat G să presupunem că pe mulţimea arcelor sale
) (G E s-a definit o funcţie distanţă ( ) ∞ → , 0 ) ( : G E d care asociază fiecărui arc
al grafului G lungimea sa 0 ) , ( > j i d , care va fi notată în continuare cu
ij
d . Î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 ) ( , G V y x ∈ 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
( y x ≠ ) şi o vom nota cu ( ) y x d ,
*
, 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 ( ) ∞ = y x d ,
*
.
Lungimile
ij
d 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 n ,..., 1 : ( )
n j i
ij
d D
,..., 1 , =
= , unde
0 =
ii
d pentru orice n i ,..., 1 = ,
ij
d reprezintă lungimea arcului ) , ( j i dacă
) ( ) , ( G E j i ∈ şi ∞ =
ij
d dacă ) ( ) , ( G E j i ∉ . Matricea distanţelor minime,
notată ( )
n j i
ij
d D
,..., 1 ,
* *
=
= , se defineşte în modul următor: 0
*
=
ii
d pentru orice
n i ,..., 1 = ,
*
ij
d 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 ∞ =
*
ij
d 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.

Algoritmul lui Floyd are următorii paşi:

1. Se face 1 = k .
2. Pentru n i ,..., 1 = şi n j ,..., 1 = , j i ≠ , k i ≠ , k j ≠ , se înlocuieşte elementul
ij
d prin ( )
kj ik ij
d d d + , min .
3. Se repetă pasul 2 pentru n k ,..., 2 = .
La sfârşitul aplicării algoritmului, în locul matricii D apare matricea
*
D .
La fel ca în cazul găsirii matricii drumurilor, acest algoritm se poate exprima în
limbaj operatorial şi se poate justifica în mod asemănător.
93
Deoarece elementele de pe diagonala principală a matricii D rămân
neschimbate, numărul de adunări cât şi numărul de comparaţii pentru algoritmul lui
Floyd este egal cu ( )( ) 2 1 − − n n n .
În continuare vom prezenta un algoritm pentru determinarea atât a
distanţelor, cât şi a drumurilor minime de la un vârf fixat s al unui graf orientat la
toate celelalte vârfuri, având complexitatea timp de ordinul ( )
2
n O dacă graful are
n vârfuri. Pentru a descrie modul în care se obţin drumurile minime, vom defini
mai întâi noţiunea de arborescenţă. O arborescenţă se obţine dintr-un arbore A în
modul următor: se alege un vârf r al arborelui A şi se orientează toate muchiile
arborelui (care astfel devin arce) în mod unic astfel încât pentru orice vârf r x ≠ al
arborelui să existe un drum de la r la x. Vârful r se numeşte rădăcina arborescenţei.
Algoritmul care va fi descris calculează distanţele şi drumurile minime de la un
vârf s la toate celelalte vârfuri ale unui graf orientat G cu lungimile arcelor numere
nenegative. La sfârşitul aplicării algoritmului se obţine o arborescenţă A cu
rădăcina s şi mulţimea vârfurilor V(G) cu proprietatea că pentru orice vârf s i ≠
drumul unic de la s la i în A este un drum de lungime minimă în G. Arborescenţa
A este definită folosind funcţia predecesor, notată pred, astfel încât dacă
( ) ) ( , A E j i ∈ atunci i j pred = ) ( . Algoritmul etichetează fiecare vârf i al
grafului cu o etichetă notată ) (i l care este un majorant al distanţei minime de la
vârful s la vârful i , iar în final va fi egală chiar cu distanţa minimă de la s la i . La
fiecare pas intermediar algoritmul partiţionează vârfurile în două mulţimi:
mulţimea S a vârfurilor cu etichete permanente şi complementara sa S , a
vârfurilor cu etichete temporare. Etichetele permanente ale vârfurilor din S
reprezintă distanţele minime de la s la vârfurile respective, în timp ce etichetele
temporare ale vârfurilor din S reprezintă nişte majorări ale distanţelor minime. La
fiecare pas un vârf din S cu cea mai mică etichetă temporară este trecut din S în
S. La sfârşitul aplicării algoritmului ∅ = S , iar ) (i l va reprezenta pentru orice
vârf i distanţa minimă de la s la i .

Algoritmul lui Dijkstra

Se consideră un graf orientat cu n vârfuri notate n ,..., 1 pentru care
lungimea fiecărui arc ( ) j i, se notează cu 0 ≥
ij
d . Se fixează un vârf s din G. La
sfârşitul aplicării algoritmului ) (i l va fi distanţa minimă de la vârful s la vârful i
pentru orice n i ≤ ≤ 1 . Prin definiţie, 0 ) ( = s l . Dacă la sfârşitul aplicării
algoritmului pentru un vârf k se obţine ∞ = ) (k l , aceasta semnifică inexistenţa
drumurilor de la vârful s la vârful k în graf. În acest caz arborescenţa drumurilor
minime nu va conţine vârful k. Arborescenţa A a drumurilor minime de la s la
celelalte vârfuri are 1 − n arce, care sunt perechile ordonate ( ) i i pred ), ( pentru
orice n i ,..., 1 = şi s i ≠ . Paşii algoritmului sunt următorii:
94
1. ∅ ← S , ) (G V S ← .
2. 0 ) ( ← s l şi ∞ ← ) (i l pentru orice s i ≠ .
3. Cât timp n S < se execută următoarele operaţii:
a) se selectează un vârf S i ∈ pentru care
{ } S j j l i l ∈ = ) ( min ) ( ;
b) {} i S S ∪ ← , {} i S S \ ← ;
c) pentru fiecare arc ( ) j i, care are extremitatea iniţială în i şi extremitatea
finală în S j ∈ , dacă
ij
d i l j l + > ) ( ) ( ,
atunci
ij
d i l j l + ← ) ( ) ( şi i j pred ← ) ( .
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 n ,..., 1 , se pot obţine distanţele şi drumurile minime pentru
toate perechile ordonate de vârfuri ( ) j i, cu j i ≠ şi n j i ≤ ≤ , 1 .
Aceste algoritm se aplică şi grafurilor neorientate, înlocuind la pasul 3c)
arcul ( ) j i, prin muchia ij care are una dintre extremităţi în vârful i selectat
la acel pas şi cealaltă extremitate într-un vârf S j ∈ . Î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 ( n k ≤ ≤ 1 ),determinarea minimului din numerele ) ( j l pentru S j ∈ se
face cu ajutorul a 1 − k comparaţii. Deoarece există cel mult 1 − k arce de forma
( ) j i, cu i fixat în S şi j variabil în S , la compararea lui ) ( j l cu suma
ij
d i l + ) (
se fac cel mult 1 − k comparaţii şi 1 − k adunări. Deci numărul total de adunări
este cel mult egal cu
2
) 1 (
) 1 ( ... 2 1

= − + + +
n n
n şi un număr dublu de
comparaţii, adică ) 1 ( − n n .
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.



95
V. FLUX MAXIM IN RETELE DE TRANSPORT

În cazul reţelelor de transport vom nota prin ( ) x

ω , respectiv ( ) x
+
ω
mulţimea arcelor care intră, respectiv ies din vârful ) (G V x ∈ , adică
( ) ( ) ( ) { } ) ( , ), ( , G E x y G V y x y x ∈ ∈ = ω


şi
( ) ( ) ( ) { } ) ( , ), ( , G E y x G V y y x x ∈ ∈ = ω
+
.
Vom extinde aceste definiţii la o mulţime de vârfuri ) (G V A ⊂ în felul
următor:
( ) ( ) { } ) ( , , , , ) ( G E y x A y A x y x A ∈ ∈ ∉ = ω

,
iar
( ) ( ) { } ) ( , , , , ) ( G E y x A y A x y x A ∈ ∉ ∈ = ω
+
.
Un graf orientat G se numeşte reţea de transport dacă verifică următoarele
condiţii:
a) Există un vârf unic ) (G V s ∈ în care nu intră nici un arc, adică ∅ = ω

) (s ,
numit intrarea reţelei.
b) Exisţă un vârf unic ) (G V t ∈ din care nu pleacă nici un arc, adică ∅ = ω
+
) (t ,
numit ieşirea reţelei.
c) G este conex şi există drumuri de la s la t.
d) S-a definit o funcţie pe mulţimea arcelor ) (G E cu valori numere reale
nenegative:
+
→R G E c ) ( : .
Numărul ) (u c se numeşte capacitatea arcului u. O funcţie ϕ definită pe
mulţimea arcelor cu valori numere reale nenegative,
+
→ ϕ R G E ) ( : se numeşte
flux în reţeaua de transport G, dacă sunt îndeplinite următoarele două condiţii:
A. Condiţia de conservare a fluxului în orice vârf diferit de intrare şi ieşire:
pentru orice vârf s x ≠ şi t x ≠ , suma fluxurilor pe arcele care intră în x este
egală cu suma fluxurilor pe arcele care ies din x, ceea ce se scrie
∑ ∑
+
ω ∈

ω ∈
ϕ = ϕ
) ( ) (
) ( ) (
x u x u
u u .
B. Condiţia de mărginire a fluxului pe arcele reţelei: fluxul asociat oricărui arc nu
trebuie să depăşească capacitatea arcului respectiv, adică ) ( ) ( u c u ≤ ϕ pentru
orice arc ) (G E u ∈ .
Se notează fluxul pe arcele de intrare cu
s
ϕ şi fluxul pe arcele de ieşire cu
t
ϕ , adică
( )
( )

+
ω ∈
ϕ = ϕ
s u
s
u


96
şi


ω ∈
ϕ = ϕ
) (
) (
t u
t
u .
Propoziţia 6. Pentru orice reţea de transport există egalitatea
t s
ϕ = ϕ .
Pentru o reţea de transport G cu intrarea s şi ieşirea t vom considera o
submulţime de vârfuri ) (G V A ⊂ astfel încât A s ∉ şi A t ∈ . Mulţimea ) ( A

ω a
arcelor grafului pentru care extremitatea iniţială nu se găseşte în A, dar
extremitatea finală aparţine mulţimii A se numeşte tăietură de suport A.
Capacitatea tăieturii ) ( A

ω este egală prin definiţie cu suma capacităţilor arcelor
tăieturii şi vom nota
( )


ω ∈

= ω
) (
) ( ) (
A u
u c A c
Să observăm că orice drum care leagă intrarea s de ieşirea t conţine cel
puţin un arc dintr-o tăietură oarecare ) ( A

ω . Într-adevăr, deoarece A s ∉ şi
A t ∈ , vor exista două vârfuri vecine ale drumului, x şi y astfel încât A x ∉ şi
A y ∈ , deci ( ) ) ( , A y x

ω ∈ .
Propoziţia 7. Pentru orice flux ϕ şi orice tăietură ) ( A

ω dintr-o reţea de
transport G există relaţiile:
( ) ) ( ) ( ) (
) ( ) (
A c u u
A u A u
t

+
ω ∈

ω ∈
ω ≤ ϕ − ϕ = ϕ
∑ ∑
.
Un arc ) (G E u ∈ se numeşte saturat relativ la fluxul ϕ dacă
) ( ) ( u c u = ϕ . Problema fluxului maxim este problema determinării unui flux ϕ în
reţeaua G, astfel încât fluxul la ieşire
t
ϕ (care este egal cu fluxul la intrare), să aibă
cea mai mare valoare posibilă.
Teorema 6 (ford-Fulkerson). Pentru orice reţea de transport valoarea
maximă a fluxului la ieşire este egală cu capacitatea minimă a unei tăieturi, ceea
ce se mai scrie
( ) ) ( min max
) (
A c
A
t


ω ϕ
ω = ϕ .
Dacă teorema lui Ford-Fulkerson are loc pentru orice fel de capacităţi
numere reale pozitive, algoritmul următor pentru determinarea unui flux maxim,
datorat de asemenea lui Ford şi Fulkerson, funcţionează numai pentru capacităţi
numere întregi. Să observăm totuşi că deoarece putem amplifica atât capacităţile
arcelor cât şi componentele fluxului cu o aceeaşi cantitate pozitivă, obţinând o
problemă similară cu cea iniţială, problema determinării fluxului maxim cu
componente numere raţionale într-o reţea cu capacităţi numere raţionale se reduce
la cazul când componentele fluxului, cât şi capacităţile arcelor sunt numere întregi
nenegative.


97
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 ( ) y x u , = , unde x este etichetat şi ) ( ) ( u c u < ϕ . În
acest caz vârful y se etichetează cu | | x + ;
b) există arcul ( ) x y v , = , unde x este etichetat şi 0 ) ( > ϕ v . Î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.

Bibliografie partea a doua

1. M. Becheanu, I. Tomescu, B. Enescu, A. Vernescu, Matematică, Manual
pentru clasa a X-a (profil M2), Editura Teora, 2000, pp. 92-132.
2. I. Tomescu, Combinatorică şi teoria grafurilor, Tipografia Universităţii din
Bucureşti, 1978.
3. I. Tomescu, Probleme de combinatorică şi teoria grafurilor, Editura Didactică
şi Pedagogică, Bucureşti, 1981. Ediţia engleză: Problems in Combinatorics
and Graph Theory, John Wiley, New York, 1985.
4. M. Behzad, G. Chartrand, L. Lesniak-Foster, Graphs & Digraphs, Prindle,
Weber & Schmidt, Boston, Massachusetts, 1979.
5. B. Bollobas, Graph Theory. An Introductory Course, Springer-Verlag, New
York, Heidelberg, Berlin, 1979.

Propozţia 3. Numărul cuvintelor strict crescătoare de lungime n formate cu m simboluri este egal cu

[m] n
n!

. Acest număr este egal şi cu numărul

submulţimilor cu n elemente ale unei mulţimi cu m elemente. Numerele [m]n se mai notează prin  

cu parametrii m şi n . Propoziţia 4. Numărul cuvintelor crescătoare de lungime n formate cu

 m  şi se numesc numere binomiale  n

m simboluri este egal cu

[m]n .
n!

Numerele binomiale apar drept coeficienţi în formula binomului:

  (a + b )n = ∑  a n−k b k , k 
n

n

k =0

 

(1)

care este valabilă pentru orice a, b dintr-un inel comutativ. Propoziţia 5. Numărul de aranjări ale unei mulţimi de n obiecte X = {x1 ,..., x n } într-o mulţime de p căsuţe Y = y1 ,..., y p , astfel încât căsuţa

y i să conţină ni obiecte pentru orice 1 ≤ i ≤ p (n1 + ... + n p = n ) este egal cu
n! . n1!n 2 !...n p !

{

}

număr multinomial, care generalizează numerele binomiale (cazul p = 2 ) şi apar în formula multinomului care extinde relaţia (1): n   (a1 + a2 + ... + a p )n = ∑  n , n ,..., n a1n1 a2n2 ...a np p .   (2) n1 ,..., n p ≥ 0  1 2 p 
n1 +...+ n p = n

 Acest raport de factoriale se mai notează   n , n ,..., n  şi se numeşte p   1 2

n

75

. B ⊂ X .. ϕ(n ) reprezintă numărul numerelor naturale mai mici ca n şi relativ prime cu n. ⋅ pq adică  1  1   1  . ∪ Aq = n − ∑ Ai + = n−∑ i =1 q ∑ Ai ∩ Aj − . + (−1) n ∩A i =1 n i 76 .... n n n + ∑ − ... Dacă notăm cu Ai mulţimea permutărilor care au un punct fix în i rezultă că D ( n ) = n !− A1 ∪ . n}... Dacă AI ( 1 ≤ i ≤ q ) sunt submulţimi ale unei mulţimi X .. 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. Ai ∩ A j = etc.. adică o bijecţie 1 ∑ Ai ∩ Aj − . Permutarea are un punct fix în i dacă p (i ) = i . se obţine Ai = n n ..1 − ϕ(n ) = n1 − 1 − (5)  p1  p2   pq       2. + ( −1) ∩A i =1 q (4) i Aplicaţii 1...II.. are loc relaţia: ∪ Ai = ∑ Ai − i =1 i =1 q q 1≤i < j ≤ q ∑ Ai ∩ Aj + q −1 + 1≤i < j < k ≤ q ∑ Ai ∩ Aj ∩ Ak − . Dacă descompunerea lui n în i i i factori primi distincţi este n = p11 p 22 . Determinarea numărului D (n ) al permutărilor a n elemente fără puncte fixe p : X → X ... ∪ An = n !− ∑ Ai + i =1 n 1≤i < j ≤ n Fie p o permutare a mulţimii X = { . .. Teorema 1 (Principiul includerii şi al excluderii).. Deci pi pi p j q i =1 1≤i < j ≤ q ϕ ( n ) = n − A1 ∪ A2 ∪ . + (−1) q pi 1≤i < j ≤ q pi p j p1 ⋅ .. p qq şi se notează cu Ai mulţimea numerelor naturale mai mici sau egale cu n care sunt multipli de pi . Determinarea funcţiei lui Euler ϕ(n ) Fiind dat un număr natural n...

+ (−1) m −1   1 2  m − 1 III... ∩ Ai imagini putând fi alese în (n − k )! moduri. Se obţine.. BELL.. +  1! 2! k! n!   .. + (−1) m ∩A i =1 i Ai este mulţimea funcţiilor definite pe X cu valori în Y \ {y i } . l   (7) m  m  m  sn ..m = m n − A1 ∪ .... numerele lui Stirling. NUMERELE LUI STIRLING.. 1 ≤ i ≤ m .. Deoarece fiecare sumă deducem: 1≤ i1 <. vom dezvolta polinomul [x ]n în ordinea crescătoare a puterilor lui x..< il ≤ m .m = m n −   (m − 1) n +   (m − 2) n − .. rezultă k  n    1 1 (−1) k (−1) n D(n ) = n!1 − + − . Bell şi Fibonacci joacă un rol deosebit în probleme de numărare... Coeficienţii acestei dezvoltări sunt prin definiţie numerele lui Stirling de prima speţă. adică [x]n = ∑ s(n.. i2 . x n } şi Y = {y1 .... k )x k k =0 n (8) 77 . ik ..... + + .. Pentru fiecare i . adică m 1≤i < j ≤ m ∑ Ai ∩ Aj − .. k ) . deci Ai = (m − 1) n şi în general Ai1 ∩ . ∩ Ail = (m − l ) n . Determinarea numărului s n .   (6) 3. m al funcţiilor surjective Fie mulţimile X = {x1 .... FIBONACCI ŞI CATALAN Alături de numerele binomiale şi multinomiale.. 1 Ai1 ∩ Ai2 ∩ . pe care le notăm s (n. ∩ Aik = (n − k )! deoarece o permutare din k mulţimea Ai ∩ ... ∩ Ail conţine   termeni egali cu (m − l ) n . să notăm prin Ai mulţimea funcţiilor de la X în Y pentru care Ai = { f : X → Y y i ∉ f ( X )}. ∑  m Ai1 ∩ . celelalte fi alese din mulţimea celor n poziţii în   moduri. Deoarece k poziţii i1 .Se obţine. Pentru a defini numerele lui Stirling de prima speţă... ∪ Am = m n − ∑ Ai + i =1 m yi nu este imaginea nici unui element din X. y m } .. ik pot are puncte fixe în poziţiile i1 ... sn .

k ) n =1 k =0 1 2 3 4 5 … {(a ). k ) = s (n. {(b ). k − 1) − ns (n. m ) obţinându-se tabelul următor: 2 3 4 5 … m =1 S (n. deci S (4.s (n. d )}. partiţiile cu trei clase ale acestei mulţimi sunt: s (n. De exemplu.0 ) = 0 . (b. Să considerăm acum o partiţie a n elemente în k clase. (d ). k ) = 0 pentru n < k . dacă avem X = {a. {(a ). m ) 1 0 0 0 0 … n =1 2 3 4 5 … 1 1 1 1 … 1 3 7 15 … 0 1 6 25 … 0 0 1 10 … 0 0 0 1 … … … … … … 78 . 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. utilizând relaţiile s (n.3) = 6 . d )}. b. c. k − 1) partiţii ale unei mulţimi cu n elemente în lea. m ) . k ) se pot calcula prin recurenţă. (c ). c )}. k ) pentru 1 < k < n şi S (n. Aceste relaţii permit calculul prin recurenţă al numerelor S (n. n ) = 1 şi s (n + 1. n ) = 1 . Numerele s (n. adăugând la fiecare partiţie o nouă clasă formată dintr-un singur element şi anume al (n + 1) - Numerele lui Stirling de speţa a doua pot fi calculate prin recurenţă astfel. d } . c )}. {(c ). rezultă că S (n + 1. unde s(n. k ) . k − 1) + kS (n. (c. Să observăm că atât ordinea claselor. (a. (c ). cât şi ordinea elementelor într-o clasă a unei partiţii sunt indiferente. (d ). (a. {(a ). k − 1) partiţii a n + 1 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. d )}. este numărul partiţiilor unei mulţimi cu n elemente în m clase. Se obţine tabelul următor. (b. Considerând mulţimea celor S (n. notat S (n. b )}.1) = S (n. putem obţine S (n. k − 1 clase. (b ). (a. {(b ). k ) = S (n. 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) . (d ).

m ) = −1 s n.Pentru calculul direct al numerelor lui Stirling de speţa a doua.. oricărei surjecţii f a mulţimii X = {x1 . Polinoamele x n se exprimă ca sume de polinoamele [x ]k cu x n = ∑ S (n. ale numerelor lui Stirling de prima şi de a doua speţă sunt inverse una alteia. Numerele lui Bell verifică următoarea relaţie de recurenţă: (12) unde B0 = 1 . adică ∑ S ( p.m = ∑ (−1) k  (m − k ) n k m! m! k =0   claselor.m anume f ( y1 ) f −1 ( y 2 ). m ) = (9) coeficienţii S (n.. Ţinând seama de (7) rezultă: S (n. rezultă că n! funcţii surjective de la X pe Y vor genera o aceeaşi partiţie a mulţimii X.q este simbolul lui Kronecker. Pentru a introduce numerele lui Fibonacci vom rezolva următoarea problemă de numărare: 79 . k )s(k ... k )[x ]k k =1 n (10) n Ca urmare a rezultatului din propoziţia 6 putem scrie şi relaţia m n = ∑ m(m − 1). adică: Propoziţia 6.... Numărul tuturor partiţiilor unei mulţimi cu n elemente se notează cu Bn şi se numeşte numărul lui Bell. Deci conform definiţiei.q pentru orice n număr natural fixat şi orice 1 ≤ p. k ) k =1 k =1 n (11) Sunstituindu-l în (10) pe [x ]k cu expresia dată de (8) şi egalând coeficienţii lui x n din cei doi membri ai expresiei astfel obţinute. k ) = ∑ [n]k S (n. se deduce că matricile..(m − k + 1) S (n. de un ordin fixat. q ) = δ k =1 n p . Bn = ∑ S (n. k =1 n n Bn +1 = ∑   Bk   k =0  k  n Propoziţia 7. k ) .. x n } pe m! mulţimea Y = {y1 . k ) .. f −1 ( y m ) . unde δ p . Deoarece într-o partiţie nu contează ordinea m 1 1 m −1 s n . vom arăta .. q ≤ n . Într-adevăr. y n } îi corespunde o partiţie a mulţimii X cu m clase şi că S (n..

este egal cu:  n − k + 1  Fn +1 = ∑   k  k ≥0   (13) Ultimul indice k pentru care suma de mai sus conţine termeni nenuli este  n + 1  2  .. F1 = 1 . Notând acest număr cu C n . (x1 x2 )(x3 x 4 ) . C 3 = 2 . x 2 .. Există 1 relaţia: Propoziţia 8. Prin definiţie se consideră C1 = 1 . F2 = 2 . ceea ce se obţine imediat asociind în mod canonic fiecărui mod de a pune parantezele într-un produs cu n factori un arbore binar cu cele n frunze etichetate cu cei n factori ai produsului sau numărul de moduri în care putem triangulariza suprafaţa unui poligon convex cu n + 1 vârfuri ducând n − 2 diagonale ( n ≥ 2 ) (Euler). deoarece avem (x1 x2 )x3 .. de exemplu C n reprezintă numărul de arbori binari cu n noduri terminale (frunze).. deoarece numerele binomiale sunt nenule numai pentru indicele superior   mai mare sau egal cu indicele inferior. este dată de propoziţia următoare: Propoziţia 9. Se notează cu f (n. k ) =   k    Rezultă că numărul tuturor submulţimilor lui x n care nu conţin doi întregi consecutivi (luând în considerare şi mulţimea vidă. ((x1 x2 )x3 )x4 . x1 (( x 2 x3 )x 4 ) . x1 ( x 2 ( x3 x 4 )) . notate C n . (x1 ( x 2 x3 ))x 4 . F3 = 3 . Numerele Fn Se numesc numerele lui Fibonacci.X n = { . Există relaţia: Numerele lui Catalan intervin în multe probleme de numărare.. C 4 = 5 . n} care au k elemente şi nu conţin doi intregi consecutivi.. f (n.. x1 (x2 x3 ) . F4 = 5 şi se observă că Fn = Fn −1 + Fn − 2 pentru orice n ≥ 2 . = α n = 0 ). Expresia numerelor lui Catalan Cn = 1  2n − 2    n  n −1    (14) (x1 x2 ) . vom considera următoarea problemă de numărare: Să se determine în câte moduri putem pune parantezele într-un produs de n factori scrişi în ordinea x1 ... Pentru a defini numerele lui Catalan. k ) numărul submulţimilor lui  n − k + 1 . Din (13) se obţine: F0 = 1 . x n .. căreia îi corespunde cuvântul având α 1 = . 80 . se deduce C 2 = 1 .

. n) = 1 . 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. + P(n.2) + . 4 + 2 + 1 şi 4 + 3 .. a 2 .1) + P(n. Prin P(n. + a m unde numerele naturale a1 .. Aceste numere verifică mai multe relaţii de recurenţă. iar partiţiile lui 7 cu 4 părţi sunt: 4 + 1 + 1 + 1 . m = 1 2 3 4 5 6 7 … P(n) P(n.. Are loc relaţia Q p (n) = Qi (n) dacă n nu se poate 81 n =1 . m) verifică recurenţa: P (n. Această propoziţie ne permite calculul prin recurenţă al numerelor P (n.. k ) = P(n + k . printre care şi cea dată de propoziţia următoare. a m (numite părţile partiţiei) verifică inegalităţile: a1 ≥ a 2 ≥ .1) = P (n. două partiţii ale lui n se deosebesc numai prin natura părţilor a1 . 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 + . Propoziţia 10. nu şi prin ordinea lor. + P(n.... k ) . De exemplu.. adică P (n) = P(n. partiţiile lui 7 cu cea mai mare parte egală cu 4 sunt: 4 + 1 + 1 + 1 .. n) .. aşa cum se face în tabelul următor.. Propoziţia 13 (Euler)..... Numerele P (n. a m să formeze un şir descrescător. Propoziţia 11. 3 + 2 + 1 + 1 şi 2 + 2 + 2 + 1 .1) + P(n..IV. k ) linie cu linie. (15) iar P (n.. 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. ≥ a m ≥ 1 . O serie de proprietăţi ale partiţiilor unui întreg sunt date de propoziţiile următoare. este egal cu numărul partiţiilor lui n cu k părţi. a m . Din cauza condiţiei impuse ca numerele a1 .. m) se va nota numărul partiţiilor numărului natural şi pozitiv n în m părţi. pentru n = 7 şi k = 4 . m) 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.2) + . Numărul de partiţii ale lui n. Propoziţia 12. astfel încât cea mai mare parte să fie egală cu k..

1 . Bucureşti. Ediţia engleză: Problems in Combinatorics and Graph Theory.(1 − x n ). Editura Tehnică. Berge. Pentru orice n ≥ 3 numerele P (n) verifică relaţia de recurenţă    3k 2 − k  3k 2 + k     + P n −  = P (n) = ∑ (−1) K −1  P n −   2  2  k ≥0      = P (n − 1) + P(n − 2) − P(n − 5) − P(n − 7) + . Introducere în combinatorică. I. Tomescu. London and Wellingborough. 1981. Springer-Verlag.3k 2 ± k cu k număr întreg. I. C. Funcţia generatoare a numerelor P (n) este: ∑ P (n) x n =0 = (1 − x )(1 − x 2 ). Probleme de combinatorică şi teoria grafurilor. În caz contrar. II. Bucureşti. 1968... Combinatorial theory.. Paris. 82 . (16) unde prin definiţie P (0) = 1 . Tomescu. are loc 2 relaţia Q p (n) = Qi (n) + (−1) k . Tipografia Universităţii din Bucureşti. Tomescu. Editura Didactică şi Pedagogică.. 1975.. n =1 ∞ unde ψ (n) = (−1) k dacă n = sub forma n = 3k 2 ± k şi ψ (n) = 0 dacă n nu se poate reprezenta 2 3k 2 ± k cu k număr întreg.. New York. 1972. Paris. Ediţia engleză: Introduction to combinatorics.. Principes de combinatoire. Corolar 2 (teorema pentagonală a lui Euler). I.. Combinatorică şi teoria grafurilor.. se obţine 1 + ∑ ψ (n) x n = 1 − x − x 2 + x 5 + x 7 − x12 − x 15 + x 22 + x 26 − . Dunod. . 1970. 5. 2. Comtet. Aigner.. 3. M. John Wiley. I. 1979. Presses Universitaires de France. este scris sub forma unei serii. Analyse combinatoire. Dacă produsul infinat (1 − x )(1 − x 2 ).. 4. Bibliografie partea întâi 1. Berlin-Heidelberg.(1 − x n ). 6.. 1985. 2 ∞ n Propoziţia 14.. Collet's Publishers Ltd. L. 1978. reprezenta sub forma n = Corolar 1 (Identitatea lui Euler).

Un graf este o pereche (V (G ). meciurile directe dintre echipele participante la un turneu sportiv. Orice graf G poate fi desenat în plan reprezentând vârfurile sale prin puncte şi muchiile prin linii care unesc anumite perechi de vârfuri. În secolul al XIX-lea dezvoltarea teoriei grafurilor a fost impulsionată de aplicaţiile în fizică (teoria reţelelor electrice). graniţele dintre statele reprezentate pe o hartă. Aceste muchii pot reprezenta legăturile chimice dintr-o moleculă. Două vârfuri unite printr-o muchie se numesc adiacente. legăturile rutiere sau feroviare dintre localităţi. descoperite de Crum Brown). în care a demonstrat imposibilitatea realizării unui traseu care să treacă o singură dată peste fiecare pod. Propoziţia 1. fiind consacrată ''problemei celor 7 poduri'' din Konigsberg. în informatică. Gradul unui vârf x este egal cu numărul muchiilor care au o extremitate în vârful x şi se notează cu d (x) . unde V (G ) este o mulţime finită şi nevidă de elemente numite vârfuri şi E (G ) este o mulţime de perechi neordonate de elemente distincte din V (G ) numite muchii. Într-o astfel de reprezentare nu contează distanţele dintre vârfuri sau unghiurile dintre muchii. adică x∈V ( G ) ∑ De aici rezultă că pentru orice graf numărul vârfurilor de grad impar este par. 83 . Mai întâi vom defini noţiunile de bază relative la grafurile neorientate. în chimie. precum şi în multe alte domenii. Pentru orice graf suma gradelor este egală cu dublul d ( x) = 2 E (G ) . În prezent. chimie (studiul fenomenelor de izomerism. NOTIUNI SI DEFINITII DE BAZA Prima lucrare de teoria grafurilor a fost scrisă de Euler în anul 1736. ierarhiile dintr-o structură administrativă. V (G ) se numeşte mulţimea vârfurilor şi E (G ) mulţimea muchiilor grafului G. al reţelelor de interconexiune din calculul paralel. numărului de muchii. legăturile dintre nodurile unei reţele de calculatoare. pe care le vom numi pe scurt grafuri. Un vârf de gradul zero se numeşte vârf izolat. E (G ) ) . rezistenţele sau tensiunile electromotoare dintr-o reţea electrică. O muchie {x. studiul poliedrelor convexe şi a legăturii lor cu grafurile planare şi problema celor patru culori. teoria grafurilor este o ramură a matematicii. Cele două vârfuri care compun o muchie se numesc extremităţile muchiei. al algoritmilor de sortare şi regăsirea informaţiei. iar un vârf de gradul unu este numit vârf terminal. muchiile unui poliedru.Partea a doua: Elemente de teoria grafurilor I. dar modelul de graf este utilizat în cercetarea operaţională pentru rezolvarea unor probleme de optimizare. pentru studiul reţelelor de calculatoare. y} se va nota mai simplu xy şi vom spune că ea uneşte vârfurile x şi y. Un graf neorientat este compus din două mulţimi: o mulţime de vârfuri şi o mulţime de muchii care sunt perechi de vârfuri.

două vârfuri distincte fiind adiacente în G dacă şi numai dacă ele nu sunt adiacente în G. Grafurile conexe au o singură componentă conexă. Un lanţ poate fi interpretat ca traseul unei deplasări pe muchiile grafului... x r ] . x r −1 x r sunt distincte.. care reprezintă numărul de muchii ale ciclului. x1 . Un ciclu într-un graf G este o succesiune finită de vârfuri ale lui G. Se spune că subgraful H este indus sau generat de mulţimea de vârfuri V (G ) .. x r −1 sunt distincte. …. Numărul r.. iar numărul r care reprezintă numărul de muchii ale lanţului se numeşte lungimea acestui lanţ. x1 . cu proprietatea că oricare două vârfuri vecine sunt adiacente.. adică xi xi +1 ∈ E (G ) pentru orice 0 ≤ i ≤ r − 1 .. a ] .Un graf parţial al unui graf G este un graf H care are aceeaşi mulţime de vârfuri cu G. Un lanţ într-un graf G este o succesiune finită de vârfuri ale lui G care se notează [x0 . cu următoarele proprietăţi: a) oricare două vârfuri vecine sunt adiacente. Dacă toate vârfurile x0 .. De aceea.. Un subgraf al unui graf G este un graf H astfel încât V ( H ) ⊆ V (G ) .. Dacă nu am impune condiţia c).. x1 . Deci un graf parţial al lui G este G sau se obţine din G prin suprimarea anumitor muchii din G. iar muchiile lui H sunt toate muchiile lui G care au ambele extremităţi în mulţimea de vârfuri V (H ) . se numeşte lungimea acestui ciclu. 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). ciclul se numeşte elementar. x r sunt distincte. O altă noţiune fundamentală este aceea de ciclu. există un lanţ de extremităţi x şi y în G. Deci un ciclu este un lanţ care se întoarce în punctul de plecare şi pentru care toate muchiile parcurse sunt distincte. x1 ... lanţul se numeşte elementar. un lanţ de extremităţi x0 şi x r se mai spune că este un lanţ de la x0 la x r .. deci V ( H ) = V (G ) şi E ( H ) ⊆ E (G ) . xr ] . notată [x0 . y ale lui G. Un graf G se numeşte conex dacă pentru orice pereche de vârfuri distincte x. Graful complementar grafului G se notează prin G şi el are V (G ) = V (G ) şi E (G ) = E (G ) . Dacă vârfurile x0 . adică xi xi +1 ∈ E (G ) pentru orice 0 ≤ i ≤ r − 1.. b) x0 = x r . 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. Vârfurile x0 şi x r se numesc extremităţile lanţului. x1 x 2 . c) toate muchiile x0 x1 . adică complementara mulţimii muchiilor lui G. 84 . atunci orice graf care are o muchie ab ar conţine şi un ciclu şi anume [a.. b.

graful dodecaedrului este cubic şi are 20 vârfuri. acelaşi număr de cicluri de o anumită lungime etc. Ciclurile elementare cu p vârfuri se notează C p . b) dacă xy ∉ E (G ) atunci f ( x) f ( y ) ∈ E ( H ) . Teorema 1 (Konig). Într-un graf bipartit orice ciclu conţine un număr par de vârfuri. Un graf bipartit complet pentru care V1 = m şi V2 = n se notează K m .Clase speciale de grafuri Un graf pentru care oricare două vârfuri sunt adiacente se numeşte graf complet. 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 ) . format dintr-un vârf central adiacent cu alte n vârfuri. Noţiunea de izomorfism al grafurilor explică fenomenul de izomerism din chimie. graful cubului este 3-regulat (astfel de grafuri se mai numesc cubice). V (G ) = V1 ∪ V2 . Dacă orice vârf din V1 este adiacent cu orice vârf din V2 . Graful complet cu n vârfuri se notează K n şi al are   muchii. Graful complet K n este (n − 1) -regulat. Astfel moleculele de butan şi de 2metilpropan (izobutan) conţin fiecare patru atomi de carbon şi zece atomi de 85 . astfel încât fiecare muchie uneşte un vârf din V1 cu un vârf din n V2 . Un graf G este bipartit dacă şi numai dacă nu conţine cicluri impare. Deoarece f este o bijecţie între mulţimile de vârfuri ale celor două grafuri. aceleaşi şiruri ale gradelor vârfurilor. Graful octaedrului este 4-regulat şi are 6 vârfuri. Dacă acest grad comun al vârfurilor este egal cu k.n . grafurile izomorfe au acelaşi număr de muchii. iar graful icosaedrului este 5-regulat şi are 12 vârfuri. graful se numeşte k-regulat. De exemplu. Un interes special în clasa grafurilor regulate îl reprezintă grafurile formate cu vârfurile şi muchiile celor 5 poliedre regulate. graful se numeşte bipartit complet. graful G se numeşte bipartit. De asemenea. Toate  2   vârfurile grafului K n au gradul n − 1 . De exemplu ciclurile impare C 2 k +1 . Dacă mulţimea vârfurilor unui graf G poate fi partiţionată în două mulţimi disjuncte de vârfuri. neadiacente între ele se numeşte graf-stea. grafurile G şi H diferă eventual printr-o renumerotare a vârfurilor. Un graf se numeşte regulat dacă toate vârfurile sale au un acelaşi grad. unde k ∈ N nu sunt bipartite şi vom vedea că inexistenţa ciclurilor impare caracterizează grafurile bipartite. el are 8 vârfuri. Astfel graful tetraedrului regulat este graful complet K 4 . deoarece el trece alternativ din V1 în V2 şi se întoarce în punctul de plecare. Cu alte cuvinte. moleculele de hidrocarburi constau din atomi de carbon de valenţă 4 şi de hidrogen de valenţă 1. Un graf bipartit complet de forma K 1.n . rezultă că oricare două grafuri izomorfe au acelaşi număr de vârfuri.

este numărul arcelor care îl au pe x extremitate finală. Propoziţia 2. xi +1 ) ∈ E (G ) sau (xi +1 .. Un drum într-un graf orientat G este un caz particular de lanţ. notat d + ( x ) . Grafurile asociate au fiecare câte 14 vârfuri. x r ) . cu proprietatea că oricare două vârfuri vecine sunt adiacente.. Deci un drum este o succesiune finită de vârfuri ale lui G care se notează (x 0 . Ca şi în cazul neorientat. Două vârfuri unite printr-un arc se numesc adiacente. orice vârf x are două grade: gradul exterior. numite arce. respectiv extremitatea finală ale lanţului. iar numărul de arce r este lungimea lanţului. deoarece o substanţă nou descoperită trebuie să aibă graful neizomorf cu graful substanţelor deja cunoscute. având formula C 4 H 10 . Se spune că x care pleacă din vărful x. notat d − ( x ) .. care este egală cu numărul de arce ale grafului G. y ) . Există situaţii când modelul de graf neorientat nu este suficient pentru a reprezenta o situaţie dată. deci care intră în vârful x.. de la extremitatea iniţială către extremitatea finală. este numărul arcelor care îl au pe x extremitate iniţială. vârfurile x0 şi x r se numesc extremitatea iniţială. V (G ) se numeşte mulţimea vârfurilor şi E (G ) mulţimea arcelor grafului G. adică este extremitatea iniţială şi y este extremitatea finală a arcului ( x.. în cazul grafurilor orientate mulţimea arcelor este o submulţime a produsului cartezian V (G ) × V (G ) care conţine numai perechi ( x. 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. xi +1 ) ∈ E (G ) pentru orice 0 ≤ i ≤ r − 1. Pentru orice graf orientat G suma gradelor de intrare este egală cu suma gradelor de ieşire ale vârfurilor lui G. Astel de structuri neizomorfe care au aceeaşi formulă chimică (în cazul de faţă C 4 H 10 ) se numesc izomeri. Ca şi în cazul grafurilor neorientate. xi ) ∈ E (G ) pentru orice 0 ≤ i ≤ r − 1 . 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 ) . cu proprietatea că (xi . y ) de vârfuri distincte. Spre deosebire de cazul neorientat. dar nu sunt izomorfe. x r ]. Un graf orientat G este o pereche (V (G ). Următorul rezultat este analogul propoziţiei 1 pentru grafuri orientate. Noţiunile de graf parţial şi de subgraf al unui graf orientat se definesc la fel ca şi în cazul neorientat. deci (xi . gradul interior. iar un drum închis pentru care arcele nu se repetă se numeşte circuit. Deci un ciclu într-un graf 86 . E (G ) ) .. Deci. care se obţine când toate arcele au o aceeaşi orientare. Recunoaşterea izomorfismului a două grafuri este importantă în chimie. Un lanţ închis pentru care arcele nu se repetă se numeşte ciclu.. Un lanţ într-un graf orientat G este o succesiune finită de vârfuri ale lui G care se notează [x0 .hidrogen. fiind necesar să definim o anumită orientare a muchiilor.. înlocuind peste tot cuvântul muchie prin cuvântul arc.

matricea sa de adiacenţă are proprietatea că aij = 1 dacă există muchia xi x j între vârfurile xi şi x j şi aij = 0 în caz contrar. există un drum de la x la y şi un drum de la y la x... Astfel putem considera grafurile neorientate cazuri particulare de grafuri orientate şi anume grafuri orientate simetrice. x ≠ y .. n .. x r ) cu următoarele proprietăţi: a) 0 ≤ i ≤ r − 1 . O altă matrice utilă în studiul conexităţii unui graf este matricea drumurilor (sau matricea închiderii tranzitive a relaţiei binare asociate * grafului orientat). x1 ) . x ) ∈ E (G ) se numeşte simetric. Dacă vârfurile grafului sunt x1 .. c) toate arcele lanţului sunt distincte.. Un graf orientat G cu proprietatea că pentru orice arc (x. (x1 . În acest caz matricea de adiacenţă este simetrică. se numeşte lungimea sa. Dacă graful G este neorientat. y ∈ V (G ) ... xi +1 ) ∈ E (G ) pentru orice 0 ≤ i ≤ r − 1 .n şi are se defineşte astfel: ( ) * aij = 1 dacă există în graful G un drum care pleacă din vârful xi şi ajunge în * * vârful x j şi aij = 0 în caz contrar. xr ) sunt distincte. notată [x0 .... Un circuit este o b) x0 = x r ... ciclul.. respectiv circuit. xi ) ∈ E (G ) pentru orice orientat G este o succesiune finită de vârfuri ale lui G. notată A = (aij )i .i =1... c) toate arcele Numărul arcelor unui ciclu. Î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. (x0 .. x j ) ∈ E (G ) şi aij = 0 în caz contrar.. 87 . j = 1.. Vom avea aii = 1 dacă există un circuit care * trece prin xi şi a ii = 0 în caz contrar. (x r −1 .. xi +1 ) ∈ E (G ) sau (xi +1 . x r ] cu succesiune finită de vârfuri ale lui G. adică aij = a ji pentru orice i.n se defineşte astfel: aij = 1 dacă există arcul (xi . x n . 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.. ….următoarele proprietăţi: a) (xi .. un graf orientat se numeşte conex dacă între oricare două vârfuri distincte există un lanţ care le uneşte.. respectiv circuitul se numeşte elementar. Dacă toate vârfurile x0 . (xi . j =1. Ca şi în cazul neorientat. y ) ∈ E (G ) arcul ( y... Deoarece putem schimba rolurile celor două vârfuri. b) x0 = x r .. II. MATRICI ASOCIATE UNUI GRAF ORIENTAT Un graf orientat G cu n vârfuri poate fi caracterizat de o matrice pătrată cu n linii şi n coloane. x 2 ) .. care se notează A* = aij i . matricea de adiacenţă. cu elemente 0 şi 1 şi numită matricea de adiacenţă a grafului. notată (x 0 . x r −1 sunt distincte..

n j =1. n şi i. n . Deci. 3. iar 0 reprezintă vectorul linie cu n componente nule.. prima lege a lui Kirchhoff se scrie sub forma: Bi T = 0 T . algoritmului matricea obţinută este tocmai matricea drumurilor A* . oricare r linii r < n ale matricii B sunt linear independente. Am obţinut următorul rezultat: Propoziţia 3 (Kirchhoff). n şi j = 1. bij = −1 dacă arcul e j intră în vârful xi şi bij = 0 în caz cantrar.... care devine astfel un graf orientat şi notând cu i = (i1 . 2. Vom arăta că. unde T reprezintă transpusul unui vector.. ceea ce contrazice faptul că G este conex. Dar suma celor n linii ale matricii B este vectorul nul. Fixând un sens al curentului pe fiecare latură a unei reţele electrice.. rangul matricii sale de incidenţă nod-arc este n − 1 . Algoritmul lui Roy-Warshall Acest algoritm serveşte la obţinerea matricii drumurilor A* plecând de la matricea de adiacenţă A a unui graf G cu n vârfuri şi constă în următoarele: 1. Se face k = 1 ....O altă matrice care caracterizează un graf orientat şi este utilă în studiul circuitelor electrice este matricea de incidenţă nod-arc..... Dacă graful G are n vârfuri şi este conex. Se repetă pasul 2 pentru k = 2. Într-adevăr... Să observăm că fiecare coloană a matricii de incidenţă B conţine un 1.. Pentru i = 1. Acest algoritm poate fi exprimat şi în limbaj operatorial. deci dacă xi nu este extremitate a arcului e j ... m şi o definim astfel: bij = 1 dacă arcul e j pleacă din vârful xi . pe care o notăm B = bij ( ) i =1.. x n şi m arce e1 . im ) vectorul intensităţilor curentului pe arcele reţelei electrice.. em . a kj .. matricea de incidenţă nod-muchie va conţine doi de 1 pe fiecare coloană. j ≠ k se înlocuiesc elementele aij = 0 prin min a ik .. un − 1 şi n − 2 zerouri.. deci ele sunt linear dependente... În cazul grafurilor neorientate.. la sfârşitul aplicării. se află că rangul matricii B este n − p dacă graful are p componente conexe.. Aplicând acest rezultat submatricilor corespunzătoare componentelor conexe ale lui G... î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. Dacă graful orientat G are n vârfuri x1 .. 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 . definind operatorul Tk ce acţionează asupra unei matrici pătrate de ( ) 88 .. matricea de incidenţă nod-arc este o matrice dreptunghiulară cu n linii şi m coloane..

Th comută între ele. Transformările Tk sunt idempotente. rezultă că atât numărul de operaţii minimum. Există egalitatea ∏ T ( A) = A k k =1 n * şi coloana k sunt egale cu 1. iar operaţia de minimum este tocmai operaţia produs în algebra booleană {0. Componenta tare conexă care conţine vârful xi este tocmai mulţimea S (xi ) ∩ P ( xi ) ∪ {xi } . n . Propoziţia 4. a kj )) = aij ∨ aik a kj pentru i. Deoarece sunt (n − 1) elemente care nu se găsesc pe linia şi coloana k...1} . deci care corespund liniilor care conţin un 1 în ji coloana i . dacă ambele lor proiecţii pe linia n(n − 1) .. Din cauza proprietăţii de absorbţie mai rezultă că bij = a ij dacă i sau j este egal cu k. cât şi numărul de operaţii maximum necesitate de aplicarea algoritmului este egal fiecare cu 2 pentru orice matrice de adiacenţă A de ordinul n. Să notăm cu S ( xi ) mulţimea vârfurilor care sunt extremităţi terminale ale unor drumuri care pleacă din xi şi cu P ( xi ) mulţimea vârfurilor care sunt extremităţi iniţiale ale unor drumuri care se termină în xi . De aici rezultă un algoritm pentru găsirea componentelor tare conexe ale unui graf orientat G plecând de la matricea drumurilor A* . 89 . n este o bij = max (aij . definită astfel: ( ) i . j =1. Teorema 2. Pentru simplificarea scrierii am notat operaţia maximum prin ∨ ... Dar mulţimile 2 S ( xi ) .. care este complexitatea acestui algoritm. j = 1. deoarece elementele aij = 1 rămân invariante din definiţia operatorilor Tk . ţinând seama că aceste componente tare conexe constituie o partiţie a mulţimii de vârfuri V (G ) . respectiv P( xi ) se obţin imediat din matricea drumurilor A* : S ( xi ) este * compusă din acele vârfuri x j pentru care indicele j verifică aij = 1 . min (aik .ordinul n cu 0 şi 1 în felul următor: Tk ( A) = B . iar oricare două transformări Tk . iar P ( xi ) este compusă din acele vârfuri x j pentru care a * = 1 .. Să observăm că transformarea Tk constă în înlocuirea tuturor elementelor 0 care nu se găsesc pe linia sau coloana k prin 1. La pasul 2 al algoritmului se calculează tocmai matricea Tk ( A) .. unde B = bij matrice pătrată de ordinul n. deci corespund coloanelor care conţin un 1 în linia i .

Astfel. avem de a face cu un tip special de arbori. ARBORI SI ALGORITMUL LUI KRUSKAL Un graf conex şi fără cicluri se numeşte arbore. dată de teorema următoare. Un graf G are un arbore parţial dacă şi numai dacă G este conex. Se pune problema muchiilor lui H. cu două componente conexe. Dacă graful parţial H este arbore. el se numeşte arbore parţial al lui G. unei expresii aritmetice i se asociază în mod natural un arbore. ∞ ) care asociază fiecărei muchii a grafului G un număr real pozitiv numit costul acelei muchii. în vârfurile căruia se reprezintă atât operatorii. Am văzut că un graf parţial H al grafului G. Se observă din desenul unui arbore că. Corolar 1. în graful astfel obţinut apare un ciclu. Arborii au o proprietate remarcabilă. Teorema 4. vârful în care este reprezentată ultima operaţie se numeşte rădăcina arborelui binar. la rândul lor. Propoziţia 5. În cazul arborilor binari se face distincţie între stânga şi dreapta. Am văzut că vârfurile de gradul 1 ale unui graf se numesc vârfuri terminale. Subarborii stâng şi drept ai rădăcinii sunt. împărţirea) nu sunt comutative. Teorema 3. Costul unui graf parţial al lui G este egal prin definiţie cu suma costurilor asociate c(u ) . Aceste proprietăţi au loc pentru orice arbore. Rădăcina are un subarbore stâng şi un subarbore drept. Astfel. oricum am suprima o muchie a unui arbore se obţine un graf neconex. cum este următoarea: Problema arborelui parţial minim Fie G un graf conex şi c o funcţie c : E (G ) → (0. iar celelalte vârfuri conţin operatori. Frunzele au asociaţi operanzi. care în cazul unui arbore se mai numesc şi frunze. Orice arbore cu n ≥ 2 vârfuri are cel puţin două vârfuri terminale. ceea ce vom scrie: c( H ) = u∈E ( H ) ∑ 90 . c) G este un graf fără cicluri maximal. ridicarea la putere. adică G este conex. dar prin unirea printr-o muchie a oricăror două vârfuri neadiacente ale lui G. dar devine neconex prin suprimarea unei muchii oarecare. b) G este un graf conex minimal. Terminologia ţine seama de asemănarea cu arborii din natură. graful obţinut conţine cicluri. De asemenea. este graful G sau se obţine din G prin suprimarea anumitor muchii. Aceşti arbori sunt utilizaţi în multe capitole ale informaticii. adică G nu conţine cicluri. Proprietatea unui arbore de a fi un graf conex minimal face ca arborii să apară într-o serie de probleme de optimizare. arbori binari. Următoarele afirmaţii sunt echivalente pentru un graf G: a) G este conex şi fără cicluri. numiţi arbori binari. Orice arbore cu n vârfuri are n − 1 muchii.III. oricum am uni printr-o nouă muchie două vârfuri neadiacente ale unui arbore. Deoarece unele operaţii (scăderea. cât şi operanzii.

Se observă că la pasul curent al aplicării algoritmului muchiile selectate.. al doilea termen fiind absorbit de primul dacă graful are multe muchii. Muchiile unui arbore parţial minim sunt selectate una câte una. deci toate etichetele celor două componente trebuie unificate (de exemplu. n . formează un număr de componente conexe care toate sunt arbori. Aceştia se unesc în final pentru a forma un singur arbore. pe scurt. deoarece arborii sunt singurele grafuri conexe minimale. Algoritmul lui Kruskal Fie G un graf conex cu n ≥ 2 vârfuri şi o funcţie cost c : E (G ) → (0. Teorema 5. iar parcurgerea de n − 1 ori a vectorului V al etichetelor şi unificarea etichetelor vârfurilor din componentele care se unesc la fiecare pas mai necesită o complexitate de O n 2 . ne oprim. Algoritmul lui Kruskal produce un arbore parţial de cost minim. Un astfel de graf parţial conex de cost minim trebuie să fie un arbore parţial. se repetă pasul 1. Folosind un vector cu n componente V se iniţializează V (i ) = i pentru i = 1.. Dacă atribuim o aceeaşi etichetă (de exemplu un număr natural cuprins între 1 şi n) tuturor vârfurilor dintr-o aceeaşi componentă. apoi se aplică algoritmul descris de unificare a etichetelor la alegerea unei noi muchii pq astfel încât V ( p) ≠ V (q) .. având grijă ca componentele diferite să aibă etichete diferite. verificând numai ca etichetele extremităţilor ei să fie diferite.determinării unui graf parţial H al lui G care trebuie să fie conex şi să aibă un cost minim. care este un arbore parţial de cost minim. selectarea unei noi muchii se poate face acum uşor. descriem în continuare algoritmul lui Kruskal. Deci orice graf parţial de cost minim care este conex este un arbore parţial al lui G. pe care îl vom numi. apoi cele două componente în care se găsesc extremităţile ei se unifică într-o singură componentă. arbore parţial minim. Dacă nu. Rezultă în total o complexitate timp de ordinul O m log m + n 2 . ∞ ) . ( ) ( ) 91 . Dacă G are n vârfuri şi m muchii. după cum urmează: Pasul 1: Dintre muchiile nealese ale lui E (G ) se selectează o muchie de cost minim cu condiţia să nu formeze cicluri cu muchiile deja alese. în ordinea crescătoare a costurilor. cu eticheta cea mai mică). Pentru găsirea unui arbore parţial de cost minim al unui graf conex. Pasul 2: Au fost selectate n − 1 muchii? Dacă da. Acest arbore parţial există conform corolarului 1. sortarea prealabilă a muchiilor în ordinea crescătoare a costurilor necesită o complexitate de calcul de ordinul O(m log m ) . Muchiile selectate sunt muchiile unui arbore parţial minim al lui G..

n : D = d ij i ... Matricea distanţelor minime. 2.. 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. 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. 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. Algoritmul lui Floyd are următorii paşi: 1.. iar elementele de pe diagonala principală nu se mai calculează.IV.. unde ( ) d ii = 0 pentru orice i = 1. j =1... i ≠ k . Se repetă pasul 2 pentru k = 2....... y ) = ∞ . j ≠ k . 92 . Pentru două vârfuri x. ele rămânând egale cu 0. n . În cazul unui astfel de graf ponderat vom defini lungimea unui drum D ca fiind egală cu suma lungimilor arcelor drumului D. n .. ∞ ) care asociază fiecărui arc al grafului G lungimea sa d (i.. Se face k = 1 . Algoritmul lui Floyd permite calcularea matricii D * plecând de la matricea D a distanţelor directe şi este analog algoritmului lui RoyWarshall pentru obţinerea matricii drumurilor plecând de la matricea de adiacenţă a unui graf. 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.. j ) > 0 .. notată * D * = d ij ( ) i . n . d ij reprezintă lungimea arcului (i. j ) dacă (i. 3. minimul lungimilor drumurilor din graful G care au extremitatea iniţială în x şi extremitatea finală în y. definite pe mulţimea numerelor reale pozitive.. Pentru i = 1. în locul matricii D apare matricea D * . n * . se defineşte în modul următor: d ii = 0 pentru orice * i = 1. j ) ∈ E (G ) şi d ij = ∞ dacă (i. acest algoritm se poate exprima în limbaj operatorial şi se poate justifica în mod asemănător.. Se schimbă numai operaţiile de maximum şi minimum prin minimum şi respectiv +. se înlocuieşte elementul d ij prin min (d ij . d ik + d kj ) ...n ....... care va fi notată în continuare cu d ij . i ≠ j . 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... La fel ca în cazul găsirii matricii drumurilor. La sfârşitul aplicării algoritmului. Dacă nu există nici un drum de la x la y în G vom defini d * ( x. n . y ) . n şi j = 1.. j =1.. j ) ∉ E (G ) .

O arborescenţă se obţine dintr-un arbore A în modul următor: se alege un vârf r al arborelui A şi se orientează toate muchiile arborelui (care astfel devin arce) în mod unic astfel încât pentru orice vârf x ≠ r al arborelui să existe un drum de la r la x. n şi i ≠ s .. Arborescenţa A este definită folosind funcţia predecesor. Paşii algoritmului sunt următorii: 93 Se consideră un graf orientat cu n vârfuri notate 1. numărul de adunări cât şi numărul de comparaţii pentru algoritmul lui Floyd este egal cu n(n − 1)(n − 2 ) . j ) ∈ E ( A) atunci pred ( j ) = i .. vom defini mai întâi noţiunea de arborescenţă. n pentru care . astfel încât dacă (i. în timp ce etichetele temporare ale vârfurilor din S reprezintă nişte majorări ale distanţelor minime. notată pred. ( ) Algoritmul lui Dijkstra lungimea fiecărui arc (i.. având complexitatea timp de ordinul O n 2 dacă graful are n vârfuri.. aceasta semnifică inexistenţa drumurilor de la vârful s la vârful k în graf.. Prin definiţie. În continuare vom prezenta un algoritm pentru determinarea atât a distanţelor. La sfârşitul aplicării algoritmului l (i ) va fi distanţa minimă de la vârful s la vârful i pentru orice 1 ≤ i ≤ n . Pentru a descrie modul în care se obţin drumurile minime. La fiecare pas un vârf din S cu cea mai mică etichetă temporară este trecut din S în S..Deoarece elementele de pe diagonala principală a matricii D rămân neschimbate. Arborescenţa A a drumurilor minime de la s la celelalte vârfuri are n − 1 arce.. iar l (i ) va reprezenta pentru orice vârf i distanţa minimă de la s la i . care sunt perechile ordonate ( pred (i ). Vârful r se numeşte rădăcina arborescenţei. Algoritmul care va fi descris calculează distanţele şi drumurile minime de la un vârf s la toate celelalte vârfuri ale unui graf orientat G cu lungimile arcelor numere nenegative. cât şi a drumurilor minime de la un vârf fixat s al unui graf orientat la toate celelalte vârfuri. Se fixează un vârf s din G. a vârfurilor cu etichete temporare. i ) pentru orice i = 1. La fiecare pas intermediar algoritmul partiţionează vârfurile în două mulţimi: mulţimea S a vârfurilor cu etichete permanente şi complementara sa S . La sfârşitul aplicării algoritmului S = ∅ . j ) se notează cu d ij ≥ 0 . Algoritmul etichetează fiecare vârf i al grafului cu o etichetă notată l (i ) care este un majorant al distanţei minime de la vârful s la vârful i . l ( s ) = 0 . La sfârşitul aplicării algoritmului se obţine o arborescenţă A cu rădăcina s şi mulţimea vârfurilor V(G) cu proprietatea că pentru orice vârf i ≠ s drumul unic de la s la i în A este un drum de lungime minimă în G. iar în final va fi egală chiar cu distanţa minimă de la s la i . În acest caz arborescenţa drumurilor minime nu va conţine vârful k.. Dacă la sfârşitul aplicării algoritmului pentru un vârf k se obţine l (k ) = ∞ . Etichetele permanente ale vârfurilor din S reprezintă distanţele minime de la s la vârfurile respective.

Deoarece există cel mult k − 1 arce de forma (i. S ← V (G ) .. c) pentru fiecare arc (i. n . n(n − 1) şi un număr dublu de 2 94 . dacă { } i b) S ← S ∪ {} . Dacă graful conţine şi arce cu lungimea negativă. 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 . S ← ∅ .1. înlocuind la pasul 3c) arcul (i. Distanţele minime se obţin în ordinea apropierii vârfurilor respective de originea s. între vârfurile situate pe un circuit cu suma lungimilor arcelor sale negativă nu există un minim al distanţelor între vârfurile sale.. j ) cu i fixat în S şi j variabil în S . Aceste algoritm se aplică şi grafurilor neorientate. acestea putând fi făcute să tindă la − ∞ . 2. + (n − 1) = comparaţii. se pot obţine distanţele şi drumurile minime pentru toate perechile ordonate de vârfuri (i. l ( j ) > l (i ) + d ij . În acest caz arborescenţa drumurilor minime devine un arbore al drumurilor minime care au o extremitate în s. 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. 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 .. Deci numărul total de adunări este cel mult egal cu 1 + 2 + . adică n(n − 1) . S ← S \ {i} .. De exemplu. atunci l ( j ) ← l (i ) + d ij şi pred ( j ) ← i .. Complexitatea timp a algoritmului se evaluează astfel: Dacă S are k elemente ( 1 ≤ k ≤ n ).. j ) care are extremitatea iniţială în i şi extremitatea finală în j ∈ S . j ≤ n . Există algoritmi (de exemplu algoritmul lui Dantzig) care detectează existenţa circuitelor negative. l ( s ) ← 0 şi l (i ) ← ∞ pentru orice i ≠ s . Aplicând de n ori acest algoritm şi luând de fiecare dată ca vârf sursă s fiecare din vârfurile 1. j ) cu i ≠ j şi 1 ≤ i. 3. la compararea lui l ( j ) cu suma l (i) + d ij se fac cel mult k − 1 comparaţii şi k − 1 adunări.determinarea minimului din numerele l ( j ) pentru j ∈ S se face cu ajutorul a k − 1 comparaţii. se poate ca anumite distanţe minime dintre vârfurile sale să nu existe.

y ∈ A. d) S-a definit o funcţie pe mulţimea arcelor E (G ) cu valori numere reale nenegative: c : E (G ) → R+ . y ) ∈ E (G )}. ( y. Se notează fluxul pe arcele de intrare cu ϕ s şi fluxul pe arcele de ieşire cu ϕ t . adică ω − (s ) = ∅ . b) Exisţă un vârf unic t ∈ V (G ) din care nu pleacă nici un arc. y ) x ∈ A. Condiţia de conservare a fluxului în orice vârf diferit de intrare şi ieşire: pentru orice vârf x ≠ s şi x ≠ t . adică ϕ(u ) ≤ c(u ) pentru orice arc u ∈ E (G ) . c) G este conex şi există drumuri de la s la t. Vom extinde aceste definiţii la o mulţime de vârfuri A ⊂ V (G ) în felul următor: ω − ( A) = ( x. (x. ( x. Numărul c(u ) se numeşte capacitatea arcului u. adică ω + (t ) = ∅ . FLUX MAXIM IN RETELE DE TRANSPORT În cazul reţelelor de transport vom nota prin ω − ( x ) . respectiv ω + ( x ) mulţimea arcelor care intră. Condiţia de mărginire a fluxului pe arcele reţelei: fluxul asociat oricărui arc nu trebuie să depăşească capacitatea arcului respectiv.V. numit ieşirea reţelei. respectiv ies din vârful x ∈ V (G ) . x ) ∈ E (G )} şi ω + ( x ) = {( x. Un graf orientat G se numeşte reţea de transport dacă verifică următoarele condiţii: a) Există un vârf unic s ∈ V (G ) în care nu intră nici un arc. u∈ω− ( x ) ∑ u∈ω+ ( x ) ∑ B. y ) ∈ E (G )}. O funcţie ϕ definită pe mulţimea arcelor cu valori numere reale nenegative. adică ω − ( x ) = {( y. y ) ∈ E (G ) . y ∉ A. dacă sunt îndeplinite următoarele două condiţii: A. ceea ce se scrie ϕ(u ) = ϕ(u ) . ( x. { } iar ω + ( A) = {( x. suma fluxurilor pe arcele care intră în x este egală cu suma fluxurilor pe arcele care ies din x. numit intrarea reţelei. ϕ : E (G ) → R+ se numeşte flux în reţeaua de transport G. y ) x ∉ A. adică ϕs = u∈ω+ ( s ) ∑ ϕ(u ) 95 . x ) y ∈ V (G ). y ) y ∈ V (G ).

Capacitatea tăieturii ω − ( A) este egală prin definiţie cu suma capacităţilor arcelor tăieturii şi vom nota c ω − ( A) = ( ) ∑ c(u ) u∈ω− ( A ) Să observăm că orice drum care leagă intrarea s de ieşirea t conţine cel puţin un arc dintr-o tăietură oarecare ω − ( A) . ceea ce se mai scrie max ϕ t = min c ω − ( A) .şi ϕt = u∈ω− ( t ) ∑ ϕ(u ) . Propoziţia 6. Pentru orice flux ϕ şi orice tăietură ω − ( A) dintr-o reţea de transport G există relaţiile: ϕt = ϕ(u ) − ϕ(u ) ≤ c ω − ( A) . − ϕ ω ( A) ( ) Dacă teorema lui Ford-Fulkerson are loc pentru orice fel de capacităţi numere reale pozitive. u∈ω− ( A ) ∑ u∈ω+ ( A ) ∑ ( ) Un arc u ∈ E (G ) se numeşte saturat relativ la fluxul ϕ dacă ϕ(u ) = c(u ) . deoarece s ∉ A şi t ∈ A . să aibă cea mai mare valoare posibilă. obţinând o problemă similară cu cea iniţială. algoritmul următor pentru determinarea unui flux maxim. Propoziţia 7. Să observăm totuşi că deoarece putem amplifica atât capacităţile arcelor cât şi componentele fluxului cu o aceeaşi cantitate pozitivă. Pentru orice reţea de transport valoarea maximă a fluxului la ieşire este egală cu capacitatea minimă a unei tăieturi. Într-adevăr. Problema fluxului maxim este problema determinării unui flux ϕ în reţeaua G. Mulţimea ω − ( A) a arcelor grafului pentru care extremitatea iniţială nu se găseşte în A. Pentru o reţea de transport G cu intrarea s şi ieşirea t vom considera o submulţime de vârfuri A ⊂ V (G ) astfel încât s ∉ A şi t ∈ A . dar extremitatea finală aparţine mulţimii A se numeşte tăietură de suport A. y ) ∈ ω − ( A) . Teorema 6 (ford-Fulkerson). x şi y astfel încât x ∉ A şi y ∈ A . datorat de asemenea lui Ford şi Fulkerson. funcţionează numai pentru capacităţi numere întregi. vor exista două vârfuri vecine ale drumului. Pentru orice reţea de transport există egalitatea ϕ s = ϕ t . cât şi capacităţile arcelor sunt numere întregi nenegative. deci (x. 96 . astfel încât fluxul la ieşire ϕ t (care este egal cu fluxul la intrare). problema determinării fluxului maxim cu componente numere raţionale într-o reţea cu capacităţi numere raţionale se reduce la cazul când componentele fluxului.

Ediţia engleză: Problems in Combinatorics and Graph Theory. algoritmul lui Ford-Fulkerson constă în următoarele: Pasul 1: Se determină un flux cu componente numere naturale. Tomescu. I. 97 . definit în acelaşi mod ca în demonstraţia teoremei lui Ford-Fulkerson. Editura Teora. demonstraţia acestei proprietăţi decurgând din demonstraţia teoremei lui FordFulkerson. Algoritmul are un număr finit de paşi deoarece atât capacităţile arcelor cât şi componentele fluxului fiind numere naturale. 1978. I. G. Urmărind etichetele vârfurilor în sens invers. ne oprim. An Introductory Course. Un vârf y neetichetat se poate eticheta în următoarele două situaţii: a) există arcul u = ( x. A. y ) . se reconstituie un lanţ nesaturat L pe care fluxul poate fi mărit cu ε . Weber & Schmidt. Manual pentru clasa a X-a (profil M2). Becheanu. Bucureşti. John Wiley. M. Probleme de combinatorică şi teoria grafurilor. 3. Bibliografie partea a doua 1. Tomescu. Graph Theory. Behzad. unde x este etichetat şi ϕ(v) > 0 . 5. B. Combinatorică şi teoria grafurilor. de la t la s. de exemplu se poate alege fluxul cu componente nule pe fiecare arc. Lesniak-Foster. Enescu. B. Cu noul flux ϕ′ se merge la pasul 2. 1981. În caz contrar t a fost etichetată. Tomescu.Algoritmul lui Ford-Fulkerson În cazul când capacităţile arcelor sunt numere naturale. Chartrand. la fiecare mărire a fluxului valoarea ϕ t creşte cu ε ≥ 1 iar fluxul este mărginit. pp. 4. New York. Graphs & Digraphs. care verifică condiţiile de conservare şi mărginire. Boston. Dacă după ce se fac toate etichetările posibile ieşirea t nu a fost etichetată. New York. La sfârşitul aplicării algoritmului arcele care unesc vârfurile etichetate cu vârfurile neetichetate constituie o tăietură de capacitate minimă. Prindle. 2000. Tipografia Universităţii din Bucureşti. L. Pasul 2: Se aplică următorul procedeu de etichetare: Se etichetează intrarea s. Vernescu. el neputând depăşi capacitatea minimă a unei tăieturi. Bollobas. I. Berlin. 1985. Springer-Verlag. Massachusetts. M. x ) . Matematică. 2. 92-132. 1979. În acest acest caz vârful y se etichetează cu [+ x ] . Heidelberg. 1979. fluxul obţinut este maxim. caz y se etichetează cu [− x ] . unde x este etichetat şi ϕ(u ) < c(u ) . Editura Didactică şi Pedagogică. În b) există arcul v = ( y.

Sign up to vote on this title
UsefulNot useful