Sunteți pe pagina 1din 31

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 Cn2 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 d ( x ) = 1 spunem c x este nod terminal. Dac d ( x ) = 0 spunem
c x este nod izolat.
Propoziia 1. Fie G = ( X , U ) un graf n care U = m . Atunci

d ( x ) = 2m .

x X

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 } .
1

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 K n
Propoziia 3. Numrul muchiilor lui K n este Cn2 .
Definiie. Fie G = ( X , U ) un graf. Dac exist X 1 i X 2 astfel nct

X 1 X 2 = i X = X 1 X 2 ( X admite o partiie din dou blocuri X 1 i X 2 )


i orice muchie din G unete un nod din X 1 cu unul din X 2 (oricare ar fi

e = { x, y} U , dac x X 1 , atunci y X 2 ) spunem c G este graf bipartit.


Definiie. Fie G = ( X , U ) un graf bipartit cu partiiile X 1 i X 2 . Dac

X 1 = p i X 2 = q i dac fiecare vrf din X 1 este adiacent cu toate vrfurile


din X 2 (pentru orice x X 1 i orice y X 2 avem

{ x, y} U ) spunem c

este un graf bipartit complet, notat K p ,q .


Propoziia 4. Graful bipartit complet K p ,q are pq muchii.
Definiie. Fie G = ( X , U ) un graf. Numim lan n G o succesiune de
vrfuri L = ( x0 , x1 ,..., xr ) = x0 x1...xr , astfel nct pentru orice i = 0,1,..., r 1 ,

xi xi +1 U (adic o succesiune n care oricare dou vrfuri vecine din lan sunt
adiacente).
Fie G = ( X , U ) este un graf i L = x0 x1...xr un lan n G . Vrfurile x0 i

xr 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 xi x j (lanul trece prin
noduri distincte).

Definiie. Fie G = ( X ,U ) un graf. Lanul L din G se numete lan

simplu dac pentru orice 0 i, j r 1 , i j , avem { xi , xi +1} x j , x j +1 (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.
2

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 d ( x ) = 0 spunem c x X este vrf izolat.
e) Dac d ( x ) = 1 i d + ( x ) = 0 spunem c x X este vrf terminal; dac

d ( x ) = 0 i d + ( x ) = 1 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 .
3

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 d ( A )

d ( x) ,

deoarece s-ar

xA

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 d + ( A )

d ( x) ,
+

deoarece s-ar

xA

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 d ( A )

d ( x) .
xA

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 K n .
Observaie. n cazul grafurilor neorientate, pentru un n , n 2 ,
exist un singur graf complet cu n vrfuri, notat K n . n cazul grafurilor orientate
pentru un n , n 2 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.

Definiie. Fie G = ( X , U ) un graf orientat. Numim drum n G o


succesiune de vrfuri d = ( x0 , x1 ,..., xr ) astfel nct pentru orice i = 0,1,..., r 1 ,

xi xi +1 U (sau o succesiune de arce care au acelai sens, d = ( u1 , u1 ,..., u p ) , cu


proprietatea c pentru orice i = 1, 2,..., p 1 , ui i ui +1 au o extremitate comun,
mai exact extremitatea final a lui ui coincide cu extremitatea iniial a lui ui +1 .
Fie d = ( x0 , x1 ,..., xr ) un drum n graful G = ( X , U ) . x0 se numete
extremitatea iniial, iar xr extremitatea final a drumului d .
Definiie. Drumul d = ( x0 , x1 ,..., xr ) din graful G = ( X , U ) se numete
elementar dac pentru orice i, j = 0,1,..., r , i j , avem xi x j (drumul trece
prin noduri distincte).
Definiie. Fie G = ( X , U ) un graf orientat. Numim lan n G , o secven
de noduri L = [ x0 , x1 ,..., xr ] cu proprietatea c pentru orice i = 0,1,..., r 1 avem

( xi , xi +1 ) U

sau

( xi +1 , xi ) U

(sau

succesiune

de

arce

L = u1 , u2 ,..., u p astfel nct pentru orice i = 1, 2,..., p 1 , arcele ui i ui +1 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 d = ( x0 , x1 ,..., xr ) 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.

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 mu . 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
m
prin 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 ,

L = ( x0 , x1 ,..., xr ) 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

L = ( x0 , x1 ,..., xr ) 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 n 2 .
Dac G este conex, atunci m n 1 .
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 ,
L = ( x0 , x1 ,..., xr ) de extremiti x i y .
6

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 , d = ( x = x0 , x1 ,..., xr = 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 k = 0 .
2. Dac V = , atunci algoritmul se termin i componentele conexe
k

ale grafului G sunt A1 , A2 , ..., Ak . Vrfurile care nu sunt n

i =1

sunt vrfuri izolate i formeaz fiecare n parte cte o component


conex a grafului G (n plus valoarea pentru k arat dac graful
7

G este sau nu conex. Astfel pentru k = 1 i A1 = X graful este


conex, altfel G nu este conex).
3. Alegem orice x Y . Fie k = k + 1 , Ak = , 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} , Ak = Ak { y} . Se trece la 4.
8. Se elimin din V orice muchie {a, b} pentru care a, b Ak . 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 CG = ( X , CU ) , n care { x, y} CU


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 CG CG .
2.3. Grafuri ciclice
Definiie. Fie G = ( X , U ) un graf neorientat. Numim ciclu n G un lan

L = [ x0 , x1 ,..., xr ] n care x0 = xr (n care extremitile coincid).


Definiie. Fie G = ( X ,U ) un graf neorientat i L = [ x0 , x1 ,..., xr ] un
ciclu. Spunem c L este ciclu elementar dac pentru orice 0 i, j r 1 , i j ,
avem xi x j (toate vrfurile sale, exceptnd extremitile, sunt distincte dou
cte dou) .
8

Definiie. Fie G = ( X ,U ) un graf neorientat i L = [ x0 , x1 ,..., xr ] un


ciclu. Spunem c L este ciclu simplu daca pentru orice 0 i, j r 1 , i j ,

avem { xi , xi +1} x j , x j +1 (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

C = ( x0 , x1 ,..., xr ) n care x0 = xr (n care extremitile coincid).


Definiie. Fie G = ( X ,U ) un graf orientat i C = ( x0 , x1 ,..., xr ) un
circuit. Spunem c C este circuit elementar dac pentru orice 0 i, j r 1 ,
i j , avem xi x j (toate vrfurile sale, exceptnd extremitile, sunt distincte
dou cte dou) .

Definiie. Fie G = ( X ,U ) un graf orientat i C = ( x0 , x1 ,..., xr ) un


ciclu. Spunem c C este circuit simplu daca pentru orice 0 i, j r 1 , i j ,

avem ( xi , xi +1 ) x j , x j +1 (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 k 1 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 C = [ m1 , m2 ,..., mr ] n G dat prin
muchiile sale, m mi 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
grafului.
Definiie. Fie
G = ( X ,U )

C care conine toare vrfurile


un

graf

orientat.

Definim

V = {( x, y ) U C circuit in G cu ( x, y ) C} . Graful parial H = ( X ,V )


se numete graful orientat ciclu al lui G .
9

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 C1 , C2 , ..., Ct
componentele tari conexe ale lui G . Fie Y = {C1 , C2 ,..., Ct } i

V = ( Ci , C j ) x Ci , y C j cu ( 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 U = X 1 .
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.
10

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 C = e1 , e2 ,..., e p n H

4. Se alege e e1 , e2 ,..., e p . 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 U X + 1 .
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, c : U ( 0, ) 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 c ( H ) =

c ( u ) . Se pune problema

uU

determinrii n G a unui graf parial conex de cost minim.


Definiie. Fie G = ( X , U ) un graf neorientat conex, c : U ( 0, )
funcia cost a muchiilor lui G i Tcm = ( X , Vcm ) un arbore parial cu proprietatea
c pentru orice arbore parial T = ( X , V ) avem c (Tcm ) c (T ) . Atunci spunem
c Tcm este arbore parial de cost minim al lui G .
Teorema 3. Fie G = ( X , U ) un graf neorientat conex, c : U ( 0, )
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 i = 1, 2,..., X , construim M ( j ) ,
. j = 1, 2,..., U reprezentnd muchiile lui G n ordinea cresctoare a
costurilor, considerm k = 0 (pentru numrarea muchiilor selectate) i
j = 1 (pentru parcurgerea lui M ). Fie V = .
11

2. Dac k n 1 , 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 j = j + 1 i mergem la 3, altfel se
continu.
5. Punem k = k + 1 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 j = j + 1 i mergem la 2.
4.4. Arborescene
Definiie. Fie G = ( X , U ) un graf orientat conex i aciclic. Dac exist
un unic vrf x0 X cu d ( x0 ) = 0 i pentru orice x X , x x0 avem

d ( x ) 0 , spunem c G este o arborescen (sau arbore orientat). x0 poart


numele de rdcin a arborescenei G . Vrfurile y pentru care d + ( y ) = 0 se
numesc vrfuri terminale sau frunze.
Definiie. Fie A = ( X , U ) o arborescen cu rdcina x0 . Pentru un vrf

x X definim nivelul nodului prin l ( x0 ,..., x ) , unde

( x0 ,..., x )

este drumul

(unic) de extremitate iniial x0 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) ( x, z1 ,..., zk , y ) , spunem c y este descendentul lui x .
Definiie. Fie A = ( X , U ) o arborescen. Dac pentru orice x X
avem d + ( x ) {0,1, 2} . Spunem c A este o arborescen binar (arbore binar).
Dac d + ( x ) {0, 2} , 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
12

{x X d

( x ) = 0} = n

(numrul vrfurilor terminale s fie egal cu n ).


Propoziia 4. Fie A = ( X , U ) o arborescen binar complet n care

{x X d

( x ) = 0} = n . Atunci U = 2 ( n 1) .
Definiie. Fie A = ( X , U ) o arborescen binar i
DT = {s x X cu d + ( x ) = 0 si l ( x0 ,..., x ) = s}
+

(mulimea distanelor de la rdcin la fiecare vrf terminal). Dac


max DT min DT 1 , 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 d + ( x ) = 0 ,

dac

X = 2m ,

atunci

m = l ( x0 ,..., x ) i dac 2m < X < 2m +1 , atunci l ( x0 ,..., x ) {m, m + 1} .


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 X = n 3 i
pentru orice vrf x X avem d ( x )

n
. Atunci G este graf hamiltonian.
2
13

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

L = [ m1 , m2 ,..., ms ] un lan ( D = ( m1 , m2 ,..., ms ) 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 x0 X avem d ( x0 ) 0 ,
atunci exist un ciclu simplu n G care trece prin x0 .
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

Ci = m1i , m2i ,..., mipi

i = 1, 2,..., k ,

astfel

nct

mij U , j = 1, 2,..., p i ,

cicluri,
notnd

U i = m1i , m2i ,..., mipi

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

avem

= U (mulimea

i =1

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,

k > 0 . Atunci exist Li = m1i , m2i ,..., mipi lan deschis, mij U , j = 1, 2,..., p i ,

i = 1, 2,..., k , astfel nct notnd U i = m1i , m2i ,..., mipi

14

avem U i U j =

pentru orice 1 i, j k , i j i

= U (mulimea muchiilor poate fi

i =1

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 i = 1 , D = A i T = A .
2. Dac i > n algoritmul se oprete, D conine matricea drumurilor din G ,
altfel se continu.
3. Considerm i = i + 1 i calculm T = T i A 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 O 2n 4 .

1.
2.
3.
4.

Acest algoritm poate fi considerat i sub urmtoarea form.


Algoritmul 1.
Considerm D = A .
Pentru i = 1, 2,..., n i pentru j = 1, 2,..., n se execut pasul 4.
Algoritmul se oprete; D conine matricea drumurilor lui G .
Dac d ij = 0 , atunci pentru k = 1, 2,..., n se execut pasul 5 altfel se
continu.

5. Se calculeaz d ik = dik + d jk .
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 DG i NDG . Algoritmul are forma urmtoare.
Algoritmul 2.
1. Considerm i = 1 , D = A i T = A .
2. Dac i > n se trece la pasul 6, altfel se continu.
3. Considerm i = i + 1 i calculm T = T i A folosind operaiile uzuale de
adunare i nmulire a numerelor ntregi.
15

4.
5.
6.
7.
8.

Calculm D = D + T folosind operaia de adunare a numerelor ntregi.


Relum cu pasul 2.
Pentru fiecare i = 1, 2,..., n i fiecare j = 1, 2,..., n se execut pasul 8.
Algoritmul se oprete, D conine matricea drumurilor din G
Dac d ij 0 , atunci face d ij = 1 , 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

P = ( pij )

1i , j n

de elemente

mij pentru ( xi , mij , x j ) U


pij =
.
+ altfel
Matricea poart numele de matricea ponderilor grafului G .
n graful G se poate defini astfel noinuea de lungime a unui drum
d=

(( x , m
i1

i1i2

) (

)(

, xi2 , xi2 , mi2i3 , xi3 ,..., xi , mi i , xik +1


k

k k +1

)) ,

notat prin L ( d ) = , i dat prin relaia


k

L ( d ) = mi ji j+1 .
j =1

Pentru orice x, y X , putem defini mulimea drumurilor de la x la y ca

fiind mulimea D ( x, y ) = d = ( x = x0 , x1 ,..., xk = y ) d drum in G .


O problem important este de a determina n G drumurile minime ntre
vrfuri. Pentru acest lucru vom defini matricea drumurilor minime, notat

DGmin = ( dij )

1i , j n

, unde

d ij = min L ( d )

d D xi , x j

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

16

Algoritmul 3.
1. Considerm i = 1 (prelucrm linia i ), D = P .
2. Dac i > n , atunci algoritmul se termin i DGmin = D , altfel se continu.
3. Pentru fiecare j = 1, 2,..., n se aplic pasul 5.
4. Facem i = i + 1 (trecem la urmtoarea linie) i trecem la pasul 2.
5. Dac d ij = + , atunci se continu, altfel se nlocuiete liniei i cu
minimul dintre liniei i i linia obinut din linia j prin adugarea valorii

dij 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 O n3


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 xi X un
vrf considerat iniial pentru toate drumurile pe dare dorim s le determinm. Fie

P = ( pij )

1i , j n

matricea ponderilor definit ca mai sus.

Se consider urmtorul proces de calcul:


Algoritmul 4.
1. Considerm m = 1 , X m = { xi } i c ( xi ) = 0 .
2. Dac d + ( X m ) = 0 , atunci ne oprim; altfel se continu.
3. Pentru orice arc

( x , x ) U
j

pentru care x j X m i xk X m se

( )

calculeaz valoarea d jk = p jk + c x j
4. Calculm d = min d jk .
x j X m
xk X m

5. Pentru fiecare k

astfel nct d = d jk

considerm c ( xk ) = d

X m +1 = X m { xk } . Facem m = m + 1 i trecem la pasul 2.


n urma execuiei acestui proces, m este numrul de vrfuri atinse din
vrful xi , X m este mulmea acestor noduri i pentru fiecare x X m valoarea
c ( x ) indic lungimea unui drum minim de extremitate iniial xi i extremitate
17

final x . Procesul se termin n cel mult n 1 repetri ale pailor 2, 3, 4 i 5


deoarece la pasul 5 se adaug cel puin cte un vrf la mulimea X m .
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 X = { x1 , x2 ,..., xn } . Putem
presupune c dorin s determinm drumurile de extremitate final xn . Acest lucru
nu restrnge generalitatea deoarece putem gsi un izomorfism f de grafuri
orientate astfel nct dac dorim s determinm drummurile cu extremitatea final
xi s avem f ( xi ) = xn .

( )

Considerm c P = pij

este matricea ponderilor pentru graful G .

1i , j n

Pentru realizarea algoritmului Bellman-Kalaba, construim o versiune modificat a

( )

matrici ponderilor, matricea W = wij

pij
wij =
0

1i , j n

mij

= 0
pentru i = j

pentru i j

, definit dup cum urmeaz

pentru i j si ( xi , mij , x j ) U
pentru i = j

pentru i j si ( xi , mij , x j ) U

Algoritmul 5.
Etapa 1
Se construiete matricea estins a valorilor arcelor W = wij

( )

i , j =1, n

Construim un tabel n care liniile sunt liniile matricii , notat L = ( Li )1i n , unde Li
este linia i a tabelului La tabelul format se adaug linia Ln +1 care este transpusa
coloanei n din matricea W .
Etapa 2
Se adaug tabelului L , liniile suplimentare Li , i = n + 2, n + 3,... , astfel:
a) presupunnd completat linia Lk se completeaz linia Lk +1 conform relaiei:

Lk +1, j = min Lk , j , min {wk +1,t + Lk ,t } .


t =1,..., n

b) se continu aplicarea punctului (a) pn la obinerea a dou linii Lk i Lk +1


identice.
Etapa 3
18

Se determin regresiv drumul minim de la xi la x n astfel:


-

se adun linia i din L cu linia Lk +1 urmrindu-se rezultatul minim ce se


poate obine. S presupunem c Lk +1,i = wij + Lk +1,i , atunci primul arc din

drumul minim de la xi la x n este arcul xi , x j ;


-

se adaug linia j din L cu Lk +1 reinnd valoare minim, aflat de

exemplu pe coloana k , atunci al doilea arc va fi x j , x k

) .a.m.d. Ultimul

succesor determinat va fi x n .

Propoziia 1. Pentru orice k avem


*

Lk +1,i = min {vij + Lk , j }


j =1, n

Propoziia 2. Dac exist k * pentru care Lk ,i = Lk +1,i , pentru orice

1 i n , atunci Lk ,i = Ls ,i , pentru orice 1 i n i orice s k + 1 ,


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 xn i complexitatea algoritmului este O 2n 2 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 xi , x j dou vrfuri. Dorim s
determinm un drum optim de la xi la x j . Datorit izomorfiesmelor de grafuri,
putem considera c determinm un drum de la x1 la xn , 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 x1 i xn , dac exist drumuri ntre cele
dou vrfuri.

( )

Considerm c P = pij

este matricea ponderilor pentru graful G .

1i , j n

Pentru realizarea algoritmului Bellman-Kalaba, construim o versiune modificat a

( )

matrici ponderilor, matricea W = wij

1i , j n

, definit dup cum urmeaz

19

pij
wij =
0

mij

= 0
pentru i = j

pentru i j

pentru i j si ( xi , mij , x j ) U
pentru i = j

pentru i j si ( xi , mij , x j ) U

Algoritmul 6.
Etapa 1
Se construiete matricea estins a valorilor arcelor W = wij

( )

i , j =1, n

Construim un vector v = ( vi )1i n pentru care considerm v1 = 0 i vi = +


pentru 2 i n .
Etapa 2
a) Cu i = 1, 2,..., n , n aceast ordine se construiete vectorul v* = vi*

( )

1i n

pe

baza formului:

v = min vi , min {v j + w ji } .
j
( x j , xi )U

*
i

b) Se continu aplicarea punctului (a) ct timp exist un indice k pentru care


vk* < vk , nlocuinduse vectorul v prin vectorul v* .
Etapa 3
- Dac wn = + , atunci nu exist drumuri ntre x1 i xn .
-

Se determin drumul de la x1 la xn plecndu-se de la xn , procednd dup


cum urmeaz: dac presupunem c s-a determinat
partea de la xki la x n a drumului minim. Lum xk

i+1

relaia vk

i+1

(x

ki

, xki1 ,..., xk1 = xn ,

vrful pentru care are loc

+ wki+1ki = vki

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 W = wij

i , j =1, n

.,

facem v1 = 0 (. v = ( vi )1i n fiind un vector de dimensiune n ) i


considerm mulimile A = { x1} i B = X \ { x1} .
2. Dac nu exist x j A i xi B astfel nct

( x , x ) U , atunci ne
j

oprin, nu exist drumuri de la x1 la xn ; altfel se continu.


20

3. Considerm mulimea C = x B y A, ( y, x ) U . Pentru orice

xi C , facem vi = min {v j + w ji } .
j
x j A

4. Facem nlocuirile A = A C , B = B \ C .
5. Dac xn A atunci se trece la pasul 2, altfel se continu.
6. Se determin drumul de la x1 la xn plecndu-se de la xn , procednd dup

cum urmeaz: dac presupunem c s-a determinat xk , xk ,..., xk = xn ,


partea de la xki la x n a drumului minim. Lum xk

i+1

are loc relaia vk

i+1

i 1

vrful pentru care

+ wki+1ki = vki .

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 x1 la xn . Acest lucru se va ntmpla doar pentru vrfurile n care se

atinge minimul calculat la aplicarea relaiei vi = min v j + w ji . Aceast


j
x j A

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 W = wij
.,

( )

i , j =1, n

facem v1 = 0 (. v = ( vi )1i n fiind un vector de dimensiune n ) i


considerm mulimile A = { x1} i B = X \ { x1} .
2. Dac nu exist x j A i xi B astfel nct

( x , x ) U , atunci ne
j

oprin, nu exist drumuri de la x1 la xn ; altfel se continu.

3. Considerm mulimea C = x B y A, ( y, x ) U . Pentru orice

xi C , facem vi = min {v j + w ji } .
j
x j A

4. Pentru fiecare

xk C

pentru care exist

xj A

astfel nct

vk + w jk = min {v j + w jk } considerm A = A { xk } i B = B \ { xk } .
j
x j A

5. Dac xn A atunci se trece la pasul 2, altfel se continu.

21

6. Se determin drumul de la x1 la xn plecndu-se de la xn , procednd dup

cum urmeaz: dac presupunem c s-a determinat xk , xk ,..., xk = xn ,


i

partea de la xki la x n a drumului minim. Lum xk

i+1

are loc relaia vk

i+1

i 1

vrful pentru care

+ wki+1ki = vki .

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 i = 1
1.b) n matricea M se consider toate liniile formate dour cu
valoarea 1. Vrfurile corespunztoare acestor linii formez mulimea de
vrfuri Ci .
1.c)

Se elimin din matricea M liniile i coloanele considerate n formarea


mulimii Ci .

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 Y = {C1 , C2 ,..., Cr } i
1.d)

( C , C ) V
i

dac i numai dac exist x Ci i exist y C j astfel nct

( x, y ) U .Se formeaz
d = ( C1 , C2 ,..., Cr ) .
22

astfel un drum hamiltonian n G , i anume drumul

Etapa 3
3.a) Se consider x1 C1 i x2 C2 pentru care exist ( x1 , x2 ) U . Gsim n

C1 un drum hamiltonian d1 de extremitate iniial x1* i extremitate final x1


i n C2 un drum hamiltonian d 2 de extremitate iniial x2 i extremitate

final x2* . Se foremaz astfel drumul hamiltonian d1* = d1 , ( x1 , x2 ) , d 2

graful parial al lui G de vrfuri C1 C2 . Facem i = 3 .


3.b) Dac i > r ne oprin, s-a obinut drumul hamiltonian, altfel se continu.

3.c)

Dac exist xi Ci astfel nct xi*1 , xi U atunci se trece la pasul (3.d),

3.d)

altfel se trece la pasul (3.e).


Se consider n Ci un drum hamiltonian d i de extremitate iniial xi i
notm extremitatea sa final prin xi* . Am format astfel drumul hamiltonian

d i* = d i*1 , ( xi*1 , xi ) , di

graful

parial

al

lui

de

vrfuri

C1 C2 ... Ci . Facem i = i + 1 i mergem la pasul (3.b).


3.e)

Fie ei partea din drumul d i*1 care formeaz acest drum mpreun cu d i 1 .
Fie xi1 Ci 1 i xi Ci pentru care ( xi1 , xi ) U . mprim drumul d i 1 n

d i1 de extremitate final xi1 i drumul d i1 de extremitate iniial xi1 i


extremitate final xi*1 . Considerm un drum d i1 care pleac din xi1 , trece

xi*1 i apoi prin toate celelante vrfuri care apar n drumul d i1 astfel nct
extremitatea final a lui d i1 s fie xi1 . Se consider n Ci un drum
hamiltonian d i de extremitate iniial xi i notm extremitatea sa final prin

xi* . Considerm drumul di* = ( di1 , di1 , ( xi1 , xi ) , di ) n graful parial al lui

G de vrfuri C1 C2 ... Ci . Facem i = i + 1 i mergem la pasul (3.b).

7.2. Teorema lui Chen


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

23

Pentru fiecare nod xi notm cu pi puterea de atingere a vrfului xi , adic


numrul de vrfuri x j pentru care exist drum de extremitate iniial xi i
extremitate final x j .
Propoziia 1. Fie G = ( X , U ) un graf orientat i fr circuite i

( x , x ) U . Atunci
i

pi p j , unde pi este gradul de atingere al vrfului xi .

Corolar. Fie G = ( X , U ) un graf orientat i fr circuite i care conine


un drum de la xi la x j . Atunci pi p j , unde pi este gradul de atingere al
vrfului xi .
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


n
n ( n 1)
pi =

2
i =1
unde pi este gradul de atingere al vrfului xi .
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 ( pi )i =1,2,...,n i se verific
n

valoarea de adevr pentru relaia

i =1

n ( n 1)
. Dac aceast relaie
2

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
n 1 = p (1) > p ( 2) > ... > p ( n ) = 0 ,
atunci drumul

h = x (1) , x ( 2) ,..., x ( n )
este drumul hamiltonian cutat.
24

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 M (1) , care n locul valorilor de
1 utilizate n matricea obinuit a arcelor, utilizeaz nsui arcul respectiv,
reprezentat prin vrfurile care l compun. M (1) = mij(1) i , j =1,n , unde

( )

xi x j
mij(1) =
0

dac exist arc de la xi la x j


n rest

Prin suprimarea primei litere n matricea M (1) se obine o matrice M (1)


~
numit a destinaiilor posibile. Se compun matricele M (1) i M (1) prin operaia

de nmulire latin. 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.
1

Prin

definiia

produsului

latin

avem

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

M ( 3) = M ( 2) L M (1) , Algoritmul continu pn la obinerea matricii M ( n 1) ,


deoarece ntr-un graf cu n vrfuri un drum hamiltonian are n 1 arce.
n matricea M ( n 1) citim, conform modului de scriere de mai sus toate
drumurile hamiltoniene ale grafului.
Dac toate elementele lui M ( n 1) sunt zerouri ( M ( n 1) = 0 ), 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).

25

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
L = { x0 , x1 ,..., xr } , unde xi X (reprezentarea prin noduri), fie prin

L = {u1 , u2 ,..., us } , unde ui U avnd condiia ca pentru orice i = 1, 2,..., s 1


muchiile ui i ui +1 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
L = { x0 , u1 , x1 , u2 ,..., xr 1 , ur , xr } , unde pentru orice i = 1, 2,..., r avem

ui = { xi 1 , xi } .
Prezentm n comtinuare algoritmul lui Fleury:
Algoritmul 2.
6. Se alege un vrf x0 X i considerm C0 = { x0 } i i = 0 .
7. Pentru xi alegem o muchie ui +1 = ( xi , xi +1 ) care nu apare n Ci i care
nu este izolat n graful parial al lui G obinut prin eliminarea muchiiler
care formeaz Ci (sau o muchie izolat din graful parial menionat, dac
nu
avem
alt
variant)..
Definim
lanul
Ci +1 = {Ci , ui +1 , xi +1} = { x0 , u1 , x1 , u2 ,..., xi , ui +1 , xi +1} i facem i = i + 1 .
8. Dac i = m ne oprim, Cm 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.
26

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 x0 X i plecnd de la x0 , prin traversarea fiecrei

muchii neconsiderate formm un ciclu C0 = u10 , u20 ,..., ur0

} i i = 0 .

2. Dac graful parial format cu muchiile cuprinse n ciclul Ci coincide cu

G atunci ne oprim, Ci reprezint ciclul eulerian cutat, altfel se


continu.
3. Fie nodul xi , extremitate a muchiei uki din ciclul Ci i al unei muchii ui*
care nu este n Ci . Pornind de la nodul xi , n graful parial al lui G cu
mulimea de muchii format de muchiile nefolosite la formarea lui Ci ,
formm un ciclu ca la pasul (1), notat Ci* .

4. Formm ciclul Ci +1 = u1i +1 , u2i +1 ,..., uri +1

i +1

pornin din xi , parcurgnd

integral Ci pn ajungen din nou la xi i apoi parcurgnd integral Ci*


pn se ajunge la xi
5. Facem i = i + 1 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 X = {x1 , x 2 ,..., x n }, atunci oricare ar fi 1 i n avem ( xi , xi ) U .
2. Exist un vrf unic x1 X n care nu intr nici un arc, numit sursa reelei.
3. Exist un unic vrf x n din care nu iese nici un arc, numit destinaia reelei.
4.

G este conex i exist drumuri de la x1 la x n .

5. S-a definit o funcie c : U astfel nct c(u ) 0 pentru orice arc u U ;


numrul c(u ) se numete capacitatea reelei.

Definiie. Fie G = ( X , U , p ) o reea de transport. Fiind dat o


submulime Y X , se numete tietur de suport Y mulimea de arce

(Y ) =

{( x , x ) U x Y , x Y } U
i

27

+ (Y ) =

Cantitatea c (Y ) =

{( x , x ) U x Y , x Y } U .
i

ij
xi , x j (Y )

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 xi , x j U , avem 0 xi , x j p ij .


2. Condiia de conservare

(xk , x j ) =
n

Pentru orice xi X , avem

k =1
xk , x j

(x
n

h =1
x , x
j
h

, xh ) .

Observaii.
1. Condiia 2) afirm c pentru orice vrf x cu x x1 i x x n , 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 xi , x j U se

numete arc saturat, dac n raport cu are loc relaia xi , x j = pij .


Se pune problema determinrii funciei astfel nct suma fluxurilor pe
arcele ce intr n x n 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


n

h =1

( xh , xn )

h =1

( xh , xn ) .

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

i =1

( x1 , xi )U

( x1 , xi ) =

j =1

( x j , xn )

( x j , xn )U

Definiie. Fie G = ( X , U , p ) o reea de transport avnd sursa x1 ,


destinaia x n i :U + un flux oarecare n reeaua G . Valoarea
28

( x j , xn ) ( xn )

( x j , xn ) =

( x1 , xi ) + ( xi )

( x1 , xi )

se numete valoarea total a fluxului : + .


Propoziia 2. Fie G = ( X , U , p ) o reea de transport i fie Y X o
submulime cu proprietile:
- pentru sursa x1 a lui G avem x1 Y ;
pentru destinaia x n a lui G avem x n Y .

Atunci pentru orice flux :U + avem

xi , x j (Y )

(xi , x j )

xi , x j + (Y )

(xi , x j ) c = (Y ) .

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 xi , x j = 0 , oricare ar fi

( x , x ) U .
i

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 x1 cu semnul + ;

b) vrfurile x j + ( x1 ) vor fi marcate cu + x1 dac arcul x1 , x j


nesaturat;
c) dac vrful x j este deja marcat i dac pentru un vrf x k + x j

(x , x ) este nesaturat, atunci marcm vrful x


j

( )

prin + x j ;

este
arcul

( ) arcul

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

(x x ) are fluxul nenul, marcm vrful x


k

prin x j .;
29

n urma terminrii operaiei de marcare, putem ntlni urmtoarele


situaii:
1. Dac destinaia x n 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 x n s-a putut marca, atunci fluxul nu este maxim i poate fi
msurat astfel:
a) se alege un drum de la x1 la x n ;
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 x n 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 x1 cu x n , uor de gsit
urmrind vrfurile marcate n sensul de la x n ctre x1 . Notm V + mulimea

arcelor ( x, y ) unde y este marcat cu + i V mulimea arcelor ( x, y ) unde y


este marcat cu -. Calculm

1 = min+ {c(u ) (u )}
uV

2 = min (u )
uV

i = min{1 , 2 }. Observm c > 0 i este numr ntreg.


Mrim cu pe fiecare arc u V + i micorm cu pe fiecare arc u V ,
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 x n .

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.
30

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

31

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