P. 1
Combinatorica Si Teoria Grafurilor

Combinatorica Si Teoria Grafurilor

|Views: 2,072|Likes:
Published by Zgureanu Aureliu

More info:

Published by: Zgureanu Aureliu on May 17, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/21/2013

pdf

text

original

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

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

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

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

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

. 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 x 4 ) . F1 = 1 .. Prin definiţie se consideră C1 = 1 . ((x1 x2 )x3 )x4 .. Pentru a defini numerele lui Catalan. 80 ... k ) numărul submulţimilor lui  n − k + 1 . = α n = 0 ). F4 = 5 şi se observă că Fn = Fn −1 + Fn − 2 pentru orice n ≥ 2 .X n = { . de exemplu C n reprezintă numărul de arbori binari cu n noduri terminale (frunze). se deduce C 2 = 1 . 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 . f (n. Expresia numerelor lui Catalan Cn = 1  2n − 2    n  n −1    (14) (x1 x2 ) . deoarece numerele binomiale sunt nenule numai pentru indicele superior   mai mare sau egal cu indicele inferior. 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  .. F3 = 3 . Notând acest număr cu C n . căreia îi corespunde cuvântul având α 1 = . x 2 . Din (13) se obţine: F0 = 1 . (x1 ( x 2 x3 ))x 4 . Există relaţia: Numerele lui Catalan intervin în multe probleme de numărare. C 3 = 2 .. x n . Numerele Fn Se numesc numerele lui Fibonacci. C 4 = 5 .. x1 (( x 2 x3 )x 4 ) . este dată de propoziţia următoare: Propoziţia 9. F2 = 2 . 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 . x1 ( x 2 ( x3 x 4 )) . notate C n . n} care au k elemente şi nu conţin doi intregi consecutivi.. Există 1 relaţia: Propoziţia 8. x1 (x2 x3 ) . Se notează cu f (n.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

96 . vor exista două vârfuri vecine ale drumului. Propoziţia 7. 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 . 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 există egalitatea ϕ s = ϕ t . să aibă cea mai mare valoare posibilă. − ϕ ω ( A) ( ) Dacă teorema lui Ford-Fulkerson are loc pentru orice fel de capacităţi numere reale pozitive. deci (x. Mulţimea ω − ( A) a arcelor grafului pentru care extremitatea iniţială nu se găseşte în A. u∈ω− ( A ) ∑ u∈ω+ ( A ) ∑ ( ) Un arc u ∈ E (G ) se numeşte saturat relativ la fluxul ϕ dacă ϕ(u ) = c(u ) . y ) ∈ ω − ( A) . dar extremitatea finală aparţine mulţimii A se numeşte tăietură de suport A. Problema fluxului maxim este problema determinării unui flux ϕ în reţeaua G. cât şi capacităţile arcelor sunt numere întregi nenegative. ceea ce se mai scrie max ϕ t = min c ω − ( A) . Pentru orice reţea de transport valoarea maximă a fluxului la ieşire este egală cu capacitatea minimă a unei tăieturi. funcţionează numai pentru capacităţi numere întregi. datorat de asemenea lui Ford şi Fulkerson. Pentru orice flux ϕ şi orice tăietură ω − ( A) dintr-o reţea de transport G există relaţiile: ϕt = ϕ(u ) − ϕ(u ) ≤ c ω − ( A) . obţinând o problemă similară cu cea iniţială.şi ϕt = u∈ω− ( t ) ∑ ϕ(u ) . 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) . Propoziţia 6. 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. Teorema 6 (ford-Fulkerson). deoarece s ∉ A şi t ∈ A . Într-adevăr. astfel încât fluxul la ieşire ϕ t (care este egal cu fluxul la intrare). x şi y astfel încât x ∉ A şi y ∈ A . algoritmul următor pentru determinarea unui flux maxim.

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

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->