Sunteți pe pagina 1din 31

1

ALGORITMICA GRAFURILOR
Conf. Univ. Dr. Silviu Brz


I. INTRODUCERE N TEORIA GRAFURILOR

1.1. Grafuri neorientate

Definiie. Fie X o mulime finit i nevid i { } { }
, , U x y x y X .
Numim graf (sau graf neorientat) perechea ( ) , G X U = . Eelemente din mulimea
X se numesc noduri sau vrfuri, iar elementele din mulimea U poart numele
de muchii ale grafului.
Un graf se reprezint grafic printr-o mulime de puncte corespunztoare
vrfurilor grafului i o mulime de segmente corespunztoare muchiilor. Dac
pentru un graf exist o reprezentare n care s nu existe dou segmente care s se
intersecteze, atunci spunem c graful reprezentat este un graf planar.
Pornind de la definiie observm c dac X are n elemente, atunci U are
cel mult
2
n
C elemente.
Dac A este o mulime, vom nota prin A numrul de elemente ale
mulimii.
Definiie. Fie ( ) , G X U = un graf i x X un nod fixat. Prin gradul
nodului x nelegem numrul muchiilor incidente lui x i notm acest numr cu
( ) d x . Dac ( ) 1 d x = spunem c x este nod terminal. Dac ( ) 0 d x = spunem
c x este nod izolat.
Propoziia 1. Fie ( ) , G X U = un graf n care U m = . Atunci
( ) 2
x X
d x m

.
Propoziia 2. Pentru orice graf ( ) , G X U = , numrul vrfurilor de grad
impar este par.
Definiie. Fie ( ) , G X U = un graf.. Numim graf parial al lui G, graful
( ) , G X V = , unde V U .
Definiie. Fie ( ) , G X U = un graf. Numim subgraf n G, graful
( ) , G Y V = , n care Y X , iar { } { }
, , V x y U x y Y = .

2
Definiie. Fie ( ) , G X U = un graf cu n vrfuri ( X n = ). Spunem c G
este un graf complet , dac oricare ar fi , x y X , avem { } , x y U (orice dou
vrfuri din G sunt conectate sau adiacente).
Graful complet cu n vrfuri se noteaz prin
n
K
Propoziia 3. Numrul muchiilor lui
n
K este
2
n
C .

Definiie. Fie ( ) , G X U = un graf. Dac exist
1
X i
2
X astfel nct
1 2
X X = i
1 2
X X X = ( X admite o partiie din dou blocuri
1
X i
2
X )
i orice muchie din G unete un nod din
1
X cu unul din
2
X (oricare ar fi
{ } , e x y U = , dac
1
x X , atunci
2
y X ) spunem c G este graf bipartit.
Definiie. Fie ( ) , G X U = un graf bipartit cu partiiile
1
X i
2
X . Dac
1
X p = i
2
X q = i dac fiecare vrf din
1
X este adiacent cu toate vrfurile
din
2
X (pentru orice
1
x X i orice
2
y X avem { } , x y U ) spunem c G
este un graf bipartit complet, notat
, p q
K .
Propoziia 4. Graful bipartit complet
, p q
K are pq muchii.
Definiie. Fie ( ) , G X U = un graf. Numim lan n G o succesiune de
vrfuri ( )
0 1 0 1
, ,..., ...
r r
L x x x x x x = = , astfel nct pentru orice 0,1,..., 1 i r = ,
1 i i
x x U
+
(adic o succesiune n care oricare dou vrfuri vecine din lan sunt
adiacente).
Fie ( ) , G X U = este un graf i
0 1
...
r
L x x x = un lan n G . Vrfurile
0
x i
r
x se numesc extremitile lanului L iar r se numete lungimea lanului L ,
notat ( ) l L r = (lungimea unui lan este dat de numrul muchiilor sale sau de
numrul vrfurilor mai puin unul).
Definiie. Fie ( ) , G X U = un graf. Lanul L din G se numete lan
elementar dac pentru orice 0 , i j r , i j , avem
i j
x x (lanul trece prin
noduri distincte).
Definiie. Fie ( ) , G X U = un graf. Lanul L din G se numete lan
simplu dac pentru orice 0 , 1 i j r , i j , avem { } { }
1 1
, ,
i i j j
x x x x
+ +
(toate
muchiile sale sunt distincte).
Propoziia 5. Fie ( ) , G X U = un graf i L un lan n G . Dac L este
lan elementar, atunci L este lan simplu.


3
1.2. Grafuri orientate

Definiie. Fie X o mulime finit i nevid. Numim graf orientat (digraf)
orice pereche ( ) , G X U = n care U X X este o mulime finit de perechi
ordonate cu componente din X (U este o relaie binar pe X ).
Elementele mulimii X vor fi numite vrfuri sau noduri. Elementele
mulimii U se numesc arce.
Orice arc are forma ( ) , a b , n care a se numete extremitate iniial, iar
b se numete extremitate final a arcului ( ) , a b .
Un graf orientat se reprezint grafic printr-o mulime de puncte
corespunztoare vrfurilor i printr-o mulime de segmente orientate (sgei)
corespunztoare arcelor..O sgeat este orientat de la extremitatea iniial spre
extremitatea final a arcului pe care l reprezint.
Dac ( ) , u x y U = spunem c x i y sunt adiacente n G i c
nodurile x i y sunt incidente arcului u sau c arcul u este incident nodurilor x
i y . Mai exact, spunem c u este incident exterior nodului x ( u pleac sau iese
din x ) i c u este incident interior nodului y ( u ajunge sau intr n y ). Arcul
( ) , x y U se mai noteaz i prin xy .
Definiie. Fie ( ) , G X U = un graf orientat i x X un nod fixat.
a) Numim grad interior al lui x , numrul arcelor incidente interior lui x ,
adic mrimea ( ) ( ) { }
, d x y x U y X

= .
b) Numim grad exterior al lui x , numrul arcelor incidente exterior lui x ,
adic mrimea ( ) ( ) { }
, d x x y U y X
+
= .
c) Prin gradul nodului x nelegem numrul total al arcelor incidente lui x ,
adic mrimea ( ) ( ) ( ) d x d x d x
+
= + .
d) Dac ( ) 0 d x = spunem c x X este vrf izolat.
e) Dac ( ) 1 d x

= i ( ) 0 d x
+
= spunem c x X este vrf terminal; dac
( ) 0 d x

= i ( ) 1 d x
+
= spunem c x X este vrf iniial.
Definiie. Fie ( ) , G X U = un graf orientat i A X o mulime de
vrfuri.
a) Gradul interior lui A este numrul arcelor ce intr n A i care au nodul
iniial n afara lui A, adic mrimea
( ) ( ) { }
, , d A y x U y A x A

= .

4
b) Gradul exterior lui A este numrul arcelor ce ies din A i au nodul
terminal n afara lui A, adic mrimea
( ) ( ) { }
, , d A x y U x A y A
+
= .
c) Gradul total al lui A este ( ) ( ) ( ) d A d A d A
+
= + .
Observaii.
1) Evident, pentru orive A X avem ( ) ( )
x A
d A d x

, deoarece s-ar
putea ca anumite arce care ies din A s aib extremitatea final tot n A,
arce care nu se numr la determinarea valorii ( ) d A
+
.
2) Evident, pentru orive A X avem ( ) ( )
x A
d A d x
+ +

, deoarece s-ar
putea ca anumite arce care intr n A s aib extremitatea iniial tot n A,
arce care nu se numr la determinarea valorii ( ) d A

.
Din 1) i 2) rezult c ( ) ( )
x A
d A d x

.
Definiie. Fie ( ) , G X U = un graf orientat. Numim graf orientat parial
al lui G graful orientat ( ) , G X V = n care V U .
Un graf orientat parial al lui G se obine prin suprimarea anumitor arce
ale lui G .
Definiie. Fie ( ) , G X U = un graf orientat. Numim subgraf orientat al
lui G , graful orientat ( ) , H Y V = n care Y X , iar ( ) { }
, , V x y U x y Y =
(mulimea tuturor arcelor lui G cu ambele extremiti n Y ).
Un subgraf orientat se obine suprimnd anumite vrfuri din G i
eliminnd toate arcele incidente vrfurilor suprimate.
Definiie. Fie ( ) , G X U = un graf orientat. Dac pentru orice , x y X
avem ( ) , x y U sau ( ) , y x U spunem c G este graf orientat complet.
Un graf orientat complet cu n vrfuri se notean cu
n
K .
Observaie. n cazul grafurilor neorientate, pentru un n, 2 n ,
exist un singur graf complet cu n vrfuri, notat
n
K . n cazul grafurilor orientate
pentru un n, 2 n dat, exist mai multe grafuri orientate complete cu n
vrfuri, ele diferind fie prin orientarea arcelor, fie prin numrul de arce ce unesc
dou vrfuri, numr ce poate fi 1 sau 2.





5
Definiie. Fie ( ) , G X U = un graf orientat. Numim drum n G o
succesiune de vrfuri ( )
0 1
, ,...,
r
d x x x = astfel nct pentru orice 0,1,..., 1 i r = ,
1 i i
x x U
+
(sau o succesiune de arce care au acelai sens,
( )
1 1
, ,...,
p
d u u u = , cu
proprietatea c pentru orice 1, 2,..., 1 i p = ,
i
u i
1 i
u
+
au o extremitate comun,
mai exact extremitatea final a lui
i
u coincide cu extremitatea iniial a lui
1 i
u
+
.
Fie ( )
0 1
, ,...,
r
d x x x = un drum n graful ( ) , G X U = .
0
x se numete
extremitatea iniial, iar
r
x extremitatea final a drumului d .
Definiie. Drumul ( )
0 1
, ,...,
r
d x x x = din graful ( ) , G X U = se numete
elementar dac pentru orice , 0,1,..., i j r = , i j , avem
i j
x x (drumul trece
prin noduri distincte).
Definiie. Fie ( ) , G X U = un graf orientat. Numim lan n G , o secven
de noduri | |
0 1
, ,...,
r
L x x x = cu proprietatea c pentru orice 0,1,..., 1 i r = avem
( )
1
,
i i
x x U
+
sau ( )
1
,
i i
x x U
+
(sau o succesiune de arce
1 2
, ,...,
p
L u u u ( =

astfel nct pentru orice 1, 2,..., 1 i p = , arcele
i
u i
1 i
u
+
au
o extremitate comun - nu se mai pune condiia ca arcele s aib acelai sens, ca
la drumuri).
Observaie. Din definiie rezult imediat c orice drum este ntr-un graf
orientat este n acelai timp i lan n graful orientat respectiv.
Definiie. Fie ( ) , G X U = un graf orientat. Pentru orice , x y X
spunem c y este accesibil din x sau y este atins din x dac i numai dac
exist ( )
0 1
, ,...,
r
d x x x = un drum de capete x i y ..

II. TIPURI PARTICULARE DE GRAFURI

Definiie. Se nume te multigraf un graf neorientat n care cel puin dou
vrfuri sunt unite prin muchii multiple.
Definiie. Graful orientat ( ) , G X U = se numete reflexiv (nereflexiv,
simetric, antisimetric, total, tranzitiv) dac i numai dac relaia binar U este
relaie binar reflexiv (nereflexiv, simetric,antisimetric, total, tranzitiv).
Definiie. Fie ( ) , G X U = un graf orientat. Dac pentru fiecare x X
se asociaz o etichet pentru identificare spunem c G este un graf orientat
etichetat.

6
Observc c la toate grafurile de mai sus un folosit o numerotare a
vrfurilor. Numerele folosite pot fi considerate etichete pentru vrfuri i astfel
grafurile pot fi considerate drept grafuri etichetate.
Definiie. Fie ( ) , G X U = un graf orientat. G se numete graf orientat
marcat sau reea dac fiecrui u U i se asociaz o marc
u
m . n acest caz,
U X M X , M fiind mulimea mrcilor asociate arcelor. Dac
( ) , , x m y X M X , atunci arcul x y se marcheaz cu m i se reprezint
prin
m
x y .
Definiie. Numim reea etichetat un graf orientat marcat i etichetat.
De fapt, graful din exemplul anterior, avnd vrfurile numerotate i
muchiile marcate poate fi considerat i un exemplu de reea etichetat.

2.1. Grafuri conexe

Definiie. Graful neorientat ( ) , G X U = se numete conex dac i numai
dac oricare ar fi dou noduri , x y X , x y , exist cel puin un lan n G ,
( )
0 1
, ,...,
r
L x x x = de extremiti x i y .
Definiie. Fie ( ) , G X U = un graf neorientat. Numim componenta
conex a lui G , un subgraf conex ( ) , C Y V = al su, i pentru orice x Y ,
subgraful obinut lund mulimea de vrfuri { } \ Y x nu este conex (subgraful C
este maximal n raport cu proprietatea de conexitate).
Fie ( ) , G X U = un graf neorientat. Pentru , x y X spunem c x este
conectat cu y dac exist un lan ce le unete, adic exist un lan
( )
0 1
, ,...,
r
L x x x = de extremiti x i y
Pe mulimea X definim relaia binar ~ X X , dat prin ~ x y dac
i numai dac ( x y = sau x este conectat cu y ).
Propoziia 1. Relaia " ~ " definit mai sus este o relaie de echivale
Propoziia 2. Fie ( ) , G X U = un graf n care X n = , U m = i 2 n .
Dac G este conex, atunci 1 m n .
Noiunea de graf conex este valabil i pentru grafurile orientate.
Definiia este urmtoarea:
Definiie. Graful orientat ( ) , G X U = se numete conex dac i numai
dac oricare ar fi dou noduri , x y X , x y , exist cel puin un lan n G ,
( )
0 1
, ,...,
r
L x x x = de extremiti x i y .

7
Dac n definiia grafului conex pentru grafuri orientate nlocuim
condiia de existen a unui lan cu cea de existen a unui drum se onine
urmtoarea noiune.
Definiie. Graful orientat ( ) , G X U = se numete tare conex dac i
numai dac oricare ar fi dou noduri , x y X , x y , exist cel puin un drum n
G , ( )
0 1
, ,...,
r
d x x x x y = = = de extremiti x i y .
O posibilitate de a determina dac un graf neorientat este conex, sau
determinarea efectiv a componentelor conexe (sau problemele similare
pentru grafurile orientate) const n aplicarea unui algoritm de tip greede.
S considerm nti problema determinrii conexitii unui graf
neorientat ( ) , G X U = .
Algoritm 1.
1. Se consider Y X = , V U = i se alege orice x X pentru care
considerm { } B x = .
2. Dac B = , atunci algoritmul se termin genernd un rspuns
astfel:
a. Dac V = , atunci graful este conex
b. Dac V , atunci graful nu este conex (n plus se poate
spune c mulimea \ X Y reprezint componenta conex din
care face parte i nodul x considerat la 1).
Altfel se continu.
3. Se alege orice y B .
4. Pentru fiecare \ z Y B astfel nct { } , y z V considerm
{ } B B z = i { } { }
\ , V V y z =
5. Considerm { } \ B B y = i relum de la 2.
Aa cum se vede din pasul 2, algoritmul prezentat d rspunsul la
ntrebarea Este G un graf conex?. De asemenea, se poate determina
componenta conex a grafului G din care face parte un anumit nod
specificat. Acest lucru creaz premizele realizrii algoritmului de
determinare a componentelor conexe, plecnd de la algoritmul 1.
Algoritm 2.
1. Se consider Y X = , V U = 0 k = .
2. Dac V = , atunci algoritmul se termin i componentele conexe
ale grafului G sunt
1
A ,
2
A , ...,
k
A . Vrfurile care nu sunt n
1
k
k
i
A
=


sunt vrfuri izolate i formeaz fiecare n parte cte o component
conex a grafului G (n plus valoarea pentru k arat dac graful

8
G este sau nu conex. Astfel pentru 1 k = i
1
A X = graful este
conex, altfel G nu este conex).
3. Alegem orice x Y . Fie 1 k k = + ,
k
A = , { } B x = .
4. Dac B = se trece le 8, altfel se continu.
5. Se alege orice y B .
6. Pentru fiecare \ z Y B astfel nct { } , y z V considerm
{ } B B z = i { } { }
\ , V V y z = .
7. Considerm { } \ B B y = , { }
k k
A A y = . Se trece la 4.
8. Se elimin din V orice muchie { } , a b pentru care ,
k
a b A . Se trece
la 2.

2.2. Grafuri complementare i izomorfe

Definiie. Fie ( ) , G X U = un graf neorientat, numim complementarul lui
G (graf complementar lui G ), graful ( ) , G X U C C = , n care { } , x y U C
dac i numai dac { } , x y U .
Definiie. Fie ( ) , G X U = i ( ) , G X U = dou grafuri neorientate.
Spunem c G i G sunt izomorfe, notm G G , dac exist o funcie bijectiv
: f X X astfel nct { } , x y U dac i numai dac ( ) ( ) { }
, f x f y U .
Din definiie rezult c dou grafuri sunt izomorfe dac au acelai numr
de vrfuri i se poat obine unul din cellalt printr-o renumerotare a vrfurilor.
Definiii similare celor de mai sus sunt valabile pentru grafurile orientate.
Ele se obin nlocuid muchiile cu arce.
Propoziia 3. Fie ( ) , G X U = i ( ) , G X U = dou grafuri orientate.
Atunci G G dac i numai dac G G C C .

2.3. Grafuri ciclice

Definiie. Fie ( ) , G X U = un graf neorientat. Numim ciclu n G un lan
| |
0 1
, ,...,
r
L x x x = n care
0 r
x x = (n care extremitile coincid).
Definiie. Fie ( ) , G X U = un graf neorientat i | |
0 1
, ,...,
r
L x x x = un
ciclu. Spunem c L este ciclu elementar dac pentru orice 0 , 1 i j r , i j ,
avem
i j
x x (toate vrfurile sale, exceptnd extremitile, sunt distincte dou
cte dou) .

9
Definiie. Fie ( ) , G X U = un graf neorientat i | |
0 1
, ,...,
r
L x x x = un
ciclu. Spunem c L este ciclu simplu daca pentru orice 0 , 1 i j r , i j ,
avem { } { }
1 1
, ,
i i j j
x x x x
+ +
(toate muchiile sale sunt distincte dou cte dou).
Definiiile de mai sus continu s fie valabile i pentru grafurile
orientate. Suplimentar intervin definiiile care urmeaz.
Definiie. Fie ( ) , G X U = un graf orientat. Numim circuit n G un drum
( )
0 1
, ,...,
r
C x x x = n care
0 r
x x = (n care extremitile coincid).
Definiie. Fie ( ) , G X U = un graf orientat i ( )
0 1
, ,...,
r
C x x x = un
circuit. Spunem c C este circuit elementar dac pentru orice 0 , 1 i j r ,
i j , avem
i j
x x (toate vrfurile sale, exceptnd extremitile, sunt distincte
dou cte dou) .
Definiie. Fie ( ) , G X U = un graf orientat i ( )
0 1
, ,...,
r
C x x x = un
ciclu. Spunem c C este circuit simplu daca pentru orice 0 , 1 i j r , i j ,
avem ( ) ( )
1 1
, ,
i i j j
x x x x
+ +
(toate arcele sale sunt distincte dou cte dou).
Definiie. Graful neorientat ( ) , G X U = se numete ciclic dac G
conine cel puin un ciclu i se numete aciclic n caz contrar.
Definiie. Fie ( ) , G X U = un graf orientat. Spunem c G este aciclic
dac G nu conine nici un circuit i ciclic n caz contrar.
Propoziia 4. Fie ( ) , G X U = un graf neorientat. Dac U X ,
atunci G este ciclic.
Definiie. Fie ( ) , G X U = un graf neorientat avnd 1 k componente
conexe. Se numete punte n G o muchie m U pentru care graful parial
{ } ( )
, \ G X U m = are numrul de componente conexe mai mare dect k .
Propoziia 5. Fie ( ) , G X U = un graful neorientat i m U . m este
punte, dac i numai dac oricare ar fi ciclul | |
1 2
, ,...,
r
C m m m = n G dat prin
muchiile sale,
i
m m pentru orice 1 i r .
Propoziia 6. Fie ( ) , G X U = un graf orientat. G este tare conex
dac i numai dac exist un circiut C care conine toare vrfurile
grafului.
Definiie. Fie ( ) , G X U = un graf orientat. Definim
( ) ( ) { }
, circuit in cu , V x y U C G x y C = . Graful parial ( ) , H X V =
se numete graful orientat ciclu al lui G .

10
Propoziia 7. Fie ( ) , G X U = un garf orientat i ( ) , H X V = graful
ciclu al lui G . Fie Y X i ( ) , G Y W = subgraf. Atunci G component
tare conex n G dac i numai dac G component tare conex n H .
Definiie. Fie ( ) , G X U = un graf orientat i
1
C ,
2
C , ...,
t
C
componentele tari conexe ale lui G . Fie { }
1 2
, ,...,
t
Y C C C = i
( ) ( )
{ }
, , cu ,
i j i j
V C C x C y C x y U Y Y = .
Graful ( ) , H Y V = se numete graful condensat al lui G .
Observaie. Graful condensat al oricrui graf orientat este aciclic.

4. ARBORI

4.1. Definire i proprieti

Definiie. Numim arbore orice graf neorientat conex i fr cicluri.
Teorema 1. Fie ( ) , G X U = un graf neorientat. Urmtoarele afirmaii
sunt echivalente:
1. G este arbore.
2. G este aciclic maximal.
3. G este convex minimal.
Corolar. Dac ( ) , G X U = este arbore, atunci 1 U X = .
Propoziie 1. Dac ( ) , G X U = este un arbire, atunci G are cel puin
dou vrfuri terminale.

4.2. Arbori pariali

Definiie. Fie ( ) , G X U = un graf neorientat i ( ) , H X V = un graf
parial al lui G . Dac H este arbore spunem c H este un arbore paial (de
acoperire sau de traversare) al lui G .
Observaie. Dac un graf neorientat ( ) , G X U = are arbore parial, acesta
nu este unic.
Definiie. Fie ( ) , G X U = un graf neorientat i ( ) , A X V = un arbore
parial al lui G . Numim coarde ale lui H elementele mulimii \ U V , iar numrul
\ U V se numete numrul ciclomatic al lui G .
Teorema 2. Fie ( ) , G X U = un graf neorientat. G este conex dac i
numai dac G are arbore parial.

11
Algoritm 1.
1. Fie V U = .
2. Dac graful ( ) , H X V = nu conine cicluri, atunci algoritmul se termin i
H este un arborele parial al lui G , altfel se coninu.
3. Se consider un ciclu
1 2
, ,...,
p
C e e e ( =

n H
4. Se alege
{ }
1 2
, ,...,
p
e e e e . Considerm { } \ V V e = i mergem la 2.
Propoziia 2. Fie ( ) , G X U = un graf neorientat conex. Atunci numrul
ciclomatic al lui G este 1 U X + .
Propoziia 3. Fie ( ) , G X U = un graf neorientat conex, ( ) , A X V = un
arbore parial al lui G i { } , e x y = o coard a lui A. Atunci graful
{ } ( )
, H X V e = conine exact un ciclu.

4.3. Algoritmul lui Kruskal

Problema arborelui parial de cost minim. Fie ( ) , G X U = un graf
neorientat conex, ( ) : 0, c U o funcie, numit funcie cost a muchiilor lui G
i ( ) , H X V = un graf parial al lui G . Numim costul lui H suma costurilor
tuturor muchiilor din V , adic valoarea ( ) ( )
u U
c H c u

. Se pune problema
determinrii n G a unui graf parial conex de cost minim.
Definiie. Fie ( ) , G X U = un graf neorientat conex, ( ) : 0, c U
funcia cost a muchiilor lui G i ( ) ,
cm cm
T X V = un arbore parial cu proprietatea
c pentru orice arbore parial ( ) , T X V = avem ( ) ( )
cm
c T c T . Atunci spunem
c
cm
T este arbore parial de cost minim al lui G .
Teorema 3. Fie ( ) , G X U = un graf neorientat conex, ( ) : 0, c U
funcia cost a muchiilor lui G i ( ) , H X V = un graf parial al lui G . Dac H
este graf parial conex de cost minim, atunci H este arbore parial de cost minim.
Algoritmul 2. (Kruskal).
1. Considerm c ( ) L i i = pentru fiecare 1, 2,..., i X = , construim ( ) M j ,
. 1, 2,..., j U = reprezentnd muchiile lui G n ordinea cresctoare a
costurilor, considerm 0 k = (pentru numrarea muchiilor selectate) i
1 j = (pentru parcurgerea lui M ). Fie V = .

12
2. Dac 1 k n , atunci algoritmul se oprete, muchiile din V determin
arborele parial de cost minim, altfel se continu.
3. Considerm { } ( ) , p q M j = .
4. Dac ( ) ( ) L p L q = , atunci punem 1 j j = + i mergem la 3, altfel se
continu.
5. Punem 1 k k = + i { } { }
, V V p q = .
6. Dac ( ) ( ) L p L q < , atunci nlocuim n L toate valorile ( ) L q prin
( ) L p , altfel nlocuim n L toate valorile ( ) L p prin ( ) L q .
7. Punem 1 j j = + i mergem la 2.

4.4. Arborescene

Definiie. Fie ( ) , G X U = un graf orientat conex i aciclic. Dac exist
un unic vrf
0
x X cu ( )
0
0 d x

= i pentru orice x X ,
0
x x avem
( ) 0 d x

, spunem c G este o arborescen (sau arbore orientat).


0
x poart
numele de rdcin a arborescenei G . Vrfurile y pentru care ( ) 0 d y
+
= se
numesc vrfuri terminale sau frunze.
Definiie. Fie ( ) , A X U = o arborescen cu rdcina
0
x . Pentru un vrf
x X definim nivelul nodului prin ( )
0
,..., l x x , unde ( )
0
,..., x x este drumul
(unic) de extremitate iniial
0
x i extremitate final x .
Definiia de mai sus plasific vrfurile arborescenelor n funcie de
distana lor fa de rdcin. Acest clasificare are ca efect o reprezentare n care
nodurile sunt poziionate pe fiecare nivel, cu rdcina arborescenei n partea
superioar a imaginii.
Pentru o arborescena ( ) , A X U = , dac ( ) , x y U , spunem c x este
printele (tatl) lui y i y este fiul (descendentul direct) lui x . Dac , x y X
i exist drumul (unic) ( )
1
, ,..., ,
k
x z z y , spunem c y este descendentul lui x .
Definiie. Fie ( ) , A X U = o arborescen. Dac pentru orice x X
avem ( ) { } 0,1, 2 d x
+
. Spunem c A este o arborescen binar (arbore binar).
Dac ( ) { } 0, 2 d x
+
, spunem c A este o arborescen binar complet (arbore
binar complet).
Teorema 4. Pentru orice
*
n exist ( ) , A X U = o arborescen
binar astfel nct

13
( ) { }
0 x X d x n
+
= =
(numrul vrfurilor terminale s fie egal cu n ).
Propoziia 4. Fie ( ) , A X U = o arborescen binar complet n care
( ) { }
0 x X d x n
+
= = . Atunci ( ) 2 1 U n = .
Definiie. Fie ( ) , A X U = o arborescen binar i
( ) ( ) { }
0
cu 0 si ,..., DT s x X d x l x x s
+
= = =
(mulimea distanelor de la rdcin la fiecare vrf terminal). Dac
max min 1 DT DT , spunem c A este o arborescen binar echilibrat.
Teorema 5. Fie ( ) , A X U = o arborescen binar. Urmtoarele
afirmaii sunt echivalente:
1. A este o arborescen binar echilibrat;
2. pentru orice x X cu ( ) 0 d x
+
= , dac 2
m
X = , atunci
( )
0
,..., m l x x = i dac
1
2 2
m m
X
+
< < , atunci ( ) { }
0
,..., , 1 l x x m m + .

5. GRAFURI HAMILTONIENE I EULERIENE

5.1. Grafuri Hamiltoniene

Definiie. Fie ( ) , G X U = un graf neorentat. Un lan (ciclu) elementar
din G care conine toate vrfurile grafului se numete lan (ciclu) hamiltonian .
Definiie. Un graf ( ) , G X U = care con ine cel puin un ciclu hamiltonian
se numete graf hamiltonian
Aceste noiuni se regsesc i pentru grafurile orientate sub urmtoarele
forme.
Definiie. Fie ( ) , G X U = un graf orentat. Un lan (rum, ciclu, circuit)
elementar din G care conine toate vrfurile grafului se numete lan (drum,
ciclu, circuit) hamiltonian .
Definiie. Un graf ( ) , G X U = care con ine cel puin un circiut
hamiltonian se numete graf hamiltonian orientat
Facem observaia c problematica grafurilor hamiltoniene este una de
complexinate nepolinomial din punctul de vedere al algoritmcii.
Teorema 1. Fie ( ) , G X U = un graf neorientat n care 3 X n = i
pentru orice vrf x X avem ( )
2
n
d x . Atunci G este graf hamiltonian.


14
5.2. Grafuri euleriene

Definiie. Fie ( ) , G X U = un graf neorientat. Un ciclu simplu din G se
numete ciclu eulerian dac conine toate muchiile lui G .
Definiie. Graful neorientat ( ) , G X U = se numete graf eulerian dac
G conine cel puin un ciclu eulerian.
Dac trecem n cadrul grafurilor orientate avem definiia ce urmeaz
Definiie. Fie ( ) , G X U = cu U s = un graf orientat Fie
| |
1 2
, ,...,
s
L m m m = un lan ( ( )
1 2
, ,...,
s
D m m m = un drum) simplu, atunci
spunem c lanul L (drumul D) este lan (drum) eulerian..
Lema 1. Fie ( ) , G X U = un graf neorientat, nu neaprat conex. Dac
pentru orice x X avem ( ) d x numr par i pentru
0
x X avem ( )
0
0 d x ,
atunci exist un ciclu simplu n G care trece prin
0
x .
Teorema 2. Fie ( ) , G X U = un graf neorientat fr vrfuri izolate.
Atunci G este eulerian dac i numai dac G este conex i pentru orice x X ,
( ) d x este numr par.
Teorema 3. Fie ( ) , G X U = un graf conex. Urmtoarele afirmaii sunt
echivalente:
1. G conine un ciclu eulerian.
2. Orice x X , ( ) d x este numr par.
3. Exist
1 2
, ,...,
i i i
i i
p
C m m m
(
=

cicluri,
i
j
m U , 1, 2,...,
i
j p = ,
1, 2,..., i k = , astfel nct notnd
{ } 1 2
, ,...,
i i i
i i
p
U m m m = avem
i j
U U = pentru orice 1 , i j k , i j i
1
k
i
i
U U
=
=

(mulimea
muchiilor poate fi partiionat n cicluri).
Corolar 1. Fie ( ) , G X U = un graf conex. G conine un lan eulerian
dac i numai dac cel mult dou vrfuri ale lui G au gradul impar.
Corolar 2. Fie ( ) , G X U = un graf conex cu 2k vrfuri de grad impar,
0 k > . Atunci exist
1 2
, ,...,
i i i
i i
p
L m m m
(
=

lan deschis,
i
j
m U , 1, 2,...,
i
j p = ,
1, 2,..., i k = , astfel nct notnd
{ } 1 2
, ,...,
i i i
i i
p
U m m m = avem
i j
U U =

15
pentru orice 1 , i j k , i j i
1
k
i
i
U U
=
=

(mulimea muchiilor poate fi


partiionat n exact k lanuri deschise).

VI. ALGORITMI PENTRU DRUMURI N GRAFURI ORIENTATE

6.1. Algoritmi de calcul direct

Pentru calculul direct a matricii drumurilor putem folosi n primul rnd
operaiile + i i definite n capitolul 3.
Algoritmul are la baz propoziia 5 din capitolul 3 i are forma urmtoare.
Algoritmul 1.
1. Considerm 1 i = , D A = i T A = .
2. Dac i n > algoritmul se oprete, D conine matricea drumurilor din G ,
altfel se continu.
3. Considerm 1 i i = + i calculm T T A = i folosind operaiile + i i .
4. Calculm D D T = + folosind operaia + .
5. relum cu pasul 2.
Teorema 1. Fie ( ) , G X U = un grad orientat cu matricea de adiacea
A i cu X n = . Algoritmul 1 produce matricea drumurilor din G i are
complexitatea
( )
4
2 O n .
Acest algoritm poate fi considerat i sub urmtoarea form.
Algoritmul 1.
1. Considerm D A = .
2. Pentru 1, 2,..., i n = i pentru 1, 2,..., j n = se execut pasul 4.
3. Algoritmul se oprete; D conine matricea drumurilor lui G .
4. Dac 0
ij
d = , atunci pentru 1, 2,..., k n = se execut pasul 5 altfel se
continu.
5. Se calculeaz
ik ik jk
d d d = + .
O alt modalitate de calcul direct folosete operaiile uzuale definite pe
mulimea numerelor naturale.
Algoritmul se bazeaz pe propoziia 6 din capitalul 3 i pe legtura care
exist ntre matricile
G
D i
G
ND . Algoritmul are forma urmtoare.
Algoritmul 2.
1. Considerm 1 i = , D A = i T A = .
2. Dac i n > se trece la pasul 6, altfel se continu.
3. Considerm 1 i i = + i calculm T T A = i folosind operaiile uzuale de
adunare i nmulire a numerelor ntregi.

16
4. Calculm D D T = + folosind operaia de adunare a numerelor ntregi.
5. Relum cu pasul 2.
6. Pentru fiecare 1, 2,..., i n = i fiecare 1, 2,..., j n = se execut pasul 8.
7. Algoritmul se oprete, D conine matricea drumurilor din G
8. Dac 0
ij
d , atunci face 1
ij
d = , altfel se continu.
Algoritmul 1 este cunoscut sub numele de Algoritmul lui Wharshal pentru
determinarea matricii drumurilor.

6.2. Algoritmul Wharshal pentru drumuri minime n grafuri orientate

De o mare aplicabilitate practic este o problem de drumuri relatic la
grafurile ponderate. Fie ( ) , G X U = un graf ponderat, deci un graf orientat n care
U X M X , M fiind mulimea ponderilor.
Pentru reprezentarea acestui graf se utilizeaz o matrice specific
( )
1 ,
ij
i j n
P p

= de elemente
( )
pentru , ,
altfel
ij i ij j
ij
m x m x U
p

=

+

.
Matricea poart numele de matricea ponderilor grafului G .
n graful G se poate defini astfel noinuea de lungime a unui drum
( ) ( ) ( ) ( )
2 3 1 1 1 2 2 2 3 1
, , , , , ,..., , ,
k
i i i i i i i i i i i i
k k k
d x m x x m x x m x
+
+
= ,
notat prin ( ) L d =, i dat prin relaia
( )
1
1
k
i i
j j
j
L d m
+
=
=

.
Pentru orice , x y X , putem defini mulimea drumurilor de la x la y ca
fiind mulimea ( ) ( ) { }
0 1
, , ,..., drum in
k
D x y d x x x x y d G = = = = .
O problem important este de a determina n G drumurile minime ntre
vrfuri. Pentru acest lucru vom defini matricea drumurilor minime, notat
( )
min
1 ,
G ij
i j n
D d

= , unde
( )
( )
,
min
ij
d D x x
i j
d L d

=
. Folosind aceste notaii, pentru determinarea matricii
min
G
D a drumurilor
minine se poate face folosind Algoritmul Wharshal pentru drumuri minime,
adic:



17
Algoritmul 3.
1. Considerm 1 i = (prelucrm linia i ), D P = .
2. Dac i n > , atunci algoritmul se termin i
min
G
D D = , altfel se continu.
3. Pentru fiecare 1, 2,..., j n = se aplic pasul 5.
4. Facem 1 i i = + (trecem la urmtoarea linie) i trecem la pasul 2.
5. Dac
ij
d = +, atunci se continu, altfel se nlocuiete liniei i cu
minimul dintre liniei i i linia obinut din linia j prin adugarea valorii
ij
d la fiecare element.
Teorema 2. Dac ( ) , G X U = este un graf orientat ponderat cu P
matricea ponderilor dat pe mulimea de ponderi M i X n = . Algoritmul 3
producea matricea drumurilor minime din graful G i are complexitatea
( )
3
O n
exprimat ca numr de comparaii.

6.3. Algoritmul lui Dantzig pentru drumuri minime
de extremitate iniial dat

Acest algoritm determin toate drumurile de lungime minim care pornesc
de la un vrf dat i ajung la toate celelalte vrfuri.
Se consider un graf orientat ( ) , G X U = avnd X n = . Fie
i
x X un
vrf considerat iniial pentru toate drumurile pe dare dorim s le determinm. Fie
( )
1 ,
ij
i j n
P p

= matricea ponderilor definit ca mai sus.
Se consider urmtorul proces de calcul:
Algoritmul 4.
1. Considerm 1 m = , { }
m i
X x = i ( ) 0
i
c x = .
2. Dac ( ) 0
m
d X
+
= , atunci ne oprim; altfel se continu.
3. Pentru orice arc
( )
,
j k
x x U pentru care
j m
x X i
k m
x X se
calculeaz valoarea
( )
jk jk j
d p c x = +
4. Calculm min
jk
x X
m j
x X
m k
d d

= .
5. Pentru fiecare k astfel nct
jk
d d = considerm ( )
k
c x d = i
{ }
1 m m k
X X x
+
= . Facem 1 m m = + i trecem la pasul 2.
n urma execuiei acestui proces, m este numrul de vrfuri atinse din
vrful
i
x ,
m
X este mulmea acestor noduri i pentru fiecare
m
x X valoarea
( ) c x indic lungimea unui drum minim de extremitate iniial
i
x i extremitate

18
final x . Procesul se termin n cel mult 1 n repetri ale pailor 2, 3, 4 i 5
deoarece la pasul 5 se adaug cel puin cte un vrf la mulimea
m
X .

6.4. Algoritmul lui Bellman-Kalaba pentru drumuri minime
de extremitate final dat

Acest algoritm rezolv problema similar celei prezentate la algoritmul
Dantzig, adic determin drumurile de lungime minim care au extremitatea final
fixat.
Fie ( ) , G X U = un graf orientat ponderat cu { }
1 2
, ,...,
n
X x x x = . Putem
presupune c dorin s determinm drumurile de extremitate final
n
x . Acest lucru
nu restrnge generalitatea deoarece putem gsi un izomorfism f de grafuri
orientate astfel nct dac dorim s determinm drummurile cu extremitatea final
i
x s avem ( )
i n
f x x = .
Considerm c
( )
1 ,
ij
i j n
P p

= este matricea ponderilor pentru graful G .
Pentru realizarea algoritmului Bellman-Kalaba, construim o versiune modificat a
matrici ponderilor, matricea
( )
1 ,
ij
i j n
W w

= , definit dup cum urmeaz
( )
( )
pentru si , ,
pentru
0 pentru
pentru 0
pentru si , ,
ij i ij j
ij
ij
i ij j
m i j x m x U
p i j
w i j
i j
i j x m x U



= = =

=

.
Algoritmul 5.
Etapa 1
Se construiete matricea estins a valorilor arcelor
( )
, 1,
ij
i j n
W w
=
= .
Construim un tabel n care liniile sunt liniile matricii , notat ( )
1
i
i n
L L

= , unde
i
L
este linia i a tabelului La tabelul format se adaug linia
1 n
L
+
care este transpusa
coloanei n din matricea W .
Etapa 2
Se adaug tabelului L , liniile suplimentare
i
L , 2, 3,... i n n = + + , astfel:
a) presupunnd completat linia
k
L se completeaz linia
1 k
L
+
conform relaiei:
{ }
( ) 1, , 1, ,
1,...,
min , min
k j k j k t k t
t n
L L w L
+ +
=
= + .
b) se continu aplicarea punctului (a) pn la obinerea a dou linii
k
L i
1 k
L
+

identice.
Etapa 3

19
Se determin regresiv drumul minim de la
i
x la
n
x astfel:
- se adun linia i din L cu linia
1 k
L
+
urmrindu-se rezultatul minim ce se
poate obine. S presupunem c
1, 1, k i ij k i
L w L
+ +
= + , atunci primul arc din
drumul minim de la
i
x la
n
x este arcul ( )
j i
x x , ;
- se adaug linia j din L cu
1 k
L
+
reinnd valoare minim, aflat de
exemplu pe coloana k , atunci al doilea arc va fi ( )
k j
x x , .a.m.d. Ultimul
succesor determinat va fi
n
x .

Propoziia 1. Pentru orice
*
k avem
{ }
1, ,
1,
min
k i ij k j
j n
L v L
+
=
= +
Propoziia 2. Dac exist
*
k pentru care
, 1, k i k i
L L
+
= , pentru orice
1 i n , atunci
, , k i s i
L L = , pentru orice 1 i n i orice 1 s k + ,
Teorema 3. Fie ( ) , G X U = un graf orientat ponderat cu X n = . Atunci
algoritmul 5 are ca rezultat determinarea tuturor drumurilor minime de
extremitate final
n
x i complexitatea algoritmului este
( )
2
2 O n exprimat ca
numr maxim de comparaii.

6.4. Algoritmii lui Ford i Dijkstra pentru drumuri minime
de extremiti date

Comparativ cu algoritmii prezentai mai sus urmtorul algoritm se
folosete pentru cazul n care ambele extremiti ale drumului cutat sunt fixate.
Fie ( ) , G X U = un graf orientat i
i
x ,
j
x dou vrfuri. Dorim s
determinm un drum optim de la
i
x la
j
x . Datorit izomorfiesmelor de grafuri,
putem considera c determinm un drum de la
1
x la
n
x , fr a restrnge
generalitatea procesului de determinare.
Calculul se realizeaz n trei faze, una de iniializare, una de calcul efectiv
i una de obinere a drumul minim dintre
1
x i
n
x , dac exist drumuri ntre cele
dou vrfuri.
Considerm c
( )
1 ,
ij
i j n
P p

= este matricea ponderilor pentru graful G .
Pentru realizarea algoritmului Bellman-Kalaba, construim o versiune modificat a
matrici ponderilor, matricea
( )
1 ,
ij
i j n
W w

= , definit dup cum urmeaz

20
( )
( )
pentru si , ,
pentru
0 pentru
pentru 0
pentru si , ,
ij i ij j
ij
ij
i ij j
m i j x m x U
p i j
w i j
i j
i j x m x U



= = =

=

.
Algoritmul 6.
Etapa 1
Se construiete matricea estins a valorilor arcelor
( )
, 1,
ij
i j n
W w
=
= .
Construim un vector ( )
1
i
i n
v v

= pentru care considerm
1
0 v = i
i
v = +
pentru 2 i n .
Etapa 2
a) Cu 1, 2,..., i n = , n aceast ordine se construiete vectorul
( )
* *
1
i
i n
v v

= pe
baza formului:
( )
{ }
*
,
min , min
i
i i j ji
j
x x U
j
v v v w



= +
`

)
.
b) Se continu aplicarea punctului (a) ct timp exist un indice k pentru care
*
k k
v v < , nlocuinduse vectorul v prin vectorul
*
v .
Etapa 3
- Dac
n
w = +, atunci nu exist drumuri ntre
1
x i
n
x .
- Se determin drumul de la
1
x la
n
x plecndu-se de la
n
x , procednd dup
cum urmeaz: dac presupunem c s-a determinat
( )
1 1
, ,...,
k k k n
i i
x x x x

= ,
partea de la
k
i
x la
n
x a drumului minim. Lum
1
k
i
x
+
vrful pentru care are loc
relaia
1 1
k k k k
i i i i
v w v
+ +
+ =
Algoritmul prezentat este un algoritm care conine o serie de complicaii
datorate faptului c s-a dorit s funcioneze pentru toate grafurile orientate. Pentru
cazul n care se cunoate faptul v graful G nu conine circuite, acest algoritm
poate fi simplificat pentru a se ajunge la urmtoarea form.
Algoritmul 7.
1. Se construiete matricea estins a valorilor arcelor
( )
, 1,
ij
i j n
W w
=
= .,
facem
1
0 v = (. ( )
1
i
i n
v v

= fiind un vector de dimensiune n ) i
considerm mulimile { }
1
A x = i { }
1
\ B X x = .
2. Dac nu exist
j
x A i
i
x B astfel nct
( )
,
j i
x x U , atunci ne
oprin, nu exist drumuri de la
1
x la
n
x ; altfel se continu.

21
3. Considerm mulimea ( ) { }
, , C x B y A y x U = . Pentru orice
i
x C , facem
{ }
min
i j ji
j
x A
j
v v w

= + .
4. Facem nlocuirile A A C = , \ B B C = .
5. Dac
n
x A atunci se trece la pasul 2, altfel se continu.
6. Se determin drumul de la
1
x la
n
x plecndu-se de la
n
x , procednd dup
cum urmeaz: dac presupunem c s-a determinat
( )
1 1
, ,...,
k k k n
i i
x x x x

= ,
partea de la
k
i
x la
n
x a drumului minim. Lum
1
k
i
x
+
vrful pentru care
are loc relaia
1 1
k k k k
i i i i
v w v
+ +
+ = .
Se poate observa c n algoritmul simplificat al lui Ford, n pasurile 3 i 4
se determin un minim i apoi are loc o trecere a tuturor vrfurilor din C n A. Pe
de al parte, o parte din arcele considerate la pasul 3 nu vor face parte din drumul
minim de la
1
x la
n
x . Acest lucru se va ntmpla doar pentru vrfurile n care se
atinge minimul calculat la aplicarea relaiei
{ }
min
i j ji
j
x A
j
v v w

= + . Aceast
consideraie ne conduce la un algoritm nbuntit pentru determinarea drumurilor
minime n grafuri fr circuite, cunoscut sub numele de algoritmul lui Dijkstra.
Algoritmul 8.
1. Se construiete matricea estins a valorilor arcelor
( )
, 1,
ij
i j n
W w
=
= .,
facem
1
0 v = (. ( )
1
i
i n
v v

= fiind un vector de dimensiune n ) i
considerm mulimile { }
1
A x = i { }
1
\ B X x = .
2. Dac nu exist
j
x A i
i
x B astfel nct
( )
,
j i
x x U , atunci ne
oprin, nu exist drumuri de la
1
x la
n
x ; altfel se continu.
3. Considerm mulimea ( ) { }
, , C x B y A y x U = . Pentru orice
i
x C , facem
{ }
min
i j ji
j
x A
j
v v w

= + .
4. Pentru fiecare
k
x C pentru care exist
j
x A astfel nct
{ }
min
k jk j jk
j
x A
j
v w v w

+ = + considerm { }
k
A A x = i { } \
k
B B x = .
5. Dac
n
x A atunci se trece la pasul 2, altfel se continu.

22
6. Se determin drumul de la
1
x la
n
x plecndu-se de la
n
x , procednd dup
cum urmeaz: dac presupunem c s-a determinat
( )
1 1
, ,...,
k k k n
i i
x x x x

= ,
partea de la
k
i
x la
n
x a drumului minim. Lum
1
k
i
x
+
vrful pentru care
are loc relaia
1 1
k k k k
i i i i
v w v
+ +
+ = .

VII.ALGORITMI PENTRU GRAFURI
HAMILTONIENE I EULERIENE

7.1. Algoritmul lui Foulkes pentru drumuri hamiltoniene

Pentru a uura cutarea drumurilor hamiltoniene ntr-un graf orientat conex
( ) , G X U = , vom face o cutarea a drumurilor hamiltoniene n subcomponente
tari conexe ale grafului G i apoi vom asambla subdrumurile prin utilizarea
punilor prin care sint conectate componentele tari conexe.
Considerm un graf orientat conex ( ) , G X U = care are matricea de
asiacen A. Din matricea de adiacen putem determina matricea drumurilor D,
utiliznd modalitile prezentate n capitolele anterioare.
Procesul se desfoar n 3 etape, una de formare a componentelor tari
conexe din graful G , a doua n care se formeaz cte un drum hamiltonian n
fiecare din componentele tari conexe i ultima etap de formare a unui drum
hamiltonian n G pe baza subdrumurilor determinare n etapa a doua.
Algoritmul 1.
Etapa 1
1.a) Facem M I D = + i 1 i =
1.b) n matricea M se consider toate liniile formate dour cu
valoarea 1. Vrfurile corespunztoare acestor linii formez mulimea de
vrfuri
i
C .
1.c) Se elimin din matricea M liniile i coloanele considerate n formarea
mulimii
i
C .
1.d) Dac matricea M nu s-a epuizat se trece la pasul (1.b), altfel se continu
trecnd la etapa a doua.
Etapa 2
Se construiete un grag ( ) , G Y V = unde { }
1 2
, ,...,
r
Y C C C = i
( )
,
i j
C C V dac i numai dac exist
i
x C i exist
j
y C astfel nct
( ) , x y U .Se formeaz astfel un drum hamiltonian n G , i anume drumul
( )
1 2
, ,...,
r
d C C C = .


23


Etapa 3
3.a) Se consider
1 1
x C i
2 2
x C pentru care exist ( )
1 2
, x x U . Gsim n
1
C un drum hamiltonian
1
d de extremitate iniial
*
1
x i extremitate final
1
x
i n
2
C un drum hamiltonian
2
d de extremitate iniial
2
x i extremitate
final
*
2
x . Se foremaz astfel drumul hamiltonian ( ) ( )
*
1 1 1 2 2
, , , d d x x d = n
graful parial al lui G de vrfuri
1 2
C C . Facem 3 i = .
3.b) Dac i r > ne oprin, s-a obinut drumul hamiltonian, altfel se continu.
3.c) Dac exist
i i
x C astfel nct
( )
*
1
,
i i
x x U

atunci se trece la pasul (3.d),


altfel se trece la pasul (3.e).
3.d) Se consider n
i
C un drum hamiltonian
i
d de extremitate iniial
i
x i
notm extremitatea sa final prin
*
i
x . Am format astfel drumul hamiltonian
( ) ( )
* * *
1 1
, , ,
i i i i i
d d x x d

= n graful parial al lui G de vrfuri
1 2
...
i
C C C . Facem 1 i i = + i mergem la pasul (3.b).
3.e) Fie
i
e partea din drumul
*
1 i
d

care formeaz acest drum mpreun cu
1 i
d

.
Fie
1 1 i i
x C

i
i i
x C pentru care ( )
1
,
i i
x x U

. mprim drumul
1 i
d

n
1 i
d

de extremitate final
1 i
x

i drumul
1 i
d

de extremitate iniial
1 i
x

i
extremitate final
*
1 i
x

. Considerm un drum
1 i
d

care pleac din
1 i
x

, trece
*
1 i
x

i apoi prin toate celelante vrfuri care apar n drumul


1 i
d

astfel nct
extremitatea final a lui
1 i
d

s fie
1 i
x

. Se consider n
i
C un drum
hamiltonian
i
d de extremitate iniial
i
x i notm extremitatea sa final prin
*
i
x . Considerm drumul ( ) ( )
*
1 1 1
, , , ,
i i i i i i
d d d x x d

= n graful parial al lui
G de vrfuri
1 2
...
i
C C C . Facem 1 i i = + i mergem la pasul (3.b).


7.2. Teorema lui Chen

Fie ( ) , G X U = un graf orientat i fr circuite cu { }
1 2
, ,...,
n
X x x x = .
Considerm c A este matricea de adiacen a grafului i putem determina
matricea D a drumurilor din G .

24
Pentru fiecare nod
i
x notm cu
i
p puterea de atingere a vrfului
i
x , adic
numrul de vrfuri
j
x pentru care exist drum de extremitate iniial
i
x i
extremitate final
j
x .
Propoziia 1. Fie ( ) , G X U = un graf orientat i fr circuite i
( )
,
i j
x x U . Atunci
i j
p p , unde
i
p este gradul de atingere al vrfului
i
x .
Corolar. Fie ( ) , G X U = un graf orientat i fr circuite i care conine
un drum de la
i
x la
j
x . Atunci
i j
p p , unde
i
p este gradul de atingere al
vrfului
i
x .
Urmtoarele rezultate, dintre care primul este cunoscut drept teorema lui
Chen stau la baza algoritmului lui Chen,
Teorema 1. Fie ( ) , G X U = un graf orientat i fr circuite cu X n = .
G conine un drum hamiltonian dac i numai dac are loc relaia
( )
1
1
2
n
i
i
n n
p
=


unde
i
p este gradul de atingere al vrfului
i
x .
Teorema 2. ntr-un graf orientat fr circuite, drumul hamiltonian, dac
exist este unic..
Rezultatele prezentate mai sus dau au proces imediat pentru determinarea
drumului hamiltonian ntr-un graf orientat fr circuite. Prentru acesta vom proceda
dup cum urmeaz:
1. Scriem matricea de adiacen A.
2. Calculm, prin una din metodele descrise n capitolele anterioare, matricea
drumurilor D. Dac n aceast matrice apare cel puin o valoare 1 pe
diagonala principal ne oprim pentru c graful G conine un circuit i
teorema lui Chen nu se poate aplica.
3. Se determin puterile de atingere ale vrfurilor ( )
1,2,...,
i
i n
p
=
i se verific
valoarea de adevr pentru relaia
( )
1
1
2
n
i
i
n n
p
=

. Dac aceast relaie


nu este verificat atunci graful G nu conine un drum hamiltonian.
4. Se ordoneaz puterile de atingere ale vrfurilor i dac este permutarea
pentru care are loc relaia
( ) ( ) ( ) 1 2
1 ... 0
n
n p p p

= > > > = ,
atunci drumul
( ) ( ) ( )
( )
1 2
, ,...,
n
h x x x

=
este drumul hamiltonian cutat.

25

7.3. Algoritmul lui nmulirii latine

Algoritmul de determinare a matricii drumurilor are un caracter prea
sintetic, n sensul c prezena unei valori de 1 n matricea drumurilor nu d
informaii asupra vrfurilor din care se compun drumurile corespunztoare,
bineneles c nici asupra numrului de drumuri ntre vrfurile care corespund
acelor valori de 1.
Ca un exemplu de algoritm capabil s rspund acestor deziderate,
prezentm algoritmul datorat lui Kaufmann, numit aloritmul nmulirii latine.
Introducem ca punct de plecare, o matrice
( ) 1
M , care n locul valorilor de
1 utilizate n matricea obinuit a arcelor, utilizeaz nsui arcul respectiv,
reprezentat prin vrfurile care l compun.
( ) ( )
( )
n j i
ij
m M
, 1 ,
1 1
=
= , unde
dac exist arc de la
i
x la
j
x
( )

=
0
1
j i
ij
x x
m
n rest
Prin suprimarea primei litere n matricea
( ) 1
M se obine o matrice
( ) 1
~
M
numit a destinaiilor posibile. Se compun matricele
( ) 1
M i
( ) 1
~
M prin operaia
de nmulire latin.
( ) ( ) 1 1
M L M

.
nmulirea latin a matricilor se face formal ca i nmulirea a dou matrici,
fr nsumare i fr nmulire efectiv innd cont c:
- produsul latin a dou componente participante la calcul este nul dac cel puin
una din ele este nul.
- produsul latin a dou componente participante este nul dac au vrf comun.
- rezultatul compunerii const n scrierea n continuare a vrfurilor componente
ale simbolurilor participante.
Prin definiia produsului latin avem
( ) ( ) ( ) 2 1 1
M M L M =

,
( ) ( ) ( ) 3 2 1
M M L M =

, Algoritmul continu pn la obinerea matricii
( ) 1 n
M

,
deoarece ntr-un graf cu n vrfuri un drum hamiltonian are 1 n arce.
n matricea
( ) 1 n
M citim, conform modului de scriere de mai sus toate
drumurile hamiltoniene ale grafului.
Dac toate elementele lui
( ) 1 n
M sunt zerouri (
( )
0 =
1 n
M ), graful nu
admite drum hamiltonian.
Observaie. Procedeul este aplicabil pentru orice tip de graf orientat (cu
sau fr circuit), dar pentru grafurile fr circuite se recomand algoritmul lui
Chen, ntruct pentru grafuri de dimensiuni mari, algoritmul nmulirii latine este
greoi (dar sigur).





26
7.4. Algoritmul lui Fleury pentru drumuri euleriene

Fie ( ) , G X U = un graf conex n care X n = i U m = . Dorim ca n
graful G s determinm un ciclu eulerian. Pentru acest lucru, o soluie este de a
pleca de la un lan simplu C (iniial format dintr-o muchie a grafului) i la care s
adugm muchii nct s pstrm lanul simplu i n garful care se formeaz s nu
apar muchii izolate. Dac nu exist i alte opiuni, atunci se utilizeaz i muchiile
izolate.
Algoritmul care se bazeaz pe principiul enunat mai sus este cunoscut
drept algoritmul lui Fleury.
Pentru a putea prezenta acest algoritm este necesar s considerm un mod
special de specificare a lanurilor. Pn acum am fcut acest lucru fie sub forma
{ }
0 1
, ,...,
r
L x x x = , unde
i
x X (reprezentarea prin noduri), fie prin
{ }
1 2
, ,...,
s
L u u u = , unde
i
u U avnd condiia ca pentru orice 1, 2,..., 1 i s =
muchiile
i
u i
1 i
u
+
au o extremitate comun. (reprezentarea prin muchii)..
Reprezentarea util a lanurilor este o reprezentare combinat n sensul c
sunt prezente att nodurile ct i muchiile implicate n formarea lanului sub forma
{ }
0 1 1 2 1
, , , ,..., , ,
r r r
L x u x u x u x

= , unde pentru orice 1, 2,..., i r = avem


{ }
1
,
i i i
u x x

= .
Prezentm n comtinuare algoritmul lui Fleury:
Algoritmul 2.
6. Se alege un vrf
0
x X i considerm { }
0 0
C x = i 0 i = .
7. Pentru
i
x alegem o muchie ( )
1 1
,
i i i
u x x
+ +
= care nu apare n
i
C i care
nu este izolat n graful parial al lui G obinut prin eliminarea muchiiler
care formeaz
i
C (sau o muchie izolat din graful parial menionat, dac
nu avem alt variant).. Definim lanul
{ } { }
1 1 1 0 1 1 2 1 1
, , , , , ,..., , ,
i i i i i i i
C C u x x u x u x u x
+ + + + +
= = i facem 1 i i = + .
8. Dac i m = ne oprim,
m
C este ciclul eulerian, altfel se trece la pasul (2)..
Teorema 3. Dac ( ) , G X U = este un graf eulerian, atunci orice ciclu
obinut prin aplicarea algoritmului 2 este un ciclu eulerian.

7.5. Algoritmul lui Hierholzer pentru drumuri euleriene

O alt idee pentru determinarea unui ciclu eulerian este s determinm
ciclurile formate cu muchii distincte i care s aib cte un nod comun i unirea
acestor cicluri n ciclul eulerian cutat.
Existena ciclurilor cu un nod comun este garantat de faptul c graful
considerat este conex.

27
Ideea de mai sus a fost utilizat de Hierholzer pentru realizarea
argoritmului de mai jos, cunoscut drept algoritmul lui Hierholzer.
Fie graful ( ) , G X U = .
Algoritmul 3.
1. Se alege un vrf
0
x X i plecnd de la
0
x , prin traversarea fiecrei
muchii neconsiderate formm un ciclu
{ }
0 0 0
0 1 2
0
, ,...,
r
C u u u = i 0 i = .
2. Dac graful parial format cu muchiile cuprinse n ciclul
i
C coincide cu
G atunci ne oprim,
i
C reprezint ciclul eulerian cutat, altfel se
continu.
3. Fie nodul
i
x , extremitate a muchiei
i
k
u din ciclul
i
C i al unei muchii
*
i
u
care nu este n
i
C . Pornind de la nodul
i
x , n graful parial al lui G cu
mulimea de muchii format de muchiile nefolosite la formarea lui
i
C ,
formm un ciclu ca la pasul (1), notat
*
i
C .
4. Formm ciclul
{ }
1 1 1
1 1 2
1
, ,...,
i i i
i r
i
C u u u
+ + +
+
+
= pornin din
i
x , parcurgnd
integral
i
C pn ajungen din nou la
i
x i apoi parcurgnd integral
*
i
C
pn se ajunge la
i
x
5. Facem 1 i i = + i trecem la pasul (2).

VIII.FLUX MAXIM N REELE DE TRANSPORT

8.1. Consideraii generale

Definiie. Un graf orientat ponderatt ( ) , , G X U p = fr circuite, se
numete reea de transport dac ndeplinete urmtoarele condiii:
1. Dac { }
n
x x x X ,..., ,
2 1
= , atunci oricare ar fi 1 i n avem ( ) ,
i i
x x U .
2. Exist un vrf unic X x
1
n care nu intr nici un arc, numit sursa reelei.
3. Exist un unic vrf
n
x din care nu iese nici un arc, numit destinaia reelei.
4. G este conex i exist drumuri de la
1
x la
n
x .
5. S-a definit o funcie : c U astfel nct ( ) 0 u c pentru orice arc u U ;
numrul ( ) u c se numete capacitatea reelei.
Definiie. Fie ( ) , , G X U p = o reea de transport. Fiind dat o
submulime X Y , se numete tietur de suport Y mulimea de arce
( ) ( )
{ }
, ,
i j i j
Y x x U x Y x Y U

=

28
( ) ( )
{ }
, ,
i j i j
Y x x U x Y x Y U
+
= .
Cantitatea ( ) ( )
( ) ( )

=
Y
j
x
i
x
ij
p Y c
,
este capacitatea tieturii ( ) Y

.
Definiie. Fie ( ) , , G X U p = o reea de transport. O funcie :U
+

se numete flux pe reeaua de transport ( ) , , G X U p = dac ndeplinete
urmtoarele condiii:
1. Condiia de mrginire a fluxului:
pentru orice
( )
,
i j
x x U , avem ( )
ij
p x x
j i
, 0 .
2. Condiia de conservare
Pentru orice
i
x X , avem ( )
( )
( )

|

\
|
=

=
=
n
h
x
j
x
h
h j
n
j
x
k
x
k
j k
x x x x
,
1
,
1
, , .
Observaii.
1. Condiia 2) afirm c pentru orice vrf x cu
1
x x i
n
x x , suma
fluxurilor de pe arcele care intr n x este egal cu suma fluxurilor pe arcele
care ies din x .
2. Funcia nu este unic.
Definiie. Fie ( ) , , G X U p = o reea de transport. Un arc
( )
,
i j
x x U se
numete arc saturat, dac n raport cu are loc relaia ( )
ij j i
p x x = , .
Se pune problema determinrii funciei astfel nct suma fluxurilor pe
arcele ce intr n
n
x s fie maxim, aa-numita problem a fluxului maxim.
Adic, dintre toate fluxurile :U
+
posibile n reeaua de transport
( ) , , G X U p = se urmrete s se determine fluxul pentru care
( )
( )
( )
( )
1 1
, ,
, ,
n n
h n h n
h h
x x U x x U
n n
h h
x x x x
= =


.
Propoziia 1. Fie ( ) , , G X U p = o reea de transport avnd sursa
1
x ,
destinaia
n
x i :U
+
un flux oarecare n reeaua G , atunci:
( )
( )
( )
( )
1
1 1
,
, 1
, ,
n n
i j n
i j
x x U
x x U i
j n
x x x x
= =


=


Definiie. Fie ( ) , , G X U p = o reea de transport avnd sursa
1
x ,
destinaia
n
x i :U
+
un flux oarecare n reeaua G . Valoarea

29
( )
( )
( )
( )
( ) ( )
1
, ,
1
, ,
j n i
x x x x x x
n n i j i
x x x x


+

= =


se numete valoarea total a fluxului :
+
.
Propoziia 2. Fie ( ) , , G X U p = o reea de transport i fie X Y o
submulime cu proprietile:
- pentru sursa
1
x a lui G avem
1
x Y ;
- pentru destinaia
n
x a lui G avem Y x
n
.
Atunci pentru orice flux :U
+
avem
( )
( ) ( )
( )
( ) ( )
( ) ( ) Y c x x x x
Y
j
x
i
x
j i
Y
j
x
i
x
j i
=
+


=

, ,
, , .

8.2. Algoritmul Ford-Fulkerson

n continuare vom considera c toate capacitile sunt numere raionale sau
ntruct numrul total de arce este finit, chiar numere naturale.
Pe baze consideraiilor precedente se deduce urmtorul algoritm cunoscut
sub numele de algoritmul Ford-Fulkerson pentru determinarea fluxului maxim
ntr-o reea de transport.
Algoritm
Pasul I
Se construiete un flux iniial
0
, care verific condiiile de conservare n
fiecare vrf i de mrginire pe fiecare arc, de exemplu chiar fluxul avnd
componente nule pe fiecare arc al reelei,
( )
0
, 0
i j
x x = , oricare ar fi
( )
,
i j
x x U .
Pasul II
Folosind operaiile de marcare ce vor fi prezentate mai jos, se cerceteaz
dac fluxul iniial
0
este maxim; operaiunile de marcare constau n
urmtoarele:
a) se marcheaz sursa reelei
1
x cu semnul + ;
b) vrfurile ( )
1
x x
j
+
vor fi marcate cu
1
x + dac arcul ( )
j
x x ,
1
este
nesaturat;
c) dac vrful
j
x este deja marcat i dac pentru un vrf ( )
j k
x x
+
arcul
( )
k j
x x , este nesaturat, atunci marcm vrful
k
x prin
j
x + ;
d) dac vrful
j
x

este deja marcat i dac pentru un vrf ( )
j k
x x

arcul
( )
j k
x x are fluxul nenul, marcm vrful
k
x prin
j
x
.;


30
n urma terminrii operaiei de marcare, putem ntlni urmtoarele
situaii:
1. Dac destinaia
n
x a reelei nu s-a marcat, atunci fluxul este maxim i
algoritmul se termin, altfel se aplic procesul (2) i se reia pasul II.
2. Dac destinaia
n
x s-a putut marca, atunci fluxul nu este maxim i poate fi
msurat astfel:
a) se alege un drum de la
1
x la
n
x ;
b) pe arcele drumului marcat cu + fluxul se majoreaz cu o cantitate
de flux (de exemplu 1 = );
c) pe arcele drumului marcat cu - fluxul se micoreaz cu aceeai
cantitate ;
d) fluxul arcelor nemarcate nu se schimb;
Algoritmul are un numr finit de pai, iar fluxul maxim se atinge cnd nu mai
poate fi marcat destinaia
n
x a reelei.
Observaie. Mrimea fluxului se poate face cu mai mult dect o unitate,
evitndu-se astfel prea multe operaii de marcare, astfel: se consider un drum V
format din drumuri marcate cu + sau - ce unete
1
x cu
n
x , uor de gsit
urmrind vrfurile marcate n sensul de la
n
x ctre
1
x . Notm
+
V mulimea
arcelor ( ) y x, unde y este marcat cu + i

V mulimea arcelor ( ) y x, unde y


este marcat cu -. Calculm
( ) ( ) { } u u c
V u
=
+

min
1

( ) u
V u
=

min
2

i { }
2 1
, min = . Observm c 0 > i este numr ntreg.
Mrim cu pe fiecare arc
+
V u i micorm cu pe fiecare arc

V u ,
obinnd la ieire un flux mrit cu .
Se repet etapa a doua cu fluxul obinut. Valoarea fluxului maxim se gsete
realiznd o tietur prin separarea cu o linie a vrfurilor marcate de cele nemarcate
i capacitatea acestei tieturi reprezint fluxul maxim, sau adunnd fluxurile
arcelor incidente interior lui
n
x .

BIBLIOGRAFIE Obligatorie

1. I. Tomescu, Combinatoric i teoria grafurilor, Editura Universitii.
Bucureti, 1990
2. I. Tomescu, Probleme de combinatoric i teoria grafurilor, Editura
Didactic i Pedagogic, Bucureti, 1981. Ediia englez: Problems in
Combinatorics and Graph Theory, John Wiley, New York , 1985.

31

BIBLIOGRAFIE Opiomal

1. Bang-Jensen, G. Gutin, Digraphs Theory, Algorithms and Applications,
Springer-Verlag, 2007
2. M. Behzad, G. Chartrand, L. Lesniak-Foster, Graphs & Digraphs, Prindle,
Weber & Schmidt, Boston, Massachusetts, 1979.
3. B. Bollobas, Graph Theory. An Introductory Course, Springer-Verlag,
New York, Heidelberg, Berlin, 1979.
4. C. Berge, Teoria grafurilor i aplicaii, Editura Tehnica, Bucuresi, 1971

S-ar putea să vă placă și