SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file ·...

148
SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA GRAFURILOR

Transcript of SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file ·...

Page 1: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

SILVIU BẬRZĂ LUCIANA MARIA MOROGAN

ALGORITMICA GRAFURILOR

Page 2: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

© Editura FundaŃiei România de Mâine, 2008

Editură acreditată de Ministerul EducaŃiei şi Cercetării prin Consiliul NaŃional al Cercetării ŞtiinŃifice din ÎnvăŃământul Superior.

Descrierea CIP a Bibliotecii NaŃionale a României BẬRZĂ, SILVIU

Algoritmica grafurilor / Silviu Bârză, `Luciana Maria Morogan – Bucureşti: Editura FundaŃiei România de Mâine, 2008 148p.;23,5 cm Bibliogr. ISBN 978-973-163-147-9 I. Morogan, Luciana Maria 004.421.2.519.17(075.35)

Reproducerea integrală sau fragmentară, prin orice formă şi prin mijloace tehnice, este strict interzisă şi se pedepseşte conform legii. Răspunderea pentru conŃinutul şi originalitatea textului revine exclusiv autorului/autorilor

Page 3: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

UNIVERSITATEA SPIRU HARET FACULTATEA DE MATEMATICĂ INFORMATICĂ

SILVIU BẬRZĂ LUCIANA MARIA MOROGAN

ALGORITMICA GRAFURILOR

EDITURA FUNDAłIEI ROMÂNIA DE MÂINE Bucureşti, 2008

Page 4: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

-

Page 5: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

5

CUPRINS

Introducere ……………………………………………………….. 7

Capitolul I. INTRODUCERE ÎN TEORIA GRAFURILOR ….. 9 1.1. Grafuri neorientate ………………….…………………………......... 9 1.2. Grafuri orientate ………………………. …………………………… 17

Capitolul II. TIPURI PARTICULARE DE GRAFURI ..……… 25 2.1. Grafuri conexe ………… …………………………………………… 27

2.2. Grafuri complementare şi izomorfe ………………………………… 34 2.3. Grafuri ciclice ……………………………… ……………………… 37

Capitolul III. REPREZENTAREA GRAFURILOR …………… 46

3.1. Reprezentare grafuri neorientate ……………………………………. 46 3.2. Matrici asociate grafurilor orientate ……………………………….... 54

Capitolul IV. ARBORI ..…………………………………………. 62 4.1. Definire şi proprietăŃi ………………………………………….......... 62

4.2. Arbori parŃiali …………………………………………….................. 66 4.3. Algoritmul lui Kruskal ………………………………………............ 71

4.4. ArborescenŃe ………………………………………………............... 74

Capitolul V. GRAFURI HAMILTONIENE ŞI EULERIENE … 81

5.1. Grafuri Hamiltoniene ……………………………………………….. 81

5.2. Grafuri Euleriene ……………………………………………………. 83

Capitolul VI. ALGORITMI PENTRU DRUMURI ÎN GRAFURI ORIENTATE ………………………… 88

6.1. Algoritmi de calcul direct …………………………………………... 88 6.2. Algoritmul Wharshal pentru drumuri minime în grafuri orientate …. 94

6.3. Algoritmul lui Dantzig pentru drumuri minime de extremitate iniŃială dată …………………………………………………………. 98

6.4. Algoritmul Bellman-Kalaba pentru drumuri minime de extremitate finală dată ………………………………………............................... 100

6.5. Algoritmii lui Ford şi Dijkstra pentru drumuri minime de extremităŃi

date ………………………………………….................................... 105

Capitolul VII. ALGORITMI PENTRU GRAFURI HAMILTONIENE ŞI EULERIENE …………...... 112

7.1. Algoritmul lui Foulkes pentru drumuri hamiltoniene ………............ 112

7.2. Teorema lui Chen …………………………………………………… 115 7.3. Algoritmul înmulŃirii latine …………………………………............. 119 7.4. Algoritmul lui Fleury pentru drumuri euleriene ……………………. 121

7.5. Algoritmul lui Hierholzer pentru drumuri euleriene ………………... 124

Page 6: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

6

Capitolul VIII. FLUX MAXIM ÎN REłELE DE TRANSPORT 126 8.1. ConsideraŃii generale ……………………………………………….. 126 8.2. Algoritmul Ford-Fulkerson …………………………………............ 129 8.3. Exemple …………………………………………………………….. 130

Capitolul IX. REłELE DE PROGRAMARE A ACTIVITĂłILOR ………………………………... 136

9.1. Graful arc/activitate, metoda drumului critic ………………………. 137 9.2. Graful vârf/activitate, metoda potenŃialului ………………………… 144

Bibliografie………………………………………………………………. 148

Page 7: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

7

INTRODUCERE

Prezentul material acoperă programa cursului de Algoritmica

grafurilor şi a fost redactată pornind de la dorinŃele autorilor de a prezenta

şi a exemplifica cât mai multe elemente ce Ńin de algoritmi de determinare

pornind de la teoria grafurîlor.

Sunt prezentate rezultate de bază din teoria grafurilor, atât în

domeniul orientat cât şi neorientat şi cei mai importanŃi algoritmi pentru

rezolvarea problemelor de grafuri. Gruparea materialelor s-a realizat pe

baza noŃiunilor manipulate.

Cartea cuprinde o largă exemplificare a noŃiunilor prezentate din

punct de vedere teoretic şi asupra modului de aplicare a algoritmilor

descrişi.

Autorii

Page 8: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

8

Page 9: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

9

I. INTRODUCERE ÎN TEORIA GRAFURILOR

1.1. Grafuri neorientate

DefiniŃie. Fie X o mulŃime finită şi nevidă şi { }{ }, ,U x y x y X⊂ ∈ .

Numim graf (sau graf neorientat) perechea ( ),G X U= . Elemente din mulŃimea

X se numesc noduri sau vârfuri, iar elementele din mulŃimea U poartă numele

de muchii ale grafului. □

Un graf se reprezintă grafic printr-o mulŃime de puncte corespunzătoare vârfurilor grafului şi o mulŃime de segmente corespunzătoare 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.

Exemplul 1. Fie ( ),G X U= , unde { }1,2,3, 4,5,6,7X = şi

{ } { } { } { } { } { } { } { } { }{ }1,2 , 1,3 , 2,4 , 2,5 , 3,4 , 4,5 , 4,6 , 5,6 , 6,7U =

Am definit un graf neorientat. Acest graf poate avea reprezentarea grafică: 1

3

2

4 5

6 7

şi cum în această reprezentare nu există muchii care să se intersecteze, rezultă că avem un graf planar.

╬ Pornind de la definiŃie observăm că dacă X are n elemente, atunci U are cel mult 2

nC elemente.

Dacă A este o mulŃime, vom nota prin A numărul de elemente ale

mulŃimii.

Page 10: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

10

DefiniŃie. Fie ( ),G X U= un graf şi x X∈ un nod fixat. Prin gradul

nodului x înŃelegem numărul muchiilor incidente lui x şi notăm acest număr cu

( )d x . Dacă ( ) 1d x = spunem că x este nod terminal. Dacă ( ) 0d x = spunem

că x este nod izolat. □

Exemplul 2. Pentru graful specificat în exemplul 1 gradele vârfurilor sunt cele indicate în următorul tabel.

x 1 2 3 4 5 6 7

( )d x 2 3 2 4 3 3 1

După cum se poate vedea în acest tabel, graful nu are vârfuri izolate şi nodul 7 este nod terminal

╬ PropoziŃia 1. Fie ( ),G X U= un graf în care U m= . Atunci

( ) 2x X

d x m∈

=∑ .

DemonstraŃie. Dacă { },x y U∈ , atunci intervine o contribuŃie unitară atât

în ( )d x , cât şi în ( )d y . Astfel, dacă se elimină muchia, obŃinând graful

{ }{ }( ), \ ,G X U x y′ = , atunci în G′ vom avea ( ) ( ) 1d x d x′ = − ,

( ) ( ) 1d y d y′ = − şi pentru orice { }\ ,z X x y∈ , ( ) ( )d z d z′ = .

Pentru graful G′ vom avea ( ) ( ) ( ) ( )

{ }

( ) ( ) ( ){ }

( )

( ) { }{ }

\ ,

\ ,

1 1 2

2 2 2 1 2 \ ,

z X z X x y

z X x y z X

d z d x d y d z

d x d y d z d z

m m U x y

∈ ∈

∈ ∈

′ ′ ′ ′= + + =

= − + − + = − =

= − = − =

∑ ∑

∑ ∑ .

Deoarece într-un graf ( )0 ,G X= ∅ , în care toate vârfurile sunt izolate

avem ( ) 0d z = pentru orice z X∈ , putem scrie ( )0 2 0 2z X

d z∈

= = ⋅ = ∅∑ ,

iterând relaŃia de mai sus, demonstrăm egalitatea dată în anunŃ. □

Exemplul 3. Pentru graful dat în exemplul 1, folosind gradele vârfurilor date în tabelul din exemplul 2 avem

( ) ( )7

1

2 3 2 4 3 3 1 18x X x

d x d x∈ =

= = + + + + + + =∑ ∑ .

Pe de altă parte 9U = şi astfel se verifică relaŃia din propoziŃia 1.

Page 11: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

11

PropoziŃia 2. Pentru orice graf ( ),G X U= , numărul vârfurilor de grad

impar este par. DemonstraŃie. Prin absurd considerăm că numărul de vârfuri cu grad

impar este impar. Fie 1 2X X X= ∪ , unde ( ){ }1X x X d x impar= ∈ şi

( ){ }2X x X d x par= ∈ . În mod evident 1 2X X =∅∩

( )1

1x X

d d x∈

= ∑ este număr impar ca sumă impară de numere impare.

( )2

2x X

d d x∈

= ∑ este număr par ca sumă de numere pare.

Deoarece 1 2X X =∅∩ , rezultă că ( ) 1 2x X

d x d d∈

= +∑ şi astfel ( )x X

d x∈∑

este număr impar ca sumă între un număr par şi unul impar. Dar din propoziŃia 1 avem ( ) 2

x X

d x U∈

=∑ , deci este număr par. ContradicŃie.

□ Exemplul 4. Pentru graful neorientat din exemplul 1, nodurile cu gradul impar sunt 2, 5, 6 şi 7 şi astfel numărul lor este 4, deci număr par. Astfel se verifică practic afirmaŃia făcută în propoziŃia 2.

╬ DefiniŃie. Fie ( ),G X U= un graf. Numim graf parŃial al lui G, graful

( ),G X V′ = , unde V U⊂ .

□ Exemplul 5. Fie graful ( ),G X U= , unde { }1,2,3, 4,5,6,7X = este

mulŃimea de vârfuri, iar mulŃimea muchiilor este { } { } { } { } { } { } { } { } { }{ }1,2 , 1,3 , 2,3 , 2, 4 , 3,6 , 3,7 , 4,5 , 5,6 , 5,7U = .

Considerăm graful ( ),G X V′ = , unde

{ } { } { } { } { } { } { }{ }1,2 , 1,3 , 2,4 , 3,7 , 4,5 , 5,6 , 5,7U =

Astfel, ( ),G X V′ = este graf parŃial pentru graful ( ),G X U= . Din punct

de vedere al reprezentării, graful ( ),G X U= şi graful parŃial ( ),G X V′ = au

următoarele imagini:

Page 12: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

12

1

2 3

4 5

6

7

1

2 3

4 5

6

7

graful ( ),G X U= graful parŃial ( ),G X V′ =

╬ DefiniŃie. 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= ∈ ∈ .

□ Exemplul 6. Fie graful ( ),G X U= dat în exemplul 5. Considerăm

mulŃimea { }2,3, 4,5,7Y X= ⊂ , care se obŃine din X prin eliminarea vârfurilor

1 şi 6. Eliminând din U toate muchiile care au una din extremităŃi vârfurile eliminate obŃinem { } { } { } { } { }{ }2,3 , 2, 4 , 3,7 , 4,5 , 5,7V = . ObŃinem astfel graful

( ),G Y V′′ = care este subgraf pentru graful ( ),G X U= .

Din punct de vedere al reprezentării avem următoarea pereche de imagini:

1

2 3

4 5

6

7

2 3

4 5

7

graful ( ),G X U= subgraful ( ),G Y V′′ =

╬ DefiniŃie. Fie ( ),G X U= un graf cu n vârfuri ( X n= ). Spunem că G

este un graf complet , dacă oricare ar fi ,x y X∈ , avem { },x y U∈ (orice două

vârfuri din G sunt conectate sau adiacente). □

Page 13: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

13

Exemplul 7. Pentru graful ( ),G X U= din exemplul 5 nu este complet

deoarece, de exemplu, { }1,7 U∉ şi { }4,6 U∉ .

╬ Graful complet cu n vârfuri se notează prin nK

PropoziŃia 3. Numărul muchiilor lui nK este 2nC .

DemonstraŃie. Deoarece nK este un graf complet şi astfel oricare ar fi

,x y X∈ , avem { },x y U∈ , rezultă că U conŃine toate submulŃimile cu două

elemente care se pot forma cu elemente în mulŃimea X . Folosind noŃiuni de combinatorică, avem astfel că dintr-o mulŃime cu n

elemente se pot forma 2nC submulŃimi cu două elemente. Astfel, dacă

( ),nK X U= , cu n X= , atunci 2nU C= .

□ Exemplul 8. Să construim 5K , deci graful ( )5 ,K X U= , unde

{ }1,2,3,4,5X = . Numărul de muchii este, conform propoziŃiei 3, 25

5 410

1 2C = =

i

i.

MulŃimea de muchii este astfel: { } { } { } { } { } { } { } { } { } { }{ }1,2 , 1,3 , 1, 4 , 1,5 , 2,3 , 2,4 , 2,5 , 3,4 , 3,5 , 4,6U =

Graful 5K astfel definit are reprezentarea:

2

1 3

4

5

╬ DefiniŃie. Fie ( ),G X U= un graf. Dacă există 1X şi 2X astfel încât

1 2X X =∅∩ şi 1 2X X X= ∪ ( X admite o partiŃie din două blocuri 1X şi 2X )

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

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

Page 14: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

14

Exemplul 9. Considerăm graful neorientat ( ),G X U= , în care mulŃimea

de vârfuri este { }1,2,3, 4,5,6,7X = şi mulŃimea de muchii este

{ } { } { } { } { } { } { }{ }1,2 , 1,6 , 2,3 , 2,7 , 4,5 , 4,6 , 5,7U = .

Se observă că putem realiza partiŃia 1 2X X X= ∪ , 1 2X X =∅∩ , cu

{ }1 1,3, 4,7X = şi { }2 2,5,6X = , deoarece pentru orice muchie { },x y U∈ avem

1x X∈ şi 2y X∈ . Graful considerat are următoarea reprezentare:

1

3

4

2

5

6 7

DefiniŃie. Fie ( ),G X U= un graf bipartit cu partiŃiile 1X şi 2X . Dacă

1X p= şi 2X q= şi dacă fiecare vârf din 1X este adiacent cu toate vârfurile

din 2X (pentru orice 1x X∈ şi orice 2y X∈ avem { },x y U∈ ) spunem că G

este un graf bipartit complet, notat ,p qK .

□ Exemplul 10. Pentru graful bipartit din exemplul 9 se observă că el nu este

un graf bipartit complet, deoarece, de exemplu, nu conŃine muchia { }3,5 şi nici

muchia { }2,4

╬ PropoziŃia 4. Graful bipartit complet ,p qK are pq muchii.

DemonstraŃie. Considerăm ( ), ,p qK X U= , 1 2X X X= ∪ ,

1 2X X =∅∩ , 1X p= şi 2X q= .

Page 15: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

15

Conform definiŃiei pentru orice 1x X∈ şi orice 2y X∈ avem

{ },x y U∈ . Dacă fixăm 1x X∈ , atunci pentru fiecare 2y X∈ avem { },x y U∈ ,

deci numărul de muchii pentru 1x X∈ fixat este egal cu 2X q= .

Fiecare vârf 1x X∈ poate fi ales, fixat în 1X p= . Astfel, numărul total de muchii este pq .

□ Exemplul 11. Considerăm că mulŃimea de vârfuri { }1,2,3, 4,5,6,7X =

este partiŃionată prin mulŃimile { }1 1,3, 4,7X = şi { }2 2,5,6X = (are loc

1 2X X X= ∪ şi 1 2X X =∅∩ ). Având 1 4p X= = şi 2 3q X= = , putem

construi un graf bipartit ( )4,3 ,K X U= , unde mulŃimea de muchii este:

{ } { } { } { } { } { }{{ } { } { } { } { } { }}1,2 , 1,5 , 1,6 , 2,3 , 2, 4 , 2,7 ,

3,5 , 3,6 , 4,5 , 4,6 , 5,7 , 6,7

U =

şi avem 12U = ceea ce corespunde enunŃului propoziŃiei 4.

Acest graf are următoarea reprezentare

1

3

4

2

5

6 7

DefiniŃie. Fie ( ),G X U= un graf. Numim lanŃ în G o succesiune de

vârfuri ( )0 1 0 1, ,..., ...r rL x x x x x x= = , astfel încât pentru orice 0,1,..., 1i r= − ,

1i ix x U+ ∈ (adică o succesiune în care oricare două vârfuri vecine din lanŃ sunt adiacente).

Page 16: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

16

Fie ( ),G X U= este un graf şi 0 1... rL x x x= un lanŃ în G . Vârfurile 0x şi

rx se numesc extremităŃile lanŃului L , iar r se numeşte lungimea lanŃului L ,

notată ( )l L r= (lungimea unui lanŃ este dată de numărul muchiilor sale sau de

numărul vârfurilor mai puŃin unul). Exemplul 12. Considerăm graful ( ),G X U= care corespunde următoarei

reprezentări:

1

2

4

3

6

5

Fie succesiunea de vârfuri [ ]1 1,2,4,1,3,6L = . Se formează un lanŃ în G

deoarece perechile { }1,2 , { }2,4 , { }4,1 , { }1,3 ,{ }3,6 sunt muchii în U . Acest

lanŃ este de extremităŃi 1 şi 6 iar deoarece numărul vârfurilor din lanŃ este egal cu 6 avem ( ) 5l L = . Acest lanŃ poate fi dat şi prin muchiile sale sub forma

{ } { } { } { } { }1 1, 2 , 2,4 , 1, 4 , 1,3 , 3,6L =

Fie succesiunea de vârfuri [ ]2 1,2,4,3,5L = . Această succesiune nu

descrie un lanŃ deoarece graful considerat nu conŃine nicio muchie între vârfurile 3 şi 5.

╬ DefiniŃie. Fie ( ),G X U= un graf. LanŃul L din G se numeşte lanŃ

elementar dacă pentru orice 0 ,i j r≤ ≤ , i j≠ , avem i jx x≠ (lanŃul trece prin

noduri distincte). □

Exemplul 13. LanŃul [ ]1 1,2,4,1,3,6L = din exemplul 12 are în poziŃiile 1

şi 4 vârful 1 şi astfel nu este un lanŃ elementar (trece de două ori prin vârful 1) În graful din exemplul 12, un lanŃ elementar este [ ]3 1,2,4,3,6L =

Page 17: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

17

DefiniŃie. Fie ( ),G X U= un graf. LanŃul L din G se numeşte lanŃ

simplu dacă pentru orice 0 , 1i j r≤ ≤ − , i j≠ , avem { } { }1 1, ,i i j jx x x x+ +≠ (toate

muchiile sale sunt distincte). □

Exemplul 14. LanŃurile [ ]1 1,2,4,1,3,6L = şi [ ]2 1,2,4,3,5L = din

exemplul 12 şi [ ]3 1,2,4,3,6L = din exemplul 13 sunt toate lanŃuri simple. Cel mai

bine se observă acest lucru la exprimarea lanŃurilor prin muchiile lor, aşa cum este cazul pentru lanŃul [ ]1 1,2,4,1,3,6L = , care în exemplul 12 este exprimat şi prin

muchii prin { } { } { } { } { }1 1, 2 , 2,4 , 1, 4 , 1,3 , 3,6L = .

În graful din exemplul 12 putem considera şi lanŃul { }4 2,1, 4,3,1, 4,5L =

care nu este un lanŃ simplu deoarece conŃine de două ori muchia { }1,4 .

╬ PropoziŃia 5. Fie ( ),G X U= un graf şi L un lanŃ în G . Dacă L este

lanŃ elementar, atunci L este lanŃ simplu. DemonstraŃie. Prin absurd, L nu este lanŃ simplu. Atunci există

0 , 1i j r≤ ≤ − , i j≠ astfel încât { } { }1 1, ,i i j jx x x x+ += . Astfel avem fie i jx x= ,

fie 1i jx x += , de unde rezultă că L nu este lanŃ elementar. ContradicŃie.

1.2. Grafuri orientate

DefiniŃie. Fie X o mulŃime finită şi nevidă. Numim graf orientat (digraf) orice pereche ( ),G X U= în care U X X⊂ × este o mulŃime finită de perechi

ordonate cu componente din X (U este o relaŃie binară pe X ). □

Elementele mulŃimii X vor fi numite vârfuri sau noduri. Elementele mulŃimii U se numesc arce. Orice arc are forma ( ),a b , în care a se numeşte extremitate iniŃială, iar

b se numeşte extremitate finală a arcului ( ),a b .

Exemplul 15. Considerăm mulŃimea { }1,2,3, 4,5,6,7,8,9X = şi

mulŃimea U X X⊂ × ,

( ) ( ) ( ) ( ) ( ) ( ){( ) ( ) ( ) ( ) ( ) ( ) ( )}1, 2 , 1,3 , 1,6 , 2,3 , 2,9 , 3, 4 ,

4,5 , 4,9 , 5,6 , 6,8 , 7,6 , 8,7 , 9,8

U =

Page 18: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

18

Dacă luăm arcul ( )4,9 , spunem că 4 este extremitatea iniŃială a arcului, iar

9 este extremitatea finală a arcului. Graful descris are următoarea reprezentare

1

2 3

4 5

6

7

8 9

Un graf orientat se reprezintă grafic printr-o mulŃime de puncte corespunzătoare vârfurilor şi printr-o mulŃime de segmente orientate (săgeŃi) corespunzătoare arcelor. O săgeată este orientată de la extremitatea iniŃială 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 .

DefiniŃie. Fie ( ),G X U= un graf orientat şi x X∈ un nod fixat.

a) Numim grad interior al lui x , numărul arcelor incidente interior lui x ,

adică mărimea ( ) ( ){ },d x y x U y X− = ∈ ∈ .

b) Numim grad exterior al lui x , numărul arcelor incidente exterior lui x ,

adică mărimea ( ) ( ){ },d x x y U y X+ = ∈ ∈ .

c) Prin gradul nodului x înŃelegem numărul total al arcelor incidente lui x ,

adică mărimea ( ) ( ) ( )d x d x d x− += + .

d) Dacă ( ) 0d x = spunem că x X∈ este vârf izolat.

e) Dacă ( ) 1d x− = şi ( ) 0d x+ = spunem că x X∈ este vârf terminal; dacă

( ) 0d x− = şi ( ) 1d x+ = spunem că x X∈ este vârf iniŃial.

Page 19: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

19

Exemplul 16. Pentru graful din exemplul 15 putem rezuma valorile pentru gradul interior, gradul exterior şi gradul fiecărui vârf în următorul tabel:

x 1 2 3 4 5 6 7 8 9 ( )d x− 0 1 2 1 1 3 1 2 2

( )d x+ 3 2 1 2 1 1 1 1 1

( )d x 3 3 3 3 2 4 2 3 3

╬ DefiniŃie. Fie ( ),G X U= un graf orientat şi A X⊂ o mulŃime de

vârfuri. a) Gradul interior lui A este numărul arcelor ce intră în A şi care au nodul

iniŃial în afara lui A , adică mărimea

( ) ( ){ }, ,d A y x U y A x A− = ∈ ∉ ∈ .

b) Gradul exterior lui A este numărul arcelor ce ies din A şi au nodul

terminal în afara lui A , adică mărimea

( ) ( ){ }, ,d A x y U x A y A+ = ∈ ∈ ∉ .

c) Gradul total al lui A este ( ) ( ) ( )d A d A d A− += + .

□ Exemplu 17. Considerăm graful din exemplul 15 şi mulŃimea

{ }3,4,6,7A = . Avem ( ) 5d A− = , ( ) 3d A+ = . Astfel ( ) 8d A = .

╬ ObservaŃii

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 numără la determinarea valorii ( )d A+ .

2) Evident, pentru orice A X⊂ avem ( ) ( )x A

d A d x+ +∈

≤∑ , deoarece s-ar

putea ca anumite arce care intră în A să aibă extremitatea iniŃială tot în A , arce care nu se numără la determinarea valorii ( )d A− .

Din 1) şi 2) rezultă că ( ) ( )x A

d A d x∈

≤∑ .

DefiniŃie. Fie ( ),G X U= un graf orientat. Numim graf orientat parŃial

al lui G graful orientat ( ),G X V= în care V U⊂ .

Page 20: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

20

Exemplul 18. Fie graful orientat ( ),G X U= , unde mulŃimea de vârfuri

este { }1,2,3, 4,5,6X = şi mulŃimea de arce este

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1,2 , 1,5 , 1,6 , 2,3 , 2,4 , 4,3 , 6, 4 , 6,5U =

Dacă ( ),G X V′ = , unde ( ) ( ) ( ) ( ) ( ){ }1,2 , 1,5 , 2, 4 , 6,4 , 6,5V = , este un

graf orientat parŃial al grafului G . Grafurile G şi G′ au reprezentarea următoare:

1

2 5

3

6

4

1

2 5

3

6

4

Graful orientat ( ),G X U= Graful orientat parŃial ( ),G X V′ =

Facem observaŃia că în grafulG′ s-a obŃinut un vârf izolat, vârful 3 (nu există niciun arc care să-l aibă ca extremitate).

╬ Un graf orientat parŃial al lui G se obŃine prin suprimarea anumitor arce

ale lui G . DefiniŃie. 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= ∈ ∈

(mulŃimea tuturor arcelor lui G cu ambele extremităŃi în Y ). □

Exemplul 19. Considerăm graful ( ),G X U= din exemplul 18. Fie

{ }2,3,4,6Y X= ⊂ , care se obŃine prin eliminarea vârfurilor 1 şi 5 din X .

Eliminăm din U toate arcele care au ca extremitate pe 1 sau pe 5 şi obŃinem

( ) ( ) ( ) ( ){ }2,3 , 2, 4 , 4,3 , 6, 4U = . Graful ( ),G Y V′′ = astfel obŃinut este subgraf

al lui G . Grafurile G şi G′′ au următoarea reprezentare:

Page 21: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

21

1

2 5

3

6

4

2

3

6

4

Graful orientat ( ),G X U= Graful orientat parŃial ( ),G Y V′′ =

╬ Un subgraf orientat se obŃine suprimând anumite vârfuri din G şi

eliminând toate arcele incidente vârfurilor suprimate. DefiniŃie. 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 vârfuri se notează cu nK .

Exemplul 20. Să considerăm { }1,2,3,4,5X = şi să construim

( )5 ,K X U= , un graf orientat complet cu 5 vârfuri. Să considerăm mulŃimea de

arce ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1,2 , 1,4 , 1,5 , 2, 4 , 3,1 , 3,2 , 4,3 , 4,5 , 5, 2 , 5,3U =

Graful obŃinut are reprezentarea

1

2 4

3 5

Fie mulŃimea ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1,2 , 1,5 , 2,3 , 2, 4 , 3,1 , 3,4 , 4,1 , 4,5 , 5,2 , 5,3V =

Se formează astfel ( )5 ,K X V′ = care este tot un graf orientat complet. El diferă de

5K descris mai sus prin orientarea arcelor şi are reprezentarea

Page 22: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

22

1

2 4

3 5

De asemenea, putem considera drept mulŃime de arce, mulŃimea ( ) ( ) ( ) ( ) ( ) ( ){( ) ( ) ( ) ( ) ( ) ( )}1,2 , 1, 4 , 1,5 , 2,1 , 2, 4 , 3,1 ,

3,2 , 4,2 , 4,3 , 4,5 , 5, 2 , 5,3

W =

şi se formează acum un graf ( )5 ,K X W′′ = care este graf orientat complet. Acesta

diferă de 5K prin faptul că unele vârfuri sunt unite de perechi de arce în ambele

sensuri. Graful 5K ′′ are ca reprezentare imaginea:

1

2 4

3 5

╬ ObservaŃie. În cazul grafurilor neorientate, pentru un n∈ℕ , 2n ≥ ,

există un singur graf complet cu n vârfuri, notat nK . În cazul grafurilor orientate

pentru un n∈ℕ , 2n ≥ dat, există mai multe grafuri orientate complete cu n vârfuri, ele diferind fie prin orientarea arcelor, fie prin numărul de arce ce unesc două vârfuri, număr ce poate fi 1 sau 2.

Page 23: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

23

DefiniŃie. Fie ( ),G X U= un graf orientat. Numim drum în G o

succesiune de vârfuri ( )0 1, ,..., rd x x x= astfel încât pentru orice 0,1,..., 1i r= − ,

1i ix x U+ ∈ (sau o succesiune de arce care au acelaşi sens, ( )1 1, ,..., pd u u u= , cu

proprietatea că pentru orice 1,2,..., 1i p= − , iu şi 1iu + au o extremitate comună,

mai exact extremitatea finală a lui iu coincide cu extremitatea iniŃială a lui 1iu + . □

Fie ( )0 1, ,..., rd x x x= un drum în graful ( ),G X U= . 0x se numeşte

extremitatea iniŃială, iar rx extremitatea finală a drumului d .

Exemplul 21. Fie { }1,2,3, 4,5,6X = şi graful ( ),G X U= , unde

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1,2 , 1,5 , 1,6 , 2,3 , 2,4 , 3,6 , 4,3 , 5,3 , 6, 4 , 6,5U =

care are reprezentarea

1

2 5

3

6

4

Succesiunea de vârfuri ( )1,2,3,6,5d = este un drum deoarece există

succesiunea de arce ( )1,2 , ( )2,3 , ( )3,6 şi ( )6,5 .

Extremitatea iniŃială a drumului este 1, extremitatea sa finală este 5 ╬

DefiniŃie. Drumul ( )0 1, ,..., rd x x x= din graful ( ),G X U= se numeşte

elementar dacă pentru orice , 0,1,...,i j r= , i j≠ , avem i jx x≠ (drumul trece

prin noduri distincte). □

Exemplul 22. Drumul ( )1,2,3,6,5d = dat în exemplul 21 este un drum

elementar pentru că trece o singură dată prin fiecare din vârfurile 1, 2, 3, 5 şi 6. ╬

Page 24: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

24

DefiniŃie. Fie ( ),G X U= un graf orientat. Numim lanŃ în G , o secvenŃă

de noduri [ ]0 1, ,..., rL x x x= cu proprietatea că pentru orice 0,1,..., 1i r= − avem

( )1,i ix x U+ ∈ sau ( )1,i ix x U+ ∈ (sau o succesiune de arce

1 2, ,..., pL u u u = astfel încât pentru orice 1,2,..., 1i p= − , arcele iu şi 1iu + au

o extremitate comună – nu se mai pune condiŃia ca arcele să aibă acelaşi sens, ca la drumuri).

□ ObservaŃie. Din definiŃie rezultă imediat că orice drum care este într-un

graf orientat este, în acelaşi timp, şi lanŃ în graful orientat respectiv. Exemplul 23. Conform observaŃiei de mai sus, cum ( )1,2,3,6,5d = din

exemplul 21 este un drum, [ ]1,2,3,6,5l = este şi lanŃ.

Tot în graful din exemplul 21 avem drept lanŃ succesiunea de vârfuri [ ]3,6,1, 2, 4l′ = deoarece în U avem arcele ( )3,6 , ( )1,6 , ( )1,2 şi ( )2,4 .

╬ DefiniŃie. 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, ,..., rd x x x= un drum de capete x şi y .

□ Exemplul 24. Drumul ( )1,2,3,6,5d = dat în exemplul 21 este un drum

care are extremitatea iniŃială 1 şi cea finală 5. Astfel vârful 5 este accesibil din vârful 1. Tot în graful din exemplul 21 avem că vârful 1 nu este accesibil din niciun alt vârf deoarece nu poate exista niciun drum cu extremitatea finală 1. Acest lucru este adevărat deoarece ( )1 0d− = (în 1 nu intra niciun arc).

Page 25: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

25

II. TIPURI PARTICULARE DE GRAFURI

DefiniŃie. Se numeşte multigraf un graf neorientat în care cel puŃin două

vârfuri sunt unite prin muchii multiple. □

Exemplul 1. Graful din imaginea de mai jos este un multigraf.

1

2

3

4

5

O problemă pentru multigrafuri este de specificare a muchiilor care, aşa

cum s-a văzut până acum, sunt mulŃimi de două elemente. Dacă va fi cazul, pentru muchiile multiple din multigrafuri vom folosi o indiciere în exteriorul mulŃimii care specifică muchia. Astfel, pentru multigraful de mai sus avem ( ),G X U= ,

unde { }1, 2,3,4,5X = şi

{ } { } { } { } { } { }{ }1 2 1 21, 2 , 2,3 , 2,3 , 3,4 , 3,4 , 3,5U =

╬ DefiniŃie. Graful orientat ( ),G X U= se numeşte reflexiv (nereflexiv,

simetric, antisimetric, total, tranzitiv) dacă şi numai dacă relaŃia binară U este relaŃie binară reflexivă (nereflexivă, simetrică, antisimetrică, totală, tranzitivă).

□ Exemplul 2. Să considerăm o mulŃime de 5 elemente { }1, 2,3,4,5X = şi

cazul unei relaŃii simetrice definite pe X , şi anume următoarea submulŃime a produsului cartezian X X× :

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1, 2 , 1,4 , 2,1 , 2,3 , 3, 2 , 4,1 , 4,5 , 5, 4U =

Se poate observa că pentru orice ,x y X∈ avem că ( ),x y U∈ dacă şi

numai dacă ( ),y x U∈ de unde rezultă că U defineşte o relaŃie simetrică.

Page 26: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

26

Pe de altă parte dacă considerăm graful ( ),G X U= , cu X şi U definite

ca mai sus, atunci spunem că graful G este simetric. Graful are imaginea:

1

2

3 4

5

DefiniŃie. 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.

□ Observăc că la toate grafurile de mai sus am folosit o numerotare a

vârfurilor. Numerele folosite pot fi considerate etichete pentru vârfuri şi astfel grafurile pot fi considerate drept grafuri etichetate.

DefiniŃie. Fie ( ),G X U= un graf orientat. G se numeşte graf orientat

marcat sau reŃea dacă fiecărui u U∈ i se asociază o marcă um . În acest caz,

U X M X⊂ × × , M fiind mulŃimea mărcilor asociate arcelor. Dacă

( ), ,x m y X M X∈ × × , atunci arcul x y→ se marchează cu m şi se reprezintă

prin mx y→ . □

Exemplul 3. Considerăm dată mulŃimea { }1,2,3, 4,5,6X = şi mulŃimea

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1,3 , 1,6 , 2,4 , 2,5 , 3, 2 , 3,6 , 4,1 , 4,5 , 5,6 , 6, 2U =

Am definit astfel graful orientat ( ),G X U= a cărui imagine este

1

2

3

4

5

6

Page 27: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

27

Considerăm acum că fiecărei muchii îi asociem o literă. Putem considera că { }, , , , , , , , ,M a b c d e f g h i j= şi că U X M X⊂ × × este mulŃimea

( ) ( ) ( ) ( ) ( ) ( ) ( ){( ) ( ) ( )}1, ,3 , 1, ,6 , 2, , 4 , 2, ,5 , 3, , 2 , 3, ,6 , 4, ,1 ,

4, ,5 , 5, ,6 , 6, , 2

U a j b i c h d

g e f

=

şi astfel se obŃine un graf orientat marcat pentru care avem reprezentarea

1

2

3

4

5

6

j a

b i

c h

d g

f

e

DefiniŃie. Numim reŃea etichetată un graf orientat marcat şi etichetat. □

De fapt, graful din exemplul anterior, având vârfurile numerotate şi muchiile marcate, poate fi considerat şi un exemplu de reŃea etichetată.

2.1. Grafuri conexe

DefiniŃie. Graful neorientat ( ),G X U= se numeşte conex dacă şi numai

dacă oricare ar fi două noduri ,x y X∈ , x y≠ , există cel puŃin un lanŃ în G ,

( )0 1, ,..., rL x x x= de extremităŃi x şi y .

□ DefiniŃie. Fie ( ),G X U= un graf neorientat. Numim componenta

conexă a lui G , un subgraf conex ( ),C Y V= al său, şi pentru orice x Y∈ ,

subgraful obŃinut, luând mulŃimea de vârfuri { }\Y x , nu este conex (subgraful C

este maximal în raport cu proprietatea de conexitate). □

Exemplul 4. Considerăm graful neorientat ( ),G X U= , unde

{ }1,2,3, 4,5,6,7X = şi

{ } { } { } { } { } { }{ }1,2 . 1,3 , 2,3 , 4,5 , 5,1 , 6,7U =

Se poate observa că mulŃimea de vârfuri se poate partaja în două submulŃimi între care nu există nicio muchie şi anume { }1 1,2,3, 4,5X = şi

Page 28: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

28

{ }2 6,7X = . În urma acestei partiŃii se produce şi o partiŃie a mulŃimii de muchii

în { } { } { } { } { }{ }1 1, 2 . 1,3 , 2,3 , 4,5 , 5,1U =

şi { }{ }2 6,7U = .

Deoarece nu există muchii între elementele lui 1X şi 2X , înseamnă că nu

pot exista lanŃuri între 1x X∈ şi 2y X∈ şi de aici rezultă că G nu este un graf

conex. Subgrafurile ( )1 1 1,G X U= şi ( )2 2 2,G X U= sunt grafuri conexe şi astfel

reprezintă componentele conexe ale grafului G . Imaginea grafului G este:

1

2

3

4

5

6 7

G1

G2

Fie ( ),G X U= un graf neorientat. Pentru ,x y X∈ spunem că x este

conectat cu y dacă există un lanŃ ce le uneşte, adică există un lanŃ

( )0 1, ,..., rL x x x= de extremităŃi x şi y

Pe mulŃimea X definim relaŃia binară ~ X X⊂ × , dată prin ~x y dacă şi numai dacă ( x y= sau x este conectat cu y ).

PropoziŃia 1. RelaŃia " ~ " definită mai sus este o relaŃie de echivaleŃă DemonstraŃie.

• reflexivitate – pentru orice x X∈ deoarece x x= , rezultă că ~x x . • antisimetrie – considerăm că ~x y şi ~y x . Din ~x y avem x y= sau

x este conectat cu y , adică există un lanŃ ( )0 1, ,..., rL x x x= de

extremităŃi x şi y .

Putem presupune că lanŃul este elementar şi că 0x x= şi ry x= . Din ~y x avem x y= sau y este conectat cu x , adică există un lanŃ

( )0 1, ,..., qL y y y′ = de extremităŃi y şi x .

Page 29: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

29

Putem presupune că lanŃul este elementar şi că 0y y= şi qx y= .

Presupunem că avem x y≠ . Atunci rezultă că relaŃiile au loc doar prin conectare. Fie astfel lanŃul format din concatenarea lanŃurilor L şi L′ şi astfel x este conectat cu x de unde x x≠ . ContradicŃie.

• tranzitivitate – deoarece ~x y avem x y= sau x este conectat cu y ,

adică există un lanŃ ( )0 1, ,..., rL x x x= de extremităŃi x şi y . Dacă

x y= , rezultă că în ~y z putem înlocui y cu x şi rezultă ~x z . Deoarece ~y z avem y z= sau y este conectat cu z , adică există un

lanŃ ( )0 1, ,..., qL y y y′ = de extremităŃi y şi z .

Dacă y z= , atunci în afirmaŃia „există un lanŃ ( )0 1, ,..., rL x x x= de

extremităŃi x şi y ” putem înlocui y cu z şi rezultă „există un lanŃ

( )0 1, ,..., rL x x x= de extremităŃi x şi z ” astfel că rezultă ~x z .

Dacă nu are loc relaŃia y z= , fie lanŃul

( )0 1 0 1, ,..., , ,...,r qL x x x y y y′′ = = obŃinut prin concatenarea lanŃurilor L

şi L′ . Atunci lanŃul L′′ este de extremităŃi x şi z şi astfel avem că x este conectat cu z , deci ~x z .

□ PropoziŃia 2. Fie ( ),G X U= un graf în care X n= , U m= şi 2n ≥ .

Dacă G este conex, atunci 1m n≥ − . DemonstraŃie. Pentru 2n = , deoarece G este conex rezultă că între cele două vârfuri există o muchie între ele şi astfel 1m ≥ . Presupunem că relaŃia este adevărată pentru un graf cu X n= vârfuri. Fie

( ),H Y V= un graf pentru care 1Y n= + şi fie V m= . Considerăm z Y∈ şi

subgraful ( ),G X U= unde { }\X Y z= , deci putem scrie că

1 1 1X Y n n= − = + − = . Putem alege z astfel încât G să fie conex.

Deoarece H este conex, rezultă că există x X∈ astfel încât { },z x V∈ ,

deci 1m V U= ≥ + .

Pentru G conex, din ipoteza de inducŃie rezultă 1 1U X n≥ − = − .

Înlocuind în relaŃia de mai sus obŃinem 1 1 1m V U n n= ≥ + ≥ − + = .

Datorită principiului inducŃiei complete, din cele de mai sus rezultă că relaŃia din enunŃ este adevărată pentru orice graf conex G .

Page 30: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

30

Considerând graful din exemplul 4 în care 7X = şi 6U = , deci nu are

loc relaŃia 1m n≥ − , ceea ce, reprezentând o negare a propoziŃiei 2, implică faptul că graful G nu este unul conex, ceea ce este adevărat conform exemplului considerat.

NoŃiunea de graf conex este valabilă şi pentru grafurile orientate. DefiniŃia este următoarea: DefiniŃie. Graful orientat ( ),G X U= se numeşte conex dacă şi numai

dacă oricare ar fi două noduri ,x y X∈ , x y≠ , există cel puŃin un lanŃ în G ,

( )0 1, ,..., rL x x x= de extremităŃi x şi y .

□ Dacă în definiŃia grafului conex pentru grafuri orientate înlocuim condiŃia de existenŃă a unui lanŃ cu cea de existenŃă a unui drum se obnŃine următoarea noŃiune. DefiniŃie. Graful orientat ( ),G X U= se numeşte tare conex dacă şi

numai dacă oricare ar fi două noduri ,x y X∈ , x y≠ , există cel puŃin un drum în

G , ( )0 1, ,..., rd x x x x y= = = de extremităŃi x şi y .

□ Exemplul 5. Considerăm un graf orientat ( ),G X U= , unde

{ }1, 2,3,4,5X = şi

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1, 2 , 1,3 , 2,3 , 2, 4 , 2,5 , 3, 4 , 4,1 , 5,1 , 5,3 , 5,4U =

Putem vedea că există un lanŃ:

( ) ( ) ( ) ( ) [ ]1, 2 , 2,3 , 3, 4 , 5,4 1, 2,3,4,5L = =

care conŃine toate vârfurile şi astfel se poate ajunge între oricare două vârfuri prin lanŃuri. Astfel, rezultă că graful orientat G este conex. Să considerăm vârful 1. Putem forma următoarele drumuri cu extremitatea iniŃială 1: ( )1,1 1, 2, 4,1D = , ( )1,2 1,2D = , ( )1,3 1, 2,3D = , ( )1,4 1,2,4D = şi

( )1,5 1, 2,5D = .

Pentru vârful 2, considerat ca extremitate iniŃială se formează: ( )2,1 2, 4,1D = , ( )2,2 2, 4,1, 2D = , ( )2,3 2,3D = , ( )2,4 2, 4D = , ( )2,5 2,5D = .

Similar, pentru vârful 3 avem: ( )3,1 3,4,1D = , ( )3,2 3, 4,1, 2D = ,

( )3,3 3,4,1,2,3D = , ( )3,4 3,4D = , ( )3,5 3,4,1,2,5D = .

Pentru vârful 4 putem construi: ( )4,1 4,1D = , ( )4,2 4,1, 2D = ,

( )4,3 4,1,3D = , ( )4,4 4,1, 2, 4D = , ( )4,5 4,1,2,5D = .

Page 31: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

31

În fine, folosind ca extremitate iniŃială vârful 5 construim drumurile: ( )5,1 5,1D = , ( )5,2 5,1,2D = , ( )5,3 5,3D = , ( )5,4 5,4D = , ( )5,5 5,1,2,5D = .

Am arătat astfel că din orice x X∈ se poate ajunge printr-un drum la orice y X∈ şi astfel, graful G este tare conex.

Imaginea grafului este

1

4

3 2 5

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ă considerăm întâi problema determinării conexităŃii unui graf neorientat

( ),G X U= .

Algoritm 1. 1. Se consideră Y X= , V U= şi se alege orice x X∈ pentru care

considerăm { }B x= .

2. Dacă B =∅ , atunci algoritmul se termină generând un răspuns astfel: a. Dacă V =∅ , atunci graful este conex b. Dacă V ≠ ∅ , atunci graful nu este conex (în plus se poate spune

că mulŃimea \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 încât { },y z V∈ considerăm { }B B z= ∪

şi { }{ }\ ,V V y z=

5. Considerăm { }\B B y= şi reluăm de la 2.

Page 32: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

32

Exemplul 6. Se consideră graful din următoarea figură.

1

2

3

4

5

6 7

Folosind algoritmul 1 să determinăm dacă graful considerat este sau nu conex Din pasul 1 al algoritmului se fac iniŃializările { }1, 2,3,4,5,6,7Y X= =

şi { } { } { } { } { } { } { }{ }1, 2 , 1,3 , 1,5 , 1,6 , 2,3 , 4,5 , 6,7V U= = .

Alegem vârful 6 şi considerăm { }6B = .

Deoarece B ≠ ∅ se realizează o primă aplicare a paşilor 3, 4 şi 5 cu alegerea 6 B∈ , rezultând { }1,7B = şi { } { } { } { } { }{ }1, 2 , 1,3 , 1,5 , 2,3 , 4,5V = .

În continuare B ≠ ∅ , la a doua aplicare, cu alegerea 7 B∈ nu există muchii cu extremitatea 7 şi astfel nu se modifică decât B care devine { }1B =

Pentru a treia aplicare nu putem face decât alegerea 1 B∈ pentru care va rezulta { }2,3,5B = şi { } { }{ }2,3 , 4,5V = .

Putem continua cu alegerea 3 B∈ pentru care nu avem în V muchii între 3 şi vârfurile din mulŃimea { }1,4,6,7 şi astfel se ajunge la { }2,5B = cu V

nemodificat. A cincea aplicare se poate face cu alegerea 5 B∈ pentru care efectul este

{ }2, 4B = şi { }{ }2,3V = .

În continuare, selectând 2 B∈ vom obŃine { }3, 4B = şi V =∅ .

Următoarele aplicaŃii, două la număr sunt în aceeaşi situaŃie ca la a doua aplicare a algoritmului şi se produc eliminările celor două elemente din B care ajunge mulŃime vidă. Cum avem şi V =∅ , suntem în cazul (a) al răspunsului, deci graful considerat este unul conex.

╬ Aşa cum se vede din pasul 2, algoritmul prezentat dă răspunsul la

întrebarea „Este G un graf conex?”.

Page 33: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

33

De asemenea, se poate determina componenta conexă a grafului G din care face parte un anumit nod specificat. Acest lucru crează premizele realizării algoritmului de determinare a componentelor conexe, plecând de la algoritmul 1.

Algoritm 2. 1. Se consideră Y X= , V U= 0k = . 2. Dacă V =∅ , atunci algoritmul se termină şi componentele conexe ale

grafului G sunt 1A , 2A , ..., kA . Vârfurile care nu sunt în 1

k

ki

A=∪ sunt

vârfuri izolate şi formează fiecare în parte câte o componentă conexă a grafului G (în plus valoarea pentru k arată dacă graful G este sau nu

conex. Astfel pentru 1k = şi 1A X= graful este conex, altfel G nu este

conex). 3. Alegem orice x Y∈ . Fie 1k k= + , kA =∅ , { }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 încât { },y z V∈ considerăm { }B B z= ∪

şi { }{ }\ ,V V y z= .

7. Considerăm { }\B B y= , { }k kA A y= ∪ . Se trece la 4.

8. Se elimină din V orice muchie { },a b pentru care , ka b A∈ . Se trece la

2. ■

Exemplul 7. Considerăm graful de la exemplul 4, deci cu imaginea

1

2

3

4

5

6 7

Să aplicăm algoritmul 2 pentru a determina componentele conexe ale acestui graf ( ),G X U= .

Pasul 1 realizează iniŃializările { }1, 2,3,4,5,6,7Y X= = , 0k = şi

{ } { } { } { } { } { }{ }1,2 , 1,3 , 1,5 , 2,3 , 4,5 , 6,7V U= =

şi cum V ≠ ∅ rezultă că se continuă cu pasul 3.

Page 34: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

34

Să alegem 5 Y∈ . Avem 1k = , { }5B = şi 1A =∅ şi deoarece B ≠ ∅ se

continuă cu paşii 5, 6 şi 7, în urma cărora se ajunge la { }1, 4B = , { }1 5A = şi

{ } { } { } { }{ }1, 2 , 1,3 , 2,3 , 6,7V =

Se continuă cu aceeaşi paşi deoarece din nou B ≠ ∅ , şi alegând în prima iteraŃie vârful 4 şi apoi vârful 1 obŃinem { }2,3B = , { }1 1, 4,5A = şi

{ } { }{ }2,3 , 6,7V = .

Din nou B ≠ ∅ şi după realizarea a încă trei iteraŃii cu ordinea de alegere 2, 3 şi 2 pentru vârfuri se ajunge la situaŃia B =∅ , { }1 1, 2,3,4,5A = şi

{ }{ }6,7V = . Deoarece nu sunt muchii între nodurile lui 1A din pasul 8 se trece la

pasul 2 care impune reluarea paşilor 3, 4, 5, 6, 7 deoarece V ≠ ∅ . Se consideră astfel 2k = şi 2A =∅

Prin următoarele două iteraŃii se ajunge în starea B =∅ , V =∅ ,

{ }2 6,7A = şi la revenirea la pasul 2 cu V =∅ algoritmul se opreşte.

Deoarece 1 2X A A= ∪ , rezultă că s-a format o partiŃie reprezentând

componentele conexe ale grafului G şi acestea sunt subgrafurile ( )1 1 1,G A U= şi

( )2 2 2,G A U= , unde { }{ }2 6,7U = şi

{ } { } { } { } { }{ }2 1,2 , 1,3 , 1,5 , 2,3 , 4,5U = .

2.2. Grafuri complementare şi izomorfe

DefiniŃie. Fie ( ),G X U= un graf neorientat, numim complementarul lui

G (graf complementar lui G ), graful ( ),G X UC C= , în care { },x y UC∈

dacă şi numai dacă { },x y U∉ .

□ DefiniŃie. Fie ( ),G X U= şi ( ),G X U′ ′ ′= două grafuri neorientate.

Spunem că G şi G′ sunt izomorfe, notăm G G′≅ , dacă există o funcŃie bijectivă

:f X X ′→ astfel încât { },x y U∈ dacă şi numai dacă ( ) ( ){ },f x f y U ′∈ .

□ Din definiŃie rezultă că două grafuri sunt izomorfe dacă au acelaşi număr de vârfuri şi se poate obŃine unul din celălalt printr-o renumerotare a vârfurilor. DefiniŃii similare celor de mai sus sunt valabile pentru grafurile orientate. Ele se obŃin înlocuind muchiile cu arce.

Page 35: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

35

Exemplul 8. Fie un graf neorientat ( ),G X U= cu

{ }1, 2,3,4,5X =

şi { } { } { } { } { }{ }1,2 , 1,3 , 1,4 , 2,5 , 4,5U = .

Cum 5U = şi numărul maxim de muchii este 10 rezultă că graful

complementar are 5 muchii şi astfel avem { } { } { } { } { }{ }1,5 , 2,3 , 2,4 , 3,4 , 3,5V UC= = ,

obŃinându-se graful ( ),G X UC C= .

Grafurile din acest exemplu au următoarele imagini:

1

2 3

4

5

1

2 3

4

5

( ),G X U= ( ),G X UC C=

╬ Exemplul 9. Fie un graf orientat ( ),G X U= cu

{ }1, 2,3,4,5X =

şi ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1, 2 , 1,3 , 1, 4 , 2, 4 , 2,5 , 3, 2 , 3,5 , 4,2 , 4,5 , 5,1 , 5,3U = .

Deoarece numărul total de muchii posibile într-un graf orientat este egal cu aranjamente de numărul de vârfuri luate câte două, deci 20, şi 11U = , rezultă că

în graful complementar avem 9 arce şi astfel ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1,5 , 2,1 , 2,3 , 3,1 , 3,4 , 4,1 , 4,3 , 5, 2 , 5,4UC = .

În acest mod se obŃine graful ( ),G X UC C= .

Grafurile orientate din acest exemplu au următoarele reprezentări:

Page 36: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

36

1

2 3

4

5

1

2 3

4

5

( ),G X U= ( ),G X UC C=

╬ PropoziŃia 3. Fie ( ),G X U= şi ( ),G X U′ ′ ′= două grafuri orientate.

Atunci G G′≅ dacă şi numai dacă G GC C ′≅ . DemonstraŃie. Verificarea concluziei propoziŃiei este imediată folosind definiŃiile date pentru izomorfismul de grafuri şi pentru graful complementar. De exemplu, să considerăm implicaŃia ⇒ . Avem că G G′≅ şi fie :f X X ′→ izomorfismul de la G la G′ . Astfel

f este o funcŃie bijectivă pentru care are loc enunŃul { },x y U∈ dacă şi numai

dacă ( ) ( ){ },f x f y U ′∈ .

Fie { },x y UC∈ . Rezultă, conform definiŃiei grafurilor complementare, că

{ },x y U∉ . Din G G′≅ , se ajunge la ( ) ( ){ },f x f y G′∉ de unde obŃinem

( ) ( ){ },f x f y GC ′∈ . De aici obŃinem că f este şi izomorfism de la GC la

GC ′ , deci G GC C ′≅ . □

Exemplul 10. Se consideră grafurile G din exemplul 8 şi graful

( ),H Y V= , unde

{ } { } { } { } { }{ }1, 2 , 1,3 , 2,4 , 2,5 , 3,4V =

Considerăm funcŃie :f X Y→ , dată prin tabelul x 1 2 3 4 5

( )f x 2 4 5 1 3

Ca funcŃie definită pe mulŃimi finite cu acelaşi număr de elemente şi pentru care observăm că este injectivă, rezultă că f este o funcŃie bijectivă Se poate

observa, de asemenea, că ( ),x y U∈ dacă şi numai dacă ( ) ( )( ),f x f y V∈ şi

astfel f este un izomorfism de la G la H . Astfel avem G H≅ . Grafurile au următoarea reprezentare:

Page 37: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

37

1

2 3

4

5

2

4 5

1

3

( ),G X U= ( ),H Y V=

2.3. Grafuri ciclice

DefiniŃie. Fie ( ),G X U= un graf neorientat. Numim ciclu în G un lanŃ

[ ]0 1, ,..., rL x x x= în care 0 rx x= (în care extremităŃile coincid).

□ DefiniŃie. Fie ( ),G X U= un graf neorientat şi [ ]0 1, ,..., rL x x x= un

ciclu. Spunem că L este ciclu elementar dacă pentru orice 0 , 1i j r≤ ≤ − , i j≠ ,

avem i jx x≠ (toate vârfurile sale, exceptând extremităŃile, sunt distincte două

câte două) . □

DefiniŃie. Fie ( ),G X U= un graf neorientat şi [ ]0 1, ,..., rL x x x= un

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

avem { } { }1 1, ,i i j jx x x x+ +≠ (toate muchiile sale sunt distincte două câte două).

□ Exemplul 11. Fie un graf neorientat ( ),G X U= , unde

{ }1,2,3, 4,5,6X = şi

{ } { } { } { } { } { } { } { }{ }1,2 , 1,3 , 1,5 , 1,6 , 2,3 , 3,4 , 4,5 , 4,6U = .

Pentru acest graf putem da ca exemplu de ciclu lanŃul închis [ ]1 1,2,3,1,5,4,6,1L =

Acest ciclu poate fi scris şi ca o succesiune de muchii prin

{ } { } { } { } { } { } { }1 1, 2 , 2,3 , 3,1 , 1,5 , 5,4 , 4,6 , 6,1L =

Din scrierea ciclului prin vârfuri se poate vedea că ciclul trece de două ori prin vârful 1 şi astfel nu este un ciclu elementar.

Page 38: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

38

Din scrierea ciclului prin muchiile prin care trece se vede că fiecare muchie apare o singură dată şi astfel ciclul este un ciclu simplu.

Un exemplu de ciclu elementar este [ ]2 1,2,3, 4,6,1L = , în care, cu

excepŃia extremităŃilor, se trece o singură dată prin fiecare vârf Acest graf are reprezentarea

1

2

3

4

5

6

În reprezentarea de mai sus am îngroşat muchiile care formează ciclul elementar 2L .

╬ DefiniŃiile de mai sus continuă să fie valabile şi pentru grafurile orientate.

Suplimentar intervin definiŃiile care urmează. DefiniŃie. Fie ( ),G X U= un graf orientat. Numim circuit în G un drum

( )0 1, ,..., rC x x x= în care 0 rx x= (în care extremităŃile coincid).

□ DefiniŃie. Fie ( ),G X U= un graf orientat şi ( )0 1, ,..., rC x x x= un

circuit. Spunem că C este circuit elementar dacă pentru orice 0 , 1i j r≤ ≤ − ,

i j≠ , avem i jx x≠ (toate vârfurile sale, exceptând extremităŃile, sunt distincte

două câte două) . □

DefiniŃie. Fie ( ),G X U= un graf orientat şi ( )0 1, ,..., rC x x x= un ciclu.

Spunem că C este circuit simplu daca pentru orice 0 , 1i j r≤ ≤ − , i j≠ , avem

( ) ( )1 1, ,i i j jx x x x+ +≠ (toate arcele sale sunt distincte două câte două).

Page 39: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

39

Exemplul 12. Considerăm graful orientat ( ),G X U= , unde

{ }1,2,3, 4,5,6X = şi

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1, 2 , 1,5 , 2,3 , 3,1 , 4,3 , 4,6 , 5, 4 , 6,1U = .

Graful considerat, anulând orientarea arcelor, conduce la graful neorientat din exemplul 11 şi astfel, în graful considerat, [ ]1 1,2,3,1,5,4,6,1L = este un ciclu

simplu, în timp ce [ ]2 1,2,3, 4,6,1L = este un ciclu elementar. Scrierea ciclului 1L

prin arce este

( ) ( ) ( ) ( ) ( ) ( ) ( )1 1, 2 , 2,3 , 3,1 , 1,5 , 5,4 , 4,6 , 6,1L = .

Din această scriere se observă că în ciclul 1L toate arcele sunt în sensul de

la extremitatea stângă la cea dreaptă şi astfel 1L este şi un circuit în G . Deoarece

în 1L fiecare arc intervine o singură dată, rezultă că 1L este un circuit simplu. Putem astfel scrie

( )1 1, 2,3,1,5, 4,6,1L =

sau ( ) ( ) ( ) ( ) ( ) ( ) ( )( )1 1, 2 , 2,3 , 3,1 , 1,5 , 5, 4 , 4,6 , 6,1L = .

Considerăm în G lanŃul ( )3 1,5,4,3,1L = care este un ciclu elementar

deoarece trece o singură dată prin fiecare vârf şi, în plus, având arcele în sensul scrierii lanŃului, este şi drum. Astfel, 3L este un circuit elementar în G . Graful considerat are reprezentarea:

1

2

3

4

5

6

şi în aceasta am îngroşat arcele ce formează circuitul 3L .

Page 40: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

40

DefiniŃie. Graful neorientat ( ),G X U= se numeşte ciclic dacă G

conŃine cel puŃin un ciclu şi se numeşte aciclic în caz contrar. □

`Exemplul 13. Graful neorientat din exemplul 11 este un graf neorientat ciclic deoarece conŃine cel puŃin un ciclu (de fapt, am dat exemplu de două cicluri în graful considerat).

╬ DefiniŃie. Fie ( ),G X U= un graf orientat. Spunem că G este aciclic

dacă G nu conŃine niciun circuit şi ciclic în caz contrar. □

Exemplul 14. Considerăm graful dat în exemplul 12. Deoarece în acest graf orientat am detectat circuitul 3L , astfel graful este un graf orientat ciclic.

╬ PropoziŃia 4. Fie ( ),G X U= un graf neorientat. Dacă U X≥ , atunci

G este ciclic. DemonstraŃie. Fie X n= , U m= , deci m n≥ .

Dacă G nu este conex, fie 1G , 2G , ..., kG . Dacă există un ciclu L în G ,

atunci există 1 k r≤ ≤ astfel încât L este ciclu în xG , deoarece în caz contrar ar exista o muchie între două componente conexe şi astfel cele două componente conexe coincid. Putem presupune că L este ciclu în 1G şi că pentru orice

2 i r≤ ≤ , iG nu conŃine cicluri şi astfel numărul de muchii din componenta

conexă iG este mai mic decât numărul de vârfuri din iG . Prin sumare şi deoarece m n≥ rezultă că numărul de muchii din componenta conexă 1G trebuie să fie mai mare decât numărul de vârfuri din

componentă. Astfel, putem presupune că G este conex. Conform propoziŃiei 2, G conex implică 1m n≥ − . Dacă m n≥ presupunem că G nu este ciclic. G fiind conex rezultă că pentru orice ,x y X∈ există doar un drum elementar de la capete x şi y . Atunci, prin eliminarea unei muchii, graful obŃinut nu mai este conex şi astfel obŃinem un graf neconex pentru

1m n= − . ContradicŃie.

Considerăm acum că 1m n= − şi graful este ciclic. Fie [ ]0 1, ,..., rC x x x=

un ciclu în G . Atunci putem elimina una din muchiile adiacente cu 0x pentru a

obŃine drumul [ ]1,..., rC x x= sau [ ]0 1 1, ,..., rC x x x −= şi astfel să se păstreze

conexitatea. Rezultă astfel un graf conex pentru care 2m n≥ − . ContradicŃie. □

Page 41: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

41

DefiniŃie. Fie ( ),G X U= un graf neorientat având 1k ≥ componente

conexe. Se numeşte punte în G o muchie m U∈ pentru care graful parŃial

{ }( ), \G X U m′ = are numărul de componente conexe mai mare decât k .

□ Exemplul 15. Considerăm graful neorientat ( ),G X U= , unde

{ }1,2,3, 4,5,6,7X = şi

{ } { } { } { } { } { } { } { } { }{ }1,2 , 1,3 . 2,3 , 2,4 , 3, 4 , 3,5 , 5,6 , 5,7 , 6,7U =

G are reprezentarea:

1

2

3 4

5 6

7

Şi din reprezentarea grafului se observă că prin eliminarea muchiei { }3,5

conduce la apariŃia componentelor conexe { }1 1,2,3,4C = şi { }2 5,6,7C = , deci

două componente conexe. Deoarece graful G este unul conex, numărul componentelor conexe iniŃiale este 1. Deoarece eliminarea muchiei { }3,5 produce creşterea numărului de

componente conexe, rezultă că muchia { }3,5 este o punte.

╬ PropoziŃia 5. Fie ( ),G X U= un graful neorientat şi m U∈ . m este

punte, dacă şi numai dacă oricare ar fi ciclul [ ]1 2, ,..., rC m m m= în G dat prin

muchiile sale, im m≠ pentru orice 1 i r≤ ≤ .

Page 42: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

42

DemonstraŃie ⇒

Considerăm că m este punte şi că numărul de componente conexe este egal cu 1. Acest lucru nu reduce generalitatea, deoarece raŃionamentul care urmează este valabil doar în componenta conexă care conŃine muchia m .

Presupunem că există un ciclu [ ]1 2, ,..., rC m m m= în G dat prin muchiile

sale astfel încât există i , 1 i r≤ ≤ , pentru care im m= .

Fie ,x y G∈ . G fiind conex rezultă că există un lanŃ 1 2, ,..., pL e e e =

în G , dat prin muchiile sale, de extremităŃi x şi y. Dacă pentru orice 1, 2,...,j p= , jm e≠ , atunci L este lanŃ şi în graful

{ }( ), \G X U m′ = ., deci eliminarea muchiei nu întrerupe conectarea dintre x şi y.

Dacă există j , 1 j p≤ ≤ , considerăm

lanŃul 1 1 1 1 1 1,..., , ,..., , ,..., , ,j i r i j pL e e m m m m e e− + − +′ = care are extremităŃile x şi y

şi nu conŃine muchia m şi astfel este lanŃ în graful { }( ), \G X U m′ = .

Din cele de mai sus rezultă că graful { }( ), \G X U m′ = este conex şi

astfel m nu este punte. ContradicŃie.

⇐ Putem presupune, fără a reduce generalitatea, că G este un graf conex. Altfel, eliminarea unei muchii afectează eventual doar componenta conexă în care muchia se găseşte, celelalte componente conexe rămânând neschimbate, deci şi numărul lor. Astfel, dacă G nu este conex, putem reduce raŃionamentul la subgraful lui G corespunzător componentei conexe în care există muchia m .

Presupunem că oricare ar fi un ciclu 1 2, ,..., pC m m m = , avem im m≠

pentru orice 1 i p≤ ≤ . Atunci, prin eliminarea muchiei m , toate aceste cicluri rămân valabile.

Dacă presupunem că m uneşte două cicluri, atunci prin eliminare cele două cicluri devin separate, deci pot intra în două componente conexe diferte.

Dacă m uneşte un vârf de un ciclu, prin eliminare vârful şi ciclul devin separate, deci pot intra în două componente conexe diferite.

Dacă m se găseşte pe un lanŃ care nu face parte dintr-un ciclu, prin eliminare se obŃin două componente separate şi deci posibil din două componente conexe.

Astfel, eliminarea lui m produce apariŃia a două componente conexe în G , de unde, conform definiŃiei, m este punte.

Page 43: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

43

PropoziŃia 6. Fie ( ),G X U= un graf orientat. G este tare conex dacă şi

numai dacă există un circuit C care conŃine toate vârfurile grafului. DemonstraŃie ⇒

Conform definiŃiei, dacă G este conex, atunci pentru orice 1 2,x x X∈

există un drum 1,2d care să aibă extremitatea iniŃială 1x şi extremitatea finală 2x .

Din acelaşi motiv există un drum 2,1d care să aibă extremitatea iniŃială 2x şi

extremitatea finală 1x . Putem forma astfel un circuit ( )1 1,2 2,1,C d d= .

Dacă 1C conŃine toate vârfurile din G , atunci 1C C= este circuitul căutat.

Presupunând că 1C nu conŃine toate vârfurile grafului G , fără a reduce

generalitatea, considerăm că celelalte vârfuri sunt cuprinse în circuitul 2C .

Fie 3x un vârf care se găseşte pe circiutul 2C . Deoarece G este tare

conex, rezultă că există un drum 3d de la 1x la 3x şi există un drum 4d de la 3x

la 1x .

Considerând 2C scris ca drum de la 3x la 3x , formăm astfel un circuit nou

( )1,2 2,1 3 2 4, , , ,C d d d C d= care este un circuit ce conŃine toate vârfurile lui G .

⇐ Presupunând că în G există un circuit C care conŃine toate vârfurile, atunci pentru orice ,x y X∈ există un drum d C⊂ care să fie de extremităŃi x şi y , deci G este tare conex.

□ DefiniŃie. Fie ( ),G X U= un graf orientat. Definim

( ) ( ){ }, circuit in cu ,V x y U C G x y C= ∈ ∃ ∈ . Graful parŃial ( ),H X V= se

numeşte graful orientat ciclu al lui G . □

Exemplul 16. Se consideră un graf orientat ( ),G X U= cu

{ }1,2,3, 4,5,6,7X =

şi ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1, 2 , 2,4 , 3,1 , 3, 2 , 3,5 , 5,6 , 6,7 , 7,5U =

Page 44: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

44

Graful considerat are reprezentarea

1

2

3 4

5 6

7

În graful G putem identifica circuitele ( )1 2, 4,3,2C = , ( )2 1, 2, 4,3,1C =

şi ( )3 5,6,7,5C = . Considerând arcele din aceste circuite şi mulŃimea U se vede

că există muchia ( )3,5 care nu face parte din niciun circuit din G . Putem

considera astfel graful parŃial ( ),G X V′ = în care

( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1,2 , 2, 4 , 3,1 , 3,2 , 5,6 , 6,7 , 7,5V =

Graful G′ este graful orientat ciclu al grafului G şi are reprezentarea

1

2

3 4

5 6

7

PropoziŃia 7. Fie ( ),G X U= un graf 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 .

Page 45: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

45

DemonstraŃie ⇒

Folosind propoziŃia 6, dacă G′ este componentă tare conexă a lui G atunci există un circuit C care conŃine toate vârfurile din Y şi orice \x X Y∈ nu se formează circuite cu x şi vârfuri din Y . Astfel, W V⊂ şi deci G′ este subgraf în H .

C conŃine toate vârfurile din Y şi este circuit maximal în H , de unde rezultă că G′ este componentă tare conexă a lui H .

⇒ Se repetă în sens invers raŃionamentul de mai sus.

□ DefiniŃie. Fie ( ),G X U= un graf orientat şi 1C , 2C , ..., tC

componentele tari conexe ale lui G . Fie

{ }1 2, ,..., tY C C C=

şi

( ) ( ){ }, , cu ,i j i jV C C x C y C x y U Y Y= ∃ ∈ ∃ ∈ ∈ ⊂ × .

Graful ( ),H Y V= se numeşte graful condensat al lui G .

□ ObservaŃie. Graful condensat al oricărui graf orientat este aciclic. Exemplul 17. Să considerăm din nou graful orientat din exemplul 16. Am văzut în exemplul 16 că există două circuite, ( )2 1, 2, 4,3,1C = şi ( )3 5,6,7,5C = ,

care sunt circuite care cuprind toate vârfurile din graful orientat ciclic. Astfel am obŃinut: graful G are două componente tare conexe, corespunzătoare celor două circuite. Deoarece în graful G există arcul ( )3,5 între vârful 3 care este în

componenta tare conexă 1C şi vârful 5 din componenta tare conexă 2C . Putem

constitui astfel mulŃimea { }1 2,Y C C= şi ( ){ }1 2,V C C= pentru a forma graful

orientat ( ),cG Y V= care este astfel graful orientat condensat a grafului G .

Reprezentarea grafului condensat este

C1 C2

Page 46: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

46

III. REPREZENTAREA GRAFURILOR

3.1. Reprezentare grafuri neorientate

Forma uzuală de reprezentare a grafurilor neorientate este prin asocierea unei valori logice pentru existenŃa sau nu a unei muchii între două noduri.

Astfel, dacă ( ),G X U= este un graf neorientat, atunci pentru orice

,x y X∈ , considerăm

( ){ }{ }

pentru ,1,

0 pentru ,

x y Um x y

x y U

∈=

∉.

DefiniŃie. Fie ( ),G X U= un graf neorientat cu X n= şi presupunem

că { }1 2, ,..., nX x x x= . Definim matricea ( ) { }( ), 1 ,0,1G i j ni j n

A a≤ ≤

= ∈M , definită

prin ( ),ij i ja m x x= . Matricea GA se numeşte matricea de adiacenŃă asociată

grafului G . □

ObservaŃie. Dacă ( ),G X U= este un graf neorientat şi GA este matricea

sa de adiacenŃă, atunci GA este simetrică, deoarece muchia { },i jx x este tot una cu

muchia { },j ix x .

ObservaŃie. Deoarece am presupus că pentru grafurile studiate nu avem bucle (muchii de forma { },x x ), matricea de adiacenŃa GA pentru orice graf

neorientat ( ),G X U= are diagonala principală formată doar cu valoarea zero.

Atunci când nu există posibilitatea de confuzie, vom nota GA prin A .

Exemplul 1. Fie ( ),G X U= un graf neorientat cu { }1,2,3,4,5X = şi

{ } { } { } { } { } { }{ }1,2 , 1, 4 , 2,3 , 2, 4 , 3,5 , 4,5U =

Să determinăm matricea de adiacenŃă a grafului. Graful are imaginea:

Page 47: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

47

1

2 3 4

5

Construim tabelul definiŃie elementelor ( ),m x y şi obŃinem:

y x

1 2 3 4 5

1 0 1 0 1 0 2 1 0 1 1 0 3 0 1 0 0 1 4 1 1 0 0 1 5 0 0 1 1 0

Matricea de adiacenŃa este astfel: 0 1 0 1 01 0 1 1 00 1 0 0 11 1 0 0 10 0 1 1 0

GA

=

╬ Dacă ( ),G X U= este un graf neorientat, atunci pentru orice ,x y X∈ ,

considerăm

( ) [ ]0 1ˆ1 , ,..., in

,0 altfel

rL x x x x y Gl x y

∃ = = ==

DefiniŃie. Fie ( ),G X U= un graf neorientat cu X n= şi presupunem

că { }1 2, ,..., nX x x x= . Definim matricea ( ) { }( )1 ,

0,1G ij ni j nL l

≤ ≤= ∈M , definită

prin ( ),ij i jl l x x= . Matricea GL se numeşte matricea lanŃurilor grafului G .

Page 48: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

48

ObservaŃie. Matricea lanŃurilor GL este o matrice simetrică deoarece dacă

există un lanŃ [ ]0 1, ,..., rL x x x x y= = = de la x la y , atunci există şi un lanŃ de la

y la x şi anume lanŃul [ ]1 0,..., ,rL y x x x x′ = = = care este chiar lanŃul

[ ]0 1, ,..., rL x x x x y= = = dar sub o altă scriere (cu nodurile scrise în ordine

inversă). Exemplul 2. Se consideră graful din exemplul 1 şi dorim să-i scriem matricea lanŃurilor. Pentru aceasta se observă că avem lanŃurile { }1,2 , { }1,2,3 ,

{ }1,4 , { }1,4,5 , { }2,3 , { }2,4 , { }2,3,5 , { }3,5, 4 , { }3,5 şi { }4,5 care

demonstrează că există lanŃuri între oricare două vârfuri ale grafului (graful este conex). Astfel, matricea lanŃurilor va fi

1 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 1

GL

=

╬ Definim următoarele operaŃii:

• Adunarea logică, { } { } { }: 0,1 0,1 0,1+ × → , definită prin a b a b+ = ∨ ,

pentru orice { }, 0,1a b∈ , unde ∨ este operaŃia uzuală de disjuncŃie logică (sau logic);

• ÎnmulŃirea logică { } { } { }: 0,1 0,1 0,1× →i , definită prin

ab a b a b= = ∧i , pentru orice { }, 0,1a b∈ , unde ∧ este operaŃia uzuală de conjuncŃie logică (şi logic).

Folosind aceste operaŃii drept operaŃii uzuale, A fiind o matrice cu valori booleene, are loc următorul rezultat. PropoziŃia 1. Fie ( ),G X U= un graf neorientat, A matricea sa de

adiacenŃă şi L matricea lanŃurilor lui G . Atunci are loc relaŃia: 1

1

nk

k

L A−

=

=∑

calculele fiind realizate folosind operaŃiile + şi i .

Page 49: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

49

DemonstraŃie. Să considerăm întâi că în G avem muchiile { },i jx x şi

{ },j kx x . Atunci în matricea A avem 1ij jia a= = şi 1jk kja a= = . În matricea

( )2

1 ,ij i j nA B b

≤ ≤= = avem

1 11

1 1n n n

ik is sk ij jk is sk is sks ss

s j s j

b a a a a a a a a= ==≠ ≠

= = + = + =∑ ∑ ∑i i i i

şi, de asemenea, avem un lanŃ de la ix la kx şi anume lanŃul , ,i j kx x x .

Similar se poate arăta că dacă în ( )1 ,

pij i j n

A B b≤ ≤

′ ′= = avem un lanŃ de la

ix la jx (deci 1ijb′ = ) şi în G avem muchia { },j kx x (deci 1jka = ) (ceea ce nu

produce un lanŃ de la ix la kx ), atunci în ( )1

1 ,

pij i j n

A B b+

≤ ≤′′ ′′= = avem 1ikb′′ = .

Folosind acum teorema inducŃiei complete rezultă că în

( )1

1 ,

nij i j j

A C c−

≤ ≤= = avem 1ijc = dacă şi numai dacă în G există un lanŃ de la

ix la jx şi astfel ij ijc l= . Acest lucru implică 1nL A −= .

□ Exemplul 3. Pentru graful ( ),G X U= din figura de mai jos, să calculăm

matricea lanŃurilor folosind formula din propoziŃia 1. Avem 5n X= =

1

2 3

4 5

Matricea de adiacenŃă a grafului este

0 0 1 0 10 0 0 1 01 0 0 0 10 1 0 0 01 0 1 0 0

A

=

Trebuie să calculăm 4L A= . Pentru 2A A A= i avem:

Page 50: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

50

2

0 0 1 0 1 0 0 1 0 1 1 0 1 0 10 0 0 1 0 0 0 0 1 0 0 1 0 0 01 0 0 0 1 1 0 0 0 1 1 0 1 0 10 1 0 0 0 0 1 0 0 0 0 0 0 1 01 0 1 0 0 1 0 1 0 0 1 0 1 0 1

A

= =

i ,

Pentru 3 2A A A= i avem

3

1 0 1 0 1 0 0 1 0 1 1 0 1 0 10 1 0 0 0 0 0 0 1 0 0 0 0 1 01 0 1 0 1 1 0 0 0 1 1 0 1 0 10 0 0 1 0 0 1 0 0 0 0 1 0 0 01 0 1 0 1 1 0 1 0 0 1 0 1 0 1

A

= =

i

şi 4 3A A A= i conduce la

4

1 0 1 0 1 0 0 1 0 1 1 0 1 0 10 0 0 1 0 0 0 0 1 0 0 1 0 0 01 0 1 0 1 1 0 0 0 1 1 0 1 0 10 1 0 0 0 0 1 0 0 0 0 0 0 1 01 0 1 0 1 1 0 1 0 0 1 0 1 0 1

A

= =

i

Adunând cele 4 matrici avem 1 0 1 0 10 1 0 1 01 0 1 0 10 1 0 1 01 0 1 0 1

L

=

╬ PropoziŃia 2. Fie ( ),G X U= un graf neorientat şi L matricea lanŃurilor

sale. Graful G este conex dacă şi numai dacă 1ijl = , pentru orice 1 ,i j n≤ ≤ .

DemonstraŃie. G este conex dacă şi numai dacă pentru orice ,i jx x X∈

există un lanŃ de la ix la jx , dacă şi numai dacă 1ijl = , pentru orice 1 ,i j n≤ ≤ .

□ ObservaŃie. Dacă ( ),G X U= este un graf neorientat neconex, având k

componente conexe, atunci putem face o partiŃie a lui X bazată pe componentele conexe, 1 2 ... kX X X X= ∪ ∪ ∪ , i jX X = ∅∩ pentru orice 1 ,i j k≤ ≤ , i j≠ ,

Page 51: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

51

cu proprietatea că fiecare iX reprezintă nodurile unei componente conexe a lui G . În plus, există o permutare a nodurilor din X astfel încât indicii nodurilor dintr-o componentă conexă să fie consecutivi. DefiniŃie. Fie A o matrice pătrată de ordin n . Dacă

1

2

0 0

0 0

0 0

i

i

ik

B

BA

B

=

⋮ ⋮ ⋱ ⋮

unde 0 reprezintă matrici cu toate elementele egale cu zero, jB este o matrice

pătrată de ordin j cu o proprietate dată şi 1 2 ... ki i i n+ + + = , spunem că A este matrice bloc diagonală.

□ PropoziŃia 3. Există o permutare a numerotării nodurilor unui graf neorientat ( ),G X U= astfel încât matricea lanŃurilor să fie de formă bloc

diagonală cu blocurile formate doar cu valoarea 1. Blocurile diagonale corespund componentelor conexe ale grafului. DemonstraŃie. Este suficient să arătăm că propoziŃia are loc pentru un graf neconex cu două componente conexe, deoarece pentru un graf conex se foloseşte propoziŃia 2 pentru a scrie nL B= , cu X n= şi nB are toate elementele egale

cu 1. Datorită observaŃiei făcute mai sus, există o permutare a numerotării

indicilor astfel încât { }1 1 1,..., iX x x= , { }2 11 2

,...,i iX x x+= cu 1 2i i n+ = şi

1 2X X X= ∪ , 1 2X X = ∅∩ şi subgrafurile de noduri { }1 1 1,..., iX x x= şi

{ }2 11 2,...,i iX x x+= corespund componentelor conexe ale lui G .

Deoarece subgraful ( )1 1 1,G X V= corespunzător lui 1X este conex, avem

1 1G iL B= . Similar, pentru subgraful ( )2 2 2,G X V= avem 2 2G iL B= . Cum nu

există muchii între nodurile din 1X şi nodurile din 2X , rezultă că 0ijl = pentru

orice 11 i i≤ ≤ şi orice 1 21i j i+ ≤ ≤ . Astfel obŃinem

1

2

0

0i

Gi

BL

B

=

.

Page 52: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

52

Exemplul 4. Considerăm graful ( ),G X U= din exemplul 3 pentru care

am calculat matricea lanŃurilor: 1 0 1 0 10 1 0 1 01 0 1 0 10 1 0 1 01 0 1 0 1

GL

=

Cel mai simplu mod de a determina permutarea σ care aplicată lui X să conducă la un graf pentru care matricea lanŃurilor să fie în format matrice bloc diagonală este de a realiza o renumerotare a vârfurilor astfel încât vârfurile dintr-o componentă conexă să fie numerotate cu valori consecutice. Plecând de la graful G , prin renumerotarea vârfurilor putem obŃine graful

( ),H X V= :

4

2 3

1 5

pentru care permutarea aplicată este 1 2 3 4 54 2 3 1 5

σ

=

. (Deoarece

: X Xσ → este o permutare, deci o funcŃie bijectivă şi se păstrează muchiile, rezultă că G H≅ , adică cele două grafuri sunt izomorfe).. Prin aplicarea permutării la liniile şi coloanele matricii GL se obŃine matricea

1 1 0 0 01 1 0 0 00 0 1 1 10 0 1 1 10 0 1 1 1

HL

=

care este o matrice bloc diagonală, în care

1

1 11 1

B

=

şi

Page 53: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

53

2

1 1 11 1 11 1 1

B

=

.

╬ ObservaŃie. Permutarea care transformă un graf într-un graf izomorf cu matricea lanŃurilor bloc diagonală nu este unică. Acest lucru reiese din exemplul următor. Exemplul 5. Considerăm tot graful din exemplul 3. De această dată transformăm graful în graful ( ),J X W= din imaginea:

1

5 3

4 2

pentru care permutarea aplicată vârfurilor este 1 2 3 4 51 5 3 4 2

π

=

.

Matrica lanŃurilor pentru acest graf este

1 1 1 0 01 1 1 0 01 1 1 0 00 0 0 1 10 0 0 1 1

JL

=

.

Care are ca blocuri diagonate pe

1

1 1 11 1 11 1 1

B

=

şi

2

1 11 1

B

=

.

Se poate observa că matricile HL şi JL sunt formate din aceleaşi blocuri diagonale, dar scrise în altă ordine.

Page 54: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

54

Prin generalizare putem considera că matricea de adiacenŃă este şi matricea lanŃurilor de lungime 1. PropoziŃia 2 ne dă modul de determinare a matricii tuturor lanŃurilor. Din demonstraŃia propoziŃiei 2 putem trage concluzia că kA dă matricea lanŃurilor elementare de lungime exact k , pe care o putem nota prin ( )k

GL şi relaŃia ( )k kGL A= este valabilă pentru orice k∈ℕ dacă notăm 0 0A = , matricea cu toate

elementele egale cu zero.

3.2. Matrici asociate grafurilor orientate

DefiniŃie. Fie ( ),G X U= un graf orientat cu X n= şi

{ }1 2, ,..., nX x x x= . Matricea ( ) { }( )1 ,

0,1G ij ni j nA a

≤ ≤= ∈M dată prin

( )( )

pentru ,1

0 pentru ,

i j

ij

i j

x x Ua

x x U

∈=

∉, orice 1 ,i j n≤ ≤

se numeşte matricea de adiacenŃă a grafului G . □

După cum se poate observa, noŃiunea este similară celei de la grafurile neorientate. De această dată, însă, matricea de adiacenŃă asociată unui graf nu mai este o matrice simetrică. De asemenea, matricea de adiacenŃă poate conŃine valori 1 pe diagonala principală, dacă graful orientat conŃine arce de forma ( ),x x U∈

(bucle). DefiniŃie. Fie ( ),G X U= un graf orientat cu X n= şi

{ }1 2, ,..., nX x x x= . Matricea ( ) { }( )21 ,1,0,1ij i j n

C c≤ ≤

= ∈ −M dată prin

( )( ) ( ){ }

( ) ( )

pentru ,1

0 pentru , , ,

pentru , si ,1

i j

ij i j j i

i j j i

x x U

c x x x x U

x x U x x U

= = ∅

∉ ∈−

∩ , orice 1 ,i j n≤ ≤

se numeşte matricea de conectare a grafului G . □

Exemplul 6. Fie graful ( ),G X U= pentru care { }1,2,3,4,5X = şi

( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1,2 , 2,4 , 3,1 , 3,2 , 3, 4 , 5,2 , 5,5U = .

Graful considerat are următoarea reprezentare:

Page 55: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

55

1

3

2

4

5

Matricea de adiacenŃă a grafului este

0 0 1 0 00 0 1 0 11 0 0 0 00 1 1 0 00 0 0 0 1

GA

=

,

în timp ce matricea de comutare este 0 0 1 0 00 0 1 1 11 1 0 1 00 1 1 0 00 1 0 0 1

GC

− = − − −

.

╬ DefiniŃie. Fie ( ),G X U= un graf orientat cu X n= şi presupunem că

{ }1 2, ,..., nX x x x= . Matricea ( ) { }( )1 ,

0,1G ij ni j nL l

≤ ≤= ∈M , definită prin

i 0 11 x , ,..., lant in

0 altfelr j

ij

y y y x Gl

∃ = = =

, orice 1 ,i j n≤ ≤

se numeşte matrica lanŃurilor grafului G . □

Matricea lanŃurilor se defineşte, în mod similar, cu cea dată pentru grafurile neorientate şi este o matrice simetrică.. Pentru orice matrice reală ( ) 1

1i nijj m

A a ≤ ≤

≤ ≤

= putem defini matricea valorilor

absolute ale lui A , ca fiind matricea ( ) 11

i nij

j m

A a ≤ ≤•≤ ≤

= . Cu această notaŃie putem

scrie imediat următorul rezultat.

Page 56: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

56

PropoziŃia 4. Fie ( ),G X U= un graf orientat, C matricea sa de

conectare şi L matricea lanŃurilor lui G . Atunci are loc relaŃia: 1

1

nk

k

L C−

•=

=∑

calculele fiind realizate prin operaŃiile + şi i .

DemonstraŃie. Considerăm graful neorientat ( ),G X V′ = în care

{ },x y V∈ dacă şi numai dacă ( ) ( ){ }, , ,i j j ix x x x U ≠ ∅∩ (graful neorientat care

se obŃine din G prin eliminarea orientării arcelor). Dacă GA este matricea de adiacenŃă a grafului neorientat G′ , atunci se

observă uşor că A G•

′= .

Din propoziŃia 1 avem ( )1

1

nk

Gk

L A−

′ •=

=∑ şi folosind relaŃia anterioară avem

1

1

nk

k

L C−

•=

=∑

□ PropoziŃia 4 ne indică faptul că propoziŃiile 2 şi 3 enunŃate pentru grafuri neorientate îşi păstrează enunŃul şi în condiŃiile grafurilor orientate, folosind noŃiunile de graf conex şi componentă conexă date pentru grafurile orientate. Exemplul 7. Să considerăm graful din exemplul 6. Pentru determinarea matricii lanŃurilor avem de scris matricea C• care se obŃine din matricea GC ,

considerând toate elementele în modul. Se obŃine astfe matricea 0 0 1 0 00 0 1 1 11 1 0 1 00 1 1 0 00 1 0 0 1

C•

=

.

Ultima matrice corespunde grafului neorientat ( ),G X V′ = , unde ( ),x y V∈ dacă

şi numai dacă ( ) ( ){ }, , ,x y y x U ≠ ∅∩ . Imaginea lui G′ este

Page 57: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

57

1

3

2

4

5

Graful G′ , ca şi graful G , este conex şi astfel matricea lanŃurilor în cele două grafuri va avea toate elementele egale cu 1, deci

1 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 11 1 1 1 1

G GL L ′

= =

.

╬ DefiniŃie. Fie ( ),G X U= un graf orientat cu X n= şi presupunem că

{ }1 2, ,..., nX x x x= . Matricea ( ) { }( )1 ,

0,1G ij ni j nD d

≤ ≤= ∈M , definită prin

( )i 0 11 x , ,..., drum in

0 altfelr j

ij

y y y x Gd

∃ = ==

, orice 1 ,i j n≤ ≤

se numeşte matricea lanŃurilor grafului G . □

DefiniŃie. Fie ( ),G X U= un graf orientat cu X n= şi presupunem că

{ }1 2, ,..., nX x x x= . Matricea ( ) ( )1 ,G ij ni j n

ND nd≤ ≤

= ∈M ℕ , definită prin ijnd

este numărul drumurilor în G de la ix la jx , orice 1 ,i j n≤ ≤ , se numeşte

matricea numărului de drumuri din graf G . □

PropoziŃia 5. Fie ( ),G X U= un graf orientat, A matricea sa de

adiacenŃă. Atunci are loc relaŃia 2 ... nGD A A A= + + + + (pentru calcule se

utilizează operaŃiile + şi i )..

DemonstraŃie. Presupunem că ( ) ( ), , ,i j j kx x x x U∈ şi astfel avem

1ija = şi 1jka = . Atunci 1ij jka a =i şi astfel

Page 58: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

58

11

n

ik ij jk il lkl

l j

b a a a a=

= + =∑i i ,

unde ( )2

1 ,ij i j nA b

≤ ≤= . De aici rezultă că 1ikd = Pe de altă parte din

( ) ( ), , ,i j j kx x x x U∈ , înseamnă că putem forma drumul ( ), ,i j kx x x în G deci

există drum de la ix la kx .

Asemănător, dacă există un drum ( )0 1, ,...,i k jx y y y x= = în G de

lungime 1, deci în ( )1 ,

kij i j n

A b≤ ≤

′= avem 1ijb′ = , şi ( ),j kx x U∈ , deci 1jka = ,

atunci, pe de o parte, se formează în G drumul ( )0 1, ,..., ,i k j kx y y y x x= = , iar,

pe de altă parte, prin calcul similar celui din cazul 2A , pentru ( )1

1 ,

kij i j n

A b+

≤ ≤′′=

obŃinem 1ikb′′ = . □

Corolar. În condiŃiile propoziŃiei 5 avem ( )k kGD A= .

Calculele în această relaŃie se fac prin operaŃiile + şi i . Am notat

cu ( ) ( )( )5

1 ,

kG ij

i j nD d

≤ ≤= matricea drumurilor din G de lungime k , definită prin

( ) ( )i 0 11 x , ,..., drum in

0 altfelk k jij

y y y x Gd

∃ = ==

, orice 1 ,i j n≤ ≤ .

DemonstraŃie. RelaŃia rezultă direct din demonstraŃia propoziŃiei 5. □

Exemplul 8. Considerăm din nou graful din exemplul 7 pentru care am scris matricea de adiacenŃă:

0 0 1 0 00 0 1 0 11 0 0 0 00 1 1 0 00 0 0 0 1

GA

=

Pentru 2A A A= i obŃinem

Page 59: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

59

2

0 0 1 0 0 0 0 1 0 0 1 0 0 0 00 0 1 0 1 0 0 1 0 1 1 0 0 0 11 0 0 0 0 1 0 0 0 0 0 0 1 0 00 1 1 0 0 0 1 1 0 0 1 0 1 0 10 0 0 0 1 0 0 0 0 1 0 0 0 0 1

A

= =

Din calculul pentru 3 2A A A= i avem

3

1 0 0 0 0 0 0 1 0 0 0 0 1 0 01 0 0 0 1 0 0 1 0 1 0 0 1 0 10 0 1 0 0 1 0 0 0 0 1 0 0 0 01 0 1 0 1 0 1 1 0 0 1 0 1 0 10 0 0 0 1 0 0 0 0 1 0 0 0 0 1

A

= =

Pentru 4 3A A A= i rezultă matricea

4

0 0 1 0 0 0 0 1 0 0 1 0 0 0 00 0 1 0 1 0 0 1 0 1 1 0 0 0 11 0 0 0 0 1 0 0 0 0 0 0 1 0 01 0 1 0 1 0 1 1 0 0 1 0 1 0 10 0 0 0 1 0 0 0 0 1 0 0 0 0 1

A

= =

Prin sumare rezultă matricea 1 0 1 0 01 0 1 0 11 0 1 0 01 1 1 0 10 0 0 0 1

GD

=

╬ PropoziŃia 6. Fie ( ),G X U= un graf orientat, A matricea sa de

adiacenŃă. Atunci are loc relaŃia 2 ... n

GND A A A= + + +

(unde operaŃiile sunt cele uzuale, definite pe ℕ ). DemonstraŃie. Se procedează în acelaşi mod ca în demonstraŃia propoziŃiei 5, plecându-se de la presupunerea iniŃială că A conŃine de fapt numărul de drumuri de lungime 1 din G .

Page 60: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

60

Corolar. În condiŃiile din propoziŃia 6 avem ( )k kGND A= .

Calculele se fac prin operaŃiile uzuale definite pe mulŃimea numerelor naturale

ℕ . Am notat ( ) ( )( )5

1 ,

kG ij

i j nND nd

≤ ≤= matricea numărului de drumuri de lungime k

din G , unde ( )kijnd este numărul de drumuri de lungime exact k având

extremitatea iniŃială ix şi extremitatea finală jx .

DemonstraŃie. Proprietatea rezultă imediat din detalierea demonstraŃiei propoziŃiei 6.

□ Exemplul 8. Considerăm din nou graful din exemplul 7 pentru care am scris matricea de adiacenŃă:

0 0 1 0 00 0 1 0 11 0 0 0 00 1 1 0 00 0 0 0 1

GA

=

Pentru 2A AA= obŃinem

2

0 0 1 0 0 0 0 1 0 0 1 0 0 0 00 0 1 0 1 0 0 1 0 1 1 0 0 0 11 0 0 0 0 1 0 0 0 0 0 0 1 0 00 1 1 0 0 0 1 1 0 0 1 0 1 0 10 0 0 0 1 0 0 0 0 1 0 0 0 0 1

A

= =

Din calculul pentru 3 2A A A= avem

3

1 0 0 0 0 0 0 1 0 0 0 0 1 0 01 0 0 0 1 0 0 1 0 1 0 0 1 0 10 0 1 0 0 1 0 0 0 0 1 0 0 0 01 0 1 0 1 0 1 1 0 0 1 0 1 0 10 0 0 0 1 0 0 0 0 1 0 0 0 0 1

A

= =

Pentru 4 3A A A= rezultă matricea

Page 61: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

61

4

0 0 1 0 0 0 0 1 0 0 1 0 0 0 00 0 1 0 1 0 0 1 0 1 1 0 0 0 11 0 0 0 0 1 0 0 0 0 0 0 1 0 01 0 1 0 1 0 1 1 0 0 1 0 1 0 10 0 0 0 1 0 0 0 0 1 0 0 0 0 1

A

= =

Prin sumare rezultă matricea 2 0 2 0 02 0 2 0 42 0 2 0 03 1 4 0 30 0 0 0 4

GND

=

╬ PropoziŃia 7. Fie ( ),G X U= un graf orientat cu ( )

1 ,G ij i j nD d

≤ ≤=

matricea drumurilor şi ( )1 ,G ij i j n

ND nd≤ ≤

= matricea numărului de drumuri.

Atunci pentru orice 1 ,i j n≤ ≤ , 1ijd = dacă şi numai dacă 0ijnd ≠ .

DemonstraŃie. Rezultatul este imediat, deoarece este clar că 1ijd = dacă şi

numai dacă există cel puŃin un drum de la ix la jx şi astfel 0ijnd ≠ .

□ Trebuie să observăm faptul că discuŃia relativă la conexitate pentru grafuri neorientate şi legătura acestei proprietăŃi cu matricea lanŃurilor are corespondent şi pentru grafurile orientate când paralela se face între proprietatea de tare conexitate şi matricea drumurilor. Din această cauză următoarele rezultate sunt date fără demonstraŃii. PropoziŃia 8. Fie ( ),G X U= un graf orientat cu GD matricea

drumurilor. G este tare conex dacă şi numai dacă GD are toate elementele egale

cu 1. □

PropoziŃia 9. Există o permutare a numerotării nodurilor unui graf orientat ( ),G X U= astfel încât matricea drumurilor să fie de formă bloc

diagonală cu blocurile formate doar cu valoarea 1. Blocurile diagonale corespund componentelor tari conexe ale grafului.

Page 62: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

62

IV. ARBORI

4.1. Definire şi proprietăŃi

DefiniŃie. Numim arbore orice graf neorientat conex şi fără cicluri.

□ Teorema 1. Fie ( ),G X U= un graf neorientat. Următoarele afirmaŃii

sunt echivalente: 1. G este arbore. 2. G este aciclic maximal. 3. G este convex minimal.

DemonstraŃie 1 2⇒ Din definiŃie rezultă că G este aciclic. În plus, deoarece G este şi conex, conform propoziŃie 2 din capitolul 2, rezultă că 1U X≥ − .

Presupunem că adăugăm o muchie nouă. Astfel, dacă { },x y U∉ ,

considerăm graful { }{ }( ), ,H X U x y= ∪ . Acest graf are acelaşi număr de vârfuri

şi cu 1 mai multe muchii, astfel încât are loc relaŃia { }{ },U x y X=∪ . Folosind

propoziŃia 4 din capitolul 2 rezultă că H este un graf ciclic. Deoarece prin adăugarea oricărei muchii noi la graful G aciclic se obŃine

un graf ciclic, rezultă că G este maximal faŃă de proprietatea de a fi aciclic.

1 3⇒ Din definiŃie rezultă că G este conex. Considerăm o muchie oarecare { },x y U∈ şi graful

{ }{ }( ), \ ,H X U x y= pe care îl presupunem conex. Atunci există un lanŃ de

extremităŃi x şi y , 0 ,..., yL x x x y = = = în H .

Deoarece { },x y U∈ , considerând { }, ,L L y x′ = în G , avem de fapt

[ ]0 ,..., ,rL x x x y x′ = = = , care, având acelaşi vârf la extremităŃi, este un ciclu

în G . ContradicŃie (G este aciclic).

Page 63: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

63

2 1⇒ Avem ipoteza că G este un graf aciclic maximal. Considerăm că G nu

este conex şi astfel 1U X< − .

Atunci există ,x y X∈ fără a putea fi conectate printr-un lanŃ. Astfel

pentru a conecta x şi y trebuie să adăugăm muchia { },x y U∉ şi astfel să putem

obŃine eventual un graf conex. G fiind aciclic maximal, rezultă că adăugând o muchie graful devine ciclic

şi astfel obŃinem 1U X+ ≥ , sau altfel scris 1U X≥ − . ContradicŃie.

G fiind conex şi aciclic, rezultă că G este arbore.

3 1⇒ Avem ipoteza că G este un graf conex minimal. Considerăm că G nu este aciclic. Atunci există [ ]0 ,..., ,rL x x x y x= = = un ciclu în G . Considerăm graful

{ }{ }( ), \ ,G X U x y′ = .

Fie ,a b X∈ . Deoarece G este conex rezultă că a şi b sunt conectate

printr-un lanŃ 0 ,..., pL y y′ = în G .

Dacă muchia { },x y nu apare în L′ , atunci L′ este lanŃ şi în G′ , deci a

şi b sunt conectate în G′ . Dacă { },x y apare în L′ atunci pentru L′ avem

explicit

0 1,..., , ,i i pL y y x y y y+′ = = = .

Considerăm lanŃul

0 0 1,..., ,..., ,i r i pL y y x x x y y y+′ = = = = =

care este de extremităŃi a şi b şi este un lanŃ în G′ , deci a şi b sunt conectate în G′ . De mai sus rezultă că G′ care se obŃine prin eliminarea unei muchii din G este conex, şi astfel G nu este minimal la proprietatea de conexitate. ContradicŃie. Am obŃinut astfel că G este aciclic şi fiind conex, rezultă că G este arbore.

□ Corolar. Dacă ( ),G X U= este arbore, atunci 1U X= − .

DemonstraŃie. G fiind arbore este aciclic maximal. Cum un graf ciclic are U X≥ , rezultă că pentru un graf aciclic avem U X< . Din maximalitatea lui

G la proprietatea de a nu conŃine cicluri, rezultă că numărul de muchii este cel mai mare care îndeplineşte relaŃia U X< şi astfel 1U X= − .

Page 64: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

64

Exemplul 1. Considerăm graful ( ),G X U= , unde { }1,2,...,15X =

(deci 15X = ) şi care are reprezentarea

1

2 3 4

5 6 7 8 9

10 11 12 13 14 15

Din reprezentarea grafică se poate vedea că acest graf este conex şi că nu conŃine cicluri şi astfel graful este un arbore. Avem de asemenea 14U = şi astfel

este verificată relaŃia 1U X= − .

Dacă la acest graf adăugăm o muchie, de exemplu { }3,8 se obŃine

reprezentarea

1

2 3 4

5 6 7 8 9

10 11 12 13 14 15

Page 65: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

65

se observă că se formează ciclul { }1,3,8, 4,1C = , astfel că noul graf este ciclic,

deci nu mai este un arbore. Dacă se elimină o muchie, de exemplu { }1,4 , atunci se obŃine

reprezentarea

1

2 3 4

5 6 7 8 9

10 11 12 13 14 15

Se vede că am obŃinut astfel un graf neconex (de componente conexe { }1 1,2,3,5,6,10C = şi { }2 4,7,8,9,11,12,13,14,15C = şi deci graful nou nu este

arbore. ╬

PropoziŃie 1. Dacă ( ),G X U= este un arbore, atunci G are cel puŃin

două vârfuri terminale. DemonstraŃie. Din propoziŃia 2, capitolul 1 avem că numărul nodurilor cu gradul impar este par şi astfel trebuie să arătăm că dacă G este arbore atunci conŃine cel puŃin un nod terminal. Presupunem că G nu conŃine niciun nod terminal. Astfel, oricare ar fi x X∈ , ( ) 2d x ≥ .

Dacă 0x X∈ , cum ( )0 2d x ≥ , există 1 1,x x X′∈ , astfel încât

{ } { }1 0 0 1, , ,x x x x U′ ∈ , în plus, 0x , 1x şi 1x′ sunt distincte două câte două, pentru

că altfel ar apare un ciclu. Putem forma astfel lanŃul elementar [ ]1 1 0 1, ,L x x x′= .

Page 66: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

66

Deoarece ( )1 2d x ≥ şi { }0 1,x x U∈ , rezultă că există { }1 2,x x U∈ . În

plus, trebuie să avem { }2 1 0 1, ,x x x x′∉ , deoarece, în caz contrar, se formează un

ciclu. Astfel, putem forma lanŃul [ ]2 1 0 1 2, , ,L x x x x′= şi procesul poate continua la

infinit, deci X este infinită. ContradicŃie. □

4.2. Arbori parŃiali

DefiniŃie. Fie ( ),G X U= un graf neorientat şi ( ),H X V= un graf

parŃial al lui G . Dacă H este arbore spunem că H este un arbore parŃial (de acoperire sau de traversare) al lui G .

□ ObservaŃie. Dacă un graf neorientat ( ),G X U= are arbore parŃial, acesta

nu este unic. Exemplul 2. Fie graful ( ),G X U= cu 10X = care are reprezentarea

1

2 3

10

4 5

8

6

7

9

şi astfel avem

{ } { } { } { } { } { } { }{{ } { } { } { } { } { } { } { }}1,2 , 1, 4 , 2,3 , 2,4 , 2,10 , 3,5 , 4,6 ,

4,8 , 4,9 , 5,6 , 5,7 , 5,10 , 6,7 , 7,9 , 9,10

U =

Putem alege graful parŃial ( )1 1,H X V= , unde

{ } { } { } { } { } { } { } { } { }{ }1 1,2 , 1,4 , 2,3 , 3,5 , 4,6 , 4,8 , 4,9 , 6,7 , 9,10V =

Se poate arăta că graful 1H este un graf conex şi fără cicluri deci este un

arbore. Atunci este un alt arbore parŃial al grafului G .

Page 67: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

67

Graful 1H are reprezentarea

1

2 3

10

4 5

8

6

7

9

Ca graf parŃial al grafului G se poate face şi alegerea ( )2 2,H X V= , unde

{ } { } { } { } { } { } { } { } { }{ }2 1,2 , 2,3 , 2, 4 , 2,10 , 4,6 , 4,8 , 4,9 , 5,6 , 6,7V =

Şi pentru acest graf se poate demonstra că este conex şi aciclic şi astfel şi

2H este graf arbore parŃial pentru graful G .

Graful 2H are reprezentarea

1

2 3

10

4 5

8

6

7

9

Se poate vedea că grafurile 1H şi 2H sunt diferite şi acest lucru justifică observaŃia făcută anterior. Se poate arăta că cei doi arbori parŃiali nu sunt nici izomorfi.

Page 68: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

68

DefiniŃie. Fie ( ),G X U= un graf neorientat şi ( ),A X V= un arbore

parŃial al lui G . Numim coarde ale lui H elementele mulŃimii \U V , iar numărul

\U V se numeşte numărul ciclomatic al lui G .

□ Exemplu 3. Pentru exemplul 2 se poate constata că 15U = şi

1 2 9V V= = . Cum 1V U⊂ , rezultă că 1 1\ 15 9 6U V U V= − = − = şi deci,

numărul ciclomatic al grafului G este egal cu 6 ╬

Teorema 2. Fie ( ),G X U= un graf neorientat. G este conex dacă şi

numai dacă G are arbore parŃial. DemonstraŃie ⇒ Considerăm că G este conex. Dacă G este conex minimal, atunci G este arbore şi astfel H G= este arbore parŃial al lui G .

Dacă G nu este minimal la proprietatea de conexitate, atunci putem elimina succesiv muchii astfel încât să rămână valabilă proprietatea de conexitate.

Presupunem că obŃinem graful parŃial ( ),H X V= conex şi astfel încât

dacă eliminăm o muchie din V , atunci graful obŃinut nu mai este conex. Rezultă astfel că H este maximal la proprietatea de conexitate şi astfel H este un arbore. Cum H se obŃine din G prin eliminarea de muchii, rezultă că H este graf parŃial al lui G şi astfel H este arbore parŃial al lui G .

⇐ Fie H un arbore parŃial al lui G . H fiind arbore este graf conex. Fie ,x y X∈ arbitrare. H fiind conex, rezultă că există

1 2, ,..., pL m m m = un lanŃ în H de extremităŃi x şi y , unde pentru orice

1,2,...,i p= , im V∈ .

Cum V U⊂ , rezultă că pentru orice 1,2,...,i p= , im U∈ şi astfel

1 2, ,..., pL m m m = este un lanŃ în G de extremităŃi x şi y . Astfel rezultă că G

este un graf conex. □

DemonstraŃia de mai sus permite considerarea unui algoritm care să conducă la determinarea unui arbore parŃial pentru un graf conex.

Page 69: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

69

Algoritm 1 1. Fie V U= . 2. Dacă graful ( ),H X V= nu conŃine cicluri, atunci algoritmul se termină şi

H este un arborele parŃial al lui G , altfel se continuă.

3. Se consideră un ciclu 1 2, ,..., pC e e e = în H

4. Se alege { }1 2, ,..., pe e e e∈ . Considerăm { }\V V e= şi mergem la 2.

■ Exemplul 4. Considerăm din nou graful ( ),G X U= din exemplul 2 şi

facem iniŃializarea { } { } { } { } { } { } { }{

{ } { } { } { } { } { } { } { }}1,2 , 1,4 , 2,3 , 2, 4 , 2,10 , 3,5 , 4,6 ,

4,8 , 4,9 , 5,6 , 5,7 , 5,10 , 6,7 , 7,9 , 9,10

V U= =

Un ciclu din graful ( ),X V este { }1,2, 4,1 . Pentru a elimina acest ciclu

putem presupune că eliminăm din V muchia { }1,2 şi se obŃine

{ } { } { } { } { } { } { }{{ } { } { } { } { } { } { }}1, 4 , 2,3 , 2, 4 , 2,10 , 3,5 , 4,6 , 4,8 ,

4,9 , 5,6 , 5,7 , 5,10 , 6,7 , 7,9 , 9,10

V =

În graful obŃinut se formează ciclul { }2,3,5,10, 2 şi pentru a-l elimina

putem considera muchia { }2,10 . Rezultatul eliminării ei este

{ } { } { } { } { } { } { } { } { }{{ } { } { } { }}1, 4 , 2,3 , 2, 4 , 3,5 , 4,6 , 4,8 , 4,9 , 5,6 , 5,7 ,

5,10 , 6,7 , 7,9 , 9,10

V =

Tot pornind din vârful 2 se formează ciclul { }2,4,6,5,3,2 şi pentru

eliminarea lui folosim muchia { }2,4 , obŃinând

{ } { } { } { } { } { } { } { }{{ } { } { } { }}1, 4 , 2,3 , 3,5 , 4,6 , 4,8 , 4,9 , 5,6 , 5,7 ,

5,10 , 6,7 , 7,9 , 9,10

V =

În ultimul graf ( ),X V se formează ciclul { }4,6,7,9,4 şi eliminăm

muchia { }7,9 pentru a ajunge la

{ } { } { } { } { } { } { } { } { } { } { }{ }1,4 , 2,3 , 3,5 , 4,6 , 4,8 , 4,9 , 5,6 , 5,7 , 5,10 , 6,7 , 9,10V =

Detectăm în continuare ciclul { }4,9,10,5,6, 4 şi îl eliminăm prin

excluderea muchiei { }9,10 având ca rezultat

{ } { } { } { } { } { } { } { } { } { }{ }1,4 , 2,3 , 3,5 , 4,6 , 4,8 , 4,9 , 5,6 , 5,7 , 5,10 , 6,7V =

Page 70: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

70

Ultimul graf ( ),X V obŃinut conŃine ciclul { }5,6,7,5 . Pentru a elimina

acest ciclu putem şterge muchia { }6,7 şi ajungem la

{ } { } { } { } { } { } { } { } { }{ }1,4 , 2,3 , 3,5 , 4,6 , 4,8 , 4,9 , 5,6 , 5,7 , 5,10V =

Graful obŃinut nu mai conŃine cicluri şi astfel algoritmul 1 pe care l-am aplicat mai sus se opreşte, graful ( ),X V fiind un arbore parŃial al grafului G .

Acest lucru este adevărat deoarece pe de o parte ( ),X V este graf parŃial al lui G

şi, pe de altă parte, deoarece 9 1V X= = − , rezultă că ( ),X V este un arbore.

Arborele parŃial ( ),X V are reprezentarea

1

2 3

10

4 5

8

6

7

9

PropoziŃia 2. Fie ( ),G X U= un graf neorientat conex. Atunci numărul

ciclomatic al lui G este 1U X− + .

DemonstraŃie. Fie ( ),H X V= arborele parŃial al lui G . Deoarece H

este arbore, rezultă că avem relaŃia 1V X= − . Numărul ciclomatic al lui G este

prin definiŃie valoarea \U V .

Din teoria mulŃimilor ştim că dacă V U⊂ , atunci \U V U V= − .

Înlocuind valoarea pentru V , pentru numărul ciclomatic al lui G obŃinem

( )\ 1 1U V U V U X U V= − = − − = − + .

Page 71: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

71

PropoziŃia 3. Fie ( ),G X U= un graf neorientat conex, ( ),A X V= un

arbore parŃial al lui G şi { },e x y= o coardă a lui A . Atunci graful

{ }( ),H X V e= ∪ conŃine exact un ciclu.

DemonstraŃie. Deoarece A este un arbore, deci este aciclic maximal şi H se obŃine din A prin adăugarea de muchii, rezultă că H este un graf ciclic (deci conŃine cel puŃin un ciclu)

Presupunem că H conŃine două cicluri diferite care trec prin muchia e (dacă doar unul ar trece prin muchia e prin eliminarea acestei muchii se elimină un singur ciclu şi astfel ar rezulta că A este ciclic, deci nu poate fi arbore).

Fie astfel 1 0 1, ,..., ,pC x x x x y x = = = şi [ ]2 0 1, ,..., ,rC x y y y y x= = =

cele două cicluri. Putem forma ciclul

0 1 1 0, ,..., ,..., ,p rC x x x x y y y y x = = = = =

Care nu conŃine muchia e şi astfel este ciclu şi în A , care astfel nu este arbore. ContradicŃie.

4.3. Algoritmul lui Kruskal Problema arborelui parŃial de cost minim. Fie ( ),G X U= un graf

neorientat conex, ( ): 0,c U → ∞ o funcŃie, numită funcŃie cost a muchiilor lui G

şi ( ),H X V= un graf parŃial al lui G . Numim costul lui H suma costurilor

tuturor muchiilor din V , adică valoarea ( ) ( )u U

c H c u∈

=∑ . Se pune problema

determinării în G a unui graf parŃial conex de cost minim. DefiniŃie. Fie ( ),G X U= un graf neorientat conex, ( ): 0,c U → ∞

funcŃia cost a muchiilor lui G şi ( ),cm cmT X V= un arbore parŃial cu proprietatea

că pentru orice arbore parŃial ( ),T X V= avem ( ) ( )cmc T c T≤ . Atunci spunem

că cmT este arbore parŃial de cost minim al lui G .

□ Teorema 3. Fie ( ),G X U= un graf neorientat conex, ( ): 0,c U → ∞

funcŃia cost a muchiilor lui G şi ( ),H X V= un graf parŃial al lui G . Dacă H

este graf parŃial conex de cost minim, atunci H este arbore parŃial de cost minim.

DemonstraŃie. Presupunem că H nu este arbore parŃial, deci H nu este arbore. Deoarece H este conex, ca H să nu fie arbore trebuie ca H să nu fie aciclic. Astfel, există un ciclu C în H şi fie e o muchie a ciclului C .

Page 72: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

72

Considerăm graful { }( ), \H X V e′ = . Acest graf este conex, pentru că se

obŃine din H prin eliminarea unei muchii ce aparŃine unui ciclu. Din calculul costurilor avem:

( ) ( ) ( ) ( ){ }

( ){ }

( )\ \u V u V e u V e

c H c u c e c u c u c H∈ ∈ ∈

′= = + > =∑ ∑ ∑

de unde rezultă că H nu este de cost minim. ContradicŃie. □

Algoritmul 2. (Kruskal). 1. Considerăm că ( )L i i= pentru fiecare 1,2,...,i X= , construim ( )M j ,

. 1,2,...,j U= reprezentând muchiile lui G în ordinea crescătoare a

costurilor, considerăm 0k = (pentru numărarea muchiilor selectate) şi

1j = (pentru parcurgerea lui M ). Fie V = ∅ . 2. Dacă 1k n≥ − , atunci algoritmul se opreşte, muchiile din V determină

arborele parŃial de cost minim, altfel se continuă. 3. Considerăm { } ( ),p q M j= .

4. Dacă ( ) ( )L p L q= , atunci punem 1j j= + şi mergem la 3, altfel se

continuă. 5. Punem 1k 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 1j j= + şi mergem la 2. ■

Exemplul 5. Fie un graf neorientat ( ),G X U= cu { }1,2,3, 4,5,6X = şi

cu reprezentarea

1 2

3

4 5 6

1

3

2

5

3

4

2

4

3

1

în care valorile trecute pe muchii sunt valorile funcŃiei cost :c U → ℝ .

Page 73: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

73

Dorim să determinăm un graf parŃial de cost minim al lui G . Pentru aceasta vom folosi algoritmul lui Kruskal prezentat mai sus. Conform primului pas generăm vectorul ( )1,2,3, 4,5,6L = . Ordonăm

muchiile în ordine crescătoare şi ne rezultă vectorul { } { } { } { } { } { } { } { } { } { }( )1,5 , 3,6 , 2,4 , 3,5 , 1,6 , 2,3 , 4,5 , 3,4 , 2,6 , 1, 2M = .

Punem 0k = , 1j = şi V = ∅ Cum 0k = şi 1 5n − = nu se îndeplineşte condiŃia din pasul 2 şi intervine prima iteraŃie a algoritmului. Prima iteraŃie

Considerăm muchia { }1,5 . Deoarece ( ) ( )1 1 5 5L L= ≠ = se continuă cu

pasul 4 şi trecem la 1k = şi adăugăm muchia considerată la V care devine astfel

{ }{ }1,5V = ..

Deoarece ( ) ( )1 1 5 5L L= < = , conform pasului 5 înlocuim toate valorile

5 prin valoarea 1 şi astfel L ajunge la forma ( )1,2,3,4,1,6L = .

Se consideră 2j = şi terminăm prima iteraŃie şi cum 1k = şi 1 5n − = reluăm cu o nouă iteraŃie. A doua iteraŃie Muchia a doua din M este { }3,6 şi avem ( ) ( )3 3 6 6L L= ≠ = . Astfel

ajungem la 2k = şi adăugând muchia la V , se obŃine { } { }{ }1,5 , 3,6V = .

Cum ( ) ( )3 3 6 6L L= < = , prin schimbarea valorilor 6 cu 3 ajungem la

( )1,2,3,4,1,3L = şi iteraŃia se termină considerând 3j = . În plus avem 2k = şi

1 5n − = astfel că vom continua. A treia iteraŃie

Următoarea muchie considerată este { }2,4 pentru care avem

( ) ( )2 2 4 4L L= ≠ = şi ajungem la configuraŃia 3k = şi

{ } { } { }{ }1,5 , 3,6 , 2,4V = .

Deoarece ( ) ( )2 2 4 4L L= < = prin schimbarea valorilor se obŃine

( )1,2,3,2,1,3L = şi după ce facem 4j = vom continua cu o nouă iteraŃie

deoarece 3k = şi 1 5n − = . A patra iteraŃie

Luăm muchia { }3,5 şi avem ( ) ( )3 3 1 5L L= ≠ = ceea ce generează nouă

structură 4k = şi { } { } { } { }{ }1,5 , 3,6 , 2, 4 , 3,5V = .

Page 74: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

74

Acum avem ( ) ( )3 3 1 5L L= > = astfel că se înlocuiesc toate apariŃiile lui

3 prin valoarea 1 şi obŃinem ( )1,2,1, 2,1,1L = şi după ce ajungem la 5j = vom

trece la următoarea iteraŃie deoarece 4k = şi 1 5n − = . A cincea iteraŃie

Noua muchie considerată este { }1,6 pentru care ( ) ( )1 1 6L L= = astfel că

face 6j = şi luăm o nouă muchie, { }2,3 . Pentru aceasta ( ) ( )2 2 1 3L L= ≠ = şi

ca urmare vom ajunge la situaŃia 5k = şi

{ } { } { } { } { }{ }1,5 , 3,6 , 2, 4 , 3,5 , 2,3V = .

RelaŃia exactă relativă la valorile din L este ( ) ( )2 2 1 3L L= > = şi astfel

se ajunge la ( )1,1,1,1,1,1L = . Facem 7j = . La revenirea la pasul 2 cu 5k = şi

1 5n − = condiŃia este îndeplinită pe egalitate şi astfel algoritmul se opreşte. Am obŃinut graful parŃial ( ),H X V= care este arbore parŃial de cost minim, costul

arborelui fiind 1 1 2 2 3 9HC = + + + + = . Arborele parŃial de cost minim are reprezentarea

1 2

3

4 5 6

1

2

2

3

1

4.4. ArborescenŃe

DefiniŃie. Fie ( ),G X U= un graf orientat conex şi aciclic. Dacă există

un unic vârf 0x X∈ cu ( )0 0d x− = şi pentru orice x X∈ , 0x x≠ avem

( ) 0d x− ≠ , spunem că G este o arborescenŃă (sau arbore orientat). 0x poartă

numele de rădăcină a arborescenŃei G . Vârfurile y pentru care ( ) 0d y+ = se

numesc vârfuri terminale sau frunze. □

Page 75: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

75

DefiniŃie. Fie ( ),A X U= o arborescenŃă cu rădăcina 0x . Pentru un vârf

x X∈ definim nivelul nodului prin ( )0 ,...,l x x , unde ( )0 ,...,x x este drumul

(unic) de extremitate iniŃială 0x şi extremitate finală x . □

Exemplul 6. Considerăm graful orientat conex şi aciclic ( ),G X U= cu

10 vârfuri şi care are reprezentarea

1

2 3

4 5 6 7 8

9 10

Graful G este conex deoarece există lanŃuri între oricare două vârfuri. El este aciclic. De asemenea există un unic vârf (notat 1) pentru care gradul de intrare este zero, iar celelalte vârfuri au gradul de intrare mai mare sau egal cu 1. Astfel, graful orientat G este o arborescenŃă. Deoarece ( )1 0d− = , rezultă că vârful 1 este rădăcina arborescenŃei.

Observând că ( )6 0d+ = rezultă că 6 este o frunză a arborescenŃei.

MulŃimea frunzelor arborescenŃei G este mulŃimea { }4,6,7,8,9,10 .

Se poate vedea că ( ) ( )1,2 1,3 1l l= = şi astfel vârfurile 2 şi 3 se găsesc pe

acelaşi nivel, şi anume pe nivelul 1. Avem şi ( ) ( )1,2,5,9 1,2,5,10 3l l= = , deci

putem spune că vârfurile 9 şi 10 se găsesc pe acelaşi nivel 3. ╬

DefiniŃia de mai sus clasifică vârfurile arborescenŃelor în funcŃie de distanŃa lor faŃă de rădăcină. Această clasificare are ca efect o reprezentare în care nodurile sunt poziŃionate pe fiecare nivel, cu rădăcina arborescenŃei în partea superioară a imaginii.

Page 76: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

76

Pentru o arborescenŃă ( ),A X U= , dacă ( ),x y U∈ , spunem că x este

părintele (tatăl) lui y şi y este fiul (descendentul direct) lui x . Dacă ,x y X∈

şi există drumul (unic) ( )1, ,..., ,kx z z y , spunem că y este descendentul lui x .

DefiniŃie. Fie ( ),A X U= o arborescenŃă. Dacă pentru orice x X∈

avem ( ) { }0,1,2d x+ ∈ . Spunem că A este o arborescenŃă binară (arbore binar).

Dacă ( ) { }0,2d x+ ∈ , spunem că A este o arborescenŃă binară completă (arbore

binar complet). □

Exemplul 7. Considerăm arborescenŃa din imaginea de mai jos

1

2 3

4 5 6

7 8

care are ca răvădină vârful 1. Avem ( ) ( ) ( ) ( )4 5 7 8 0d d d d+ + + += = = = ,

( )3 1d+ =

şi ( ) ( ) ( )1 2 6 2d d d+ + += = = ,

deci orice vârf are gradul de ieşire în mulŃimea { }0,1,2 . Rezultă că arborescenŃa

considerată este un arbore binar. Deoarece ( )3 1d+ = rezultă că arborele binar nu este complet.. Dacă am

adăuga vârful 9 şi arcul ( )3,9 se obŃine ( )3 2d+ = şi ( )9 0d+ = şi vom obŃine un

arbore binar complet. Acesta are reprezentarea

Page 77: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

77

1

2 3

4 5 6

7 8

9

Teorema 4. Pentru orice *n∈ℕ există ( ),A X U= o arborescenŃă

binară astfel încât

( ){ }0x X d x n+∈ = =

(numărul vârfurilor terminale să fie egal cu n ). DemonstraŃie. Dacă 1n = , atunci { }0X x= şi U = ∅ . Astfel

( )1 ,A X U= este arborescenŃă binară şi ( ){ } { }00 1x X d x x+∈ = = = .

Dacă 2n = , atunci fie { }1 1 2,X x x= . Considerăm { }2 1,2X x= şi

mulŃimea de arce ( ) ( ){ }1 1,2 2 1,2 2, , ,U x x x x= . Deoarece 2X are un element, există

o arborescenŃă binară ( )1 2 2,A X U= cu un nod terminal. Fie arborescenŃa

( )2 1 2 1 2,A X X U U= ∪ ∪ care este o arborescenŃă binară şi are numărul de noduri

terminale { }1 1 2, 2X x x n= = = .

Presupunem că pentru orice 1,2,...,i k= există ( ),i i iA Y V= arborescenŃă

binară cu numărul de vârfuri terminale egal cu i . Considerăm 1n k= + . Dacă 1k + este număr par, deci 1 2k p+ = , considerăm

{ }1 1 2 2 1 2, ,..., ,p pX x x x x−= . Fie { }2 1,2 3,4 2 1,2, ,..., p pX x x x −= pentru care avem

2X p k= ≤ . Considerăm mulŃimea de muchii

Page 78: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

78

( ) ( ) ( ) ( ){ }1 1,2 1 1,2 2 2 1,2 2 1 2 1,2 2, , , ,..., , , ,p p p p p pU x x x x x x x x− − −= .

Deoarece 2X p k= ≤ , rezultă că există ( ),p p pA Y V= o arborescenŃă

binară care are p noduri terminale. Fie atunci ( )1 1 1,k p pA X Y U V+ = ∪ ∪ care este

o arborescenŃă binară care are numărul de noduri terminale egal cu

{ }1 1 2 2 1 2, ,..., , 2 1p pX x x x x p k−= = = + .

Dacă 1k + este număr impar, deci 1 2 1k q+ = + , considerăm

{ }1 1 2 2 1 2 2 1, ,..., , ,q q qX x x x x x− += . Fie { }2 1,2 3,4 2 1,2, ,..., q qX x x x −= pentru care

avem 2X q k= < . Considerăm mulŃimea de muchii

( ) ( ) ( ) ( ){ }1 1,2 1 1,2 2 2 1,2 2 1 2 1,2 2, , , ,..., , , ,q q q q q qU x x x x x x x x− − −= .

Deoarece 2X q k= < , pentru { }2 1qX x +∪ cu număr de elemente

1q k+ ≤ există ( )1 1 1,q q qA Y V+ + += o arborescenŃă binară care are 1q + noduri

terminale. Fie atunci ( )1 1 1 1 1,k q qA X Y U V+ + += ∪ ∪ care este o arborescenŃă binară

care are numărul de noduri terminale egal cu

{ }1 1 2 2 1 2 2 1, ,..., , , 2 1 1q q qX x x x x x q k− += = + = + .

Folosind teorema inducŃiei complete, obŃinem că afirmaŃia din enunŃ este adevărată pentru orice *n∈ℕ .

□ PropoziŃia 4. Fie ( ),A X U= o arborescenŃă binară completă în care

( ){ }0x X d x n+∈ = = . Atunci ( )2 1U n= − .

DemonstraŃie. Pentru 1n = , conform construcŃiei din demonstraŃia teoremei 4, 1V = ∅ şi astfel ( )1 0 2 1 1V = = − . De semenea, pentru 2n = avem

( ) ( ){ }2 1,2 2 1,2 2, , ,V x x x x= şi astfel ( )2 2 2 2 1V = = − .

Presupunem că pentru orice 1,2,...,i k= enunŃul propoziŃiei este adevărat şi fie 1n k= + . Dacă 1k + este număr par, deci 1 2k p+ = , conform construcŃiei din

demonstraŃia teoremei 4, avem ( )1 1 1,k p pA X Y U V+ = ∪ ∪ şi ( ),p p pA Y V= este o

arborescenŃă binară completă cu p vârfuri terminale şi astfel ( )2 1pV p= − . Din

construcŃie avem 1 2U p= . Cum 1 pU V = ∅∩ , rezultă că

( ) ( ) ( )1 1 1 2 2 1 2 2 1 2 1 1 2k p pV U V U V p p p k k+ = = + = + − = − = + − =∪ .

Page 79: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

79

Dacă 1k + este număr impar, deci 1 2 1k q+ = + , conform construcŃiei

din demonstraŃia teoremei 4, avem ( )1 1 1 1 1,k q qA X Y U V+ + += ∪ ∪ şi

( )1 1 1,q q qA Y V+ + += este o arborescenŃă binară care are 1q + noduri terminale şi

astfel ( )1 2 1 1 2qV q q+ = + − = . Din construcŃie avem 1 2U q= . Cum

1 1qU V + =∅∩ , rezultă că

( ) ( )1 1 1 1 1 2 2 2 2 1 1 2 1 1 2k q qV U V U V q q q k k+ + += = + = + = + − = + − =∪ .

Din teorema inducŃiei complete rezultă că enunŃul din propoziŃie este adevărat pentru orice *n∈ℕ .

□ DefiniŃie. Fie ( ),A X U= o arborescenŃă binară şi

( ) ( ){ }0 cu 0 si ,...,DT s x X d x l x x s+= ∈ ∃ ∈ = =ℕ

(mulŃimea distanŃelor de la rădăcină la fiecare vârf terminal). Dacă

max min 1DT DT− ≤ , spunem că A este o arborescenŃă binară echilibrată. □

Exemplul 8. Pentru ambele grafuri orientate din exemplul 7 avem { }2,3DT = de unde

max min 3 2 1 1DT DT− = − = ≤ şi astfel ambele grafuri sunt arborescenŃe binare echilibrate.

╬ Teorema 5. Fie ( ),A X U= o arborescenŃă binară. Următoarele

afirmaŃii sunt echivalente: 1. A este o arborescenŃă binară echilibrată; 2. pentru orice x X∈ cu ( ) 0d x+ = , dacă 2mX = , atunci

( )0 ,...,m l x x= şi dacă 12 2m mX +< < , atunci ( ) { }0 ,..., , 1l x x m m∈ + .

DemonstraŃie ⇒

Presupunem că 12 2m mX +≤ < şi există x X∈ , ( ) 0d x+ = şi

( )0 ,...,l x x m< . Presupunând că nivelul ( )0 ,...,l x x este complet, atunci şi

nivelurile anterioare sunt complete şi astfel numărul total de vârfuri din nivelurile 1, 2, ..., ( )0 ,...,l x x este

( )( )

( ),...,0

,..., 1 ,...,0 1 0 02 12 2 ... 2 2 1 2 1

2 1

l x xl x x l x x m− −

+ + + = = − < −−

.

ContradicŃie.

Page 80: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

80

În mod asemănător se arată că se obŃine o contradicŃie dacă presupunem că 12 2m mX +≤ < şi există x X∈ , ( ) 0d x+ = şi ( )0 ,..., 1l x x m> + .

Am arătat astfel că dacă presupunem 12 2m mX +≤ < , atunci pentru orice

x X∈ cu ( ) 0d x+ = avem ( )0 ,..., 1m l x x m≤ ≤ + şi cum ( )0 ,...,l x x ∈ℕ

rezultă ( ) { }0 ,..., , 1l x x m m∈ + .

Putem astfel spune că, în particular, dacă 12 2m mX +< < , atunci

( ) { }0 ,..., , 1l x x m m∈ + , ceea ce demonstrează partea a doua a afirmaŃiei făcute în

enunŃ. Să presupunem că 2mX = . Nivelul k este complet dacă şi numai dacă

toate nivelurile anterioare sunt complete şi astfel numărul de vârfuri din primele k niveluri este 2k . Deoarece 2mX = , rezultă că şi nivelul m este complet şi nu

există vârfuri pe nivelul 1m + . Astfel, toate vârfurile terminale se găsesc pe nivelul m şi astfel max minDT DT m= = , ceea ce implică faptul că pentru orice x X∈ cu ( ) 0d x+ = avem ( )0 ,...,l x x m= .

Dacă orice x X∈ cu ( ) 0d x+ = şi 2mX = avem ( )0 ,...,l x x m= ,

rezultă că

( ) ( ){ } { }0 cu 0 si ,...,DT s x X d x l x x s m+= ∈ ∃ ∈ = = =ℕ .

Astfel max minDT DT m= = şi deci max min 0 1DT DT− = ≤ de unde obŃinem că G este o arborescenŃă binară echilibrată. Dacă orice x X∈ cu ( ) 0d x+ = şi 12 2m mX +< < avem

( ) { }0 ,..., , 1l x x m m∈ + , rezultă că

( ) ( ){ } { }0 cu 0 si ,..., , 1DT s x X d x l x x s m m+= ∈ ∃ ∈ = = = +ℕ .

AstfelminDT m= şi max 1DT m= + , deci max min 1 1DT DT− = ≤ de unde obŃinem că G este o arborescenŃă binară echilibrată.

Page 81: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

81

V. GRAFURI HAMILTONIENE ŞI EULERIENE

5.1. Grafuri Hamiltoniene

DefiniŃie. Fie ( ),G X U= un graf neorentat. Un lanŃ (ciclu) elementar

din G care conŃine toate vârfurile grafului se numeşte lanŃ (ciclu) hamiltonian . □

DefiniŃie. Un graf ( ),G X U= care conŃine cel puŃin un ciclu

hamiltonian se numeşte graf hamiltonian □

Exemplul 1. Se consideră graful ( ),G X U= care are reprezentarea

1

2 3

4 5

6

7 8

Acest graf conŃine ciclul { }1,2,4,7,8,5,6,3,1C = care trece prin toate

vârfurile grafului şi prin urmare este un ciclu hamiltonian. Deoarece graful G conŃine ciclul hamiltonian C , rezultă că graful este un graf hamiltonian.

╬ Aceste noŃiuni se regăsesc şi pentru grafurile orientate sub următoarele

forme.

Page 82: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

82

DefiniŃie. Fie ( ),G X U= un graf orentat. Un lanŃ (drum, ciclu, circuit)

elementar din G care conŃine toate vârfurile grafului se numeşte lanŃ (drum, ciclu, circuit) hamiltonian .

□ DefiniŃie. Un graf ( ),G X U= care conŃine cel puŃin un circuit

hamiltonian se numeşte graf hamiltonian orientat □

Facem observaŃia că problematica grafurilor hamiltoniene este una de complexitate nepolinomială din punctul de vedere al algoritmicii.

Teorema 1. Fie ( ),G X U= un graf neorientat în care 3X n= ≥ şi

pentru orice vârf x X∈ avem ( )2n

d x ≥ . Atunci G este graf hamiltonian.

DemonstraŃie. Fie 3n = , atunci pentru orice vârf x X∈ avem

( ) 31,5

2d x ≥ = , deci ( ) 2d x ≥ . Deoarece { }\ 3 1 2X x = − = , rezultă că pentru

orice x , ( ) 2 1d x X= = − . Cum fiecare x X∈ este conectat cu toate celelalte

vârfuri din X , rezultă că graful este complet, deci 3K , deci putem forma ciclul

[ ]1 2 3 1, , ,C x x x x= care este un ciclu elementar care conŃine toate vârfurile, deci

este hamiltonian. Drept consecinŃă, graful este hamiltonian. Presupunem că avem un graf cu 1X k= + vârfuri şi orice graf cu k

vârfuri care îndeplineşte condiŃiile teoremei este hamiltonian. Fie [ ]1 2 1, ,..., ,kC x x x x= un ciclu elementar care trece prin toate vârfurile

lui ( ),G X U= , mai puŃin vârful 1kx + (eventual scrierea lui C se obŃine printr-o

renumerotare a vârfurilor). Acest ciclu există deoarece subgraful { }( )1\ ,kG X x V+′ = îndeplineşte condiŃiile propoziŃiei şi astfel conŃine un ciclu

hamiltonian. Presupunem că nu exstă i , 1 1i k≤ ≤ − , astfel încât în U să avem

muchiile { }1,i kx x + şi { }1 1,i kx x+ + şi în U nu există nici muchiile { }1 1, kx x + şi

{ }1 1,k kx x+ + (altfel putem introduce vârful în C în poziŃia dintre ix şi 1ix + sau între

kx şi 1x , formându-se un ciclu hamiltonian).

Rezultă atunci că eventualele conectări între 1ix + şi celelalte vârfuri se face

cel puŃin din 3 în 3 vârfuri ale ciclului C şi astfel ( ) 3d x ≤ . ContradicŃie.

Page 83: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

83

Exemplul 2. Considerăm graful orientat ( ),G X U= din figura de mai

jos. Acest graf conŃine ciclul [ ]1,2,4,5,6,3,1C = care trece prin toate cele 6

vârfuri şi astfel este un ciclu hamiltonian. Ca urmare şi graful considerat este unul hamiltonian.

Facem observaŃia că graful G nu conŃine şi circuite hamiltoniene.

1

2 3

4 5

6

5.2. Grafuri euleriene DefiniŃie. Fie ( ),G X U= un graf neorientat. Un ciclu simplu din G se

numeşte ciclu eulerian dacă conŃine toate muchiile lui G . □

DefiniŃie. Graful neorientat ( ),G X U= se numeşte graf eulerian dacă

G conŃine cel puŃin un ciclu eulerian.

□ Exemplul 3. Considerăm graful neorientat G cu următoarea reprezentare

1

2 3

4 5

6 7 8

9

În acest graf putem considera ciclul

Page 84: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

84

{ }1,3,2, 4,6,3, 4,7,8,2,9,8,5,9,1C =

în care nu se repetă nicio muchie şi astfel ciclul este unul simplu. Ciclul C conŃine toate muchiile din graful G şi astfel ciclul C este un ciclu eulerian şi astfel graful este un graf eulerian.

╬ Dacă trecem în cadrul grafurilor orientate avem definiŃia ce urmează DefiniŃie. Fie ( ),G X U= cu U s= un graf orientat Fie

[ ]1 2, ,..., sL m m m= un lanŃ ( ( )1 2, ,..., sD m m m= un drum) simplu, atunci

spunem că lanŃul L (drumul D ) este lanŃ (drum) eulerian. □

Lema 1. Fie ( ),G X U= un graf neorientat, nu neapărat conex. Dacă

pentru orice x X∈ avem ( )d x număr par şi pentru 0x X∈ avem ( )0 0d x ≠ ,

atunci există un ciclu simplu în G care trece prin 0x .

DemonstraŃie. Putem considera, fără a reduce generalitatea că G este conex. În caz contrar demonstraŃia se reduce la existenŃa ciclului într-o componentă conexă a lui G

Cum G este conex şi orice x X∈ avem ( )d x este par, rezultă că pentru

orice x X∈ , ( ) 2d x ≥ . Prin sumare rezultă că ( )2 2x X

U d x X∈

= ≥∑ . Astfel,

folosind propoziŃia 4 din capitolul 2 avem că G este ciclic. Atunci există un ciclu în G care trece printr-un punct 0x . Din acest ciclu se poate extrage un ciclu care

să fie simplu şi care să treacă prin 0x □

Teorema 2. Fie ( ),G X U= un graf neorientat fără vârfuri izolate.

Atunci G este eulerian dacă şi numai dacă G este conex şi pentru orice x X∈ ,

( )d x este număr par.

DemonstraŃie. ⇒ Dacă G este eulerian există în G un ciclu eulerian deci un ciclu simplu

1 2, ,..., pC m m m = . Astfel, toate vârfurile sunt conectate, deci G este conex.

Atunci există cel puŃin o muchie xm cu o extremitate x pentru orice x X∈ .

Cum xm este în ciclul C , rezultă că există i , 1 i p≤ ≤ astfel încât

x im m= . x este extremitate pentru im , atunci este extremitate şi pentru unul din

arcele 1im − sau 1im + şi astfel ( )d x este număr par.

Page 85: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

85

Deoarece pentru orice x X∈ , ( )d x este par, conform lemei 1 rezultă că

există că pentru 0x X∈ există un ciclu simplu care trece prin 0x şi 0x este

arbitrar. Astfel,G conŃine un ciclu eulerian, deci G este graf eulerian. □

Teorema 3. Fie ( ),G X U= un graf conex. Următoarele afirmaŃii sunt

echivalente: 1. G conŃine un ciclu eulerian. 2. Orice x X∈ , ( )d x este număr par.

3. Există 1 2, ,...,i i iii p

C m m m = cicluri, i

jm U∈ , 1, 2,..., ij p= ,

1,2,...,i k= , astfel încât notând { }1 2, ,...,i i iii p

U m m m= avem

i jU U =∅∩ pentru orice 1 ,i j k≤ ≤ , i j≠ şi 1

k

i

i

U U=

=∪ (mulŃimea

muchiilor poate fi partiŃionată în cicluri). DemonstraŃie

1 2⇔

Această echivalenŃă este asigurată prin teorema 2. 1 3⇒

Fie 1 2, ,..., pC m m m = ciclul euclidian care există deoarece G este graf

eulerian. Dacă C este ciclu elementar, el trece o singură dată prin fiecare vârf, iar eliminarea oricărei muchii întrerupe ciclul. Astfel avem 1k = şi 1U U= .

Presupunem că C nu este elementar. Atunci există x X∈ astfel încât x apare de două ori în scrierea lui C în funcŃie de vârfuri. Considerăm primul astfel de vârf în sensul că dacă x şi y sunt două astfel de vârfuri îl aleg pe cel pentru care distanŃa între cele două apariŃii este cea mai mică. Atunci în scrierea lui C prin muchii, există 1i şi 2i astfel încât x este

extremitate pentru 1i

m şi 11im + . De asemenea, x este extremitate pentru

2im şi

12im + . Putem forma astfel ciclurile 1 11 2

,...,i iC m m+ = şi

1 11 2,..., , ,...,i i pC m m m m+

′ = .

Page 86: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

86

Din alegerea lui x rezultă că 1C este un ciclu elementar. Cum C este

simplu, rezultă că dacă { }1 11 2,...,i iU m m+= şi { }1 11 2

,..., , ,...,i i pU m m m m+′ = ,

atunci 1U U U ′= ∪ şi 1U U ′ = ∅∩ , deci are loc o partiŃionare a lui U .

Putem repeta raŃionamentul anterior cu C′ în loc de C până când toate ciclurile sunt elementare şi astfel se obŃine partiŃia căutată.

□ Corolar 1. Fie ( ),G X U= un graf conex. G conŃine un lanŃ eulerian

dacă şi numai dacă cel mult două vârfuri ale lui G au gradul impar. DemonstraŃie

⇒ Presupunem că G conŃine un lanŃ euclidian deci un lanŃ simplu care conŃine toate muchiile din G . Fie 1x şi 2x extremităŃile acestui lanŃ. Considerăm

graful { }{ }( )1 2, ,G X U x x′ = ∪ . Prin adăugarea muchiei { }1 2,x x la lanŃul

euclidian se obŃine un ciclu euclidian şi astfel G′ este un graf euclidian. Coform teoremei 3, orice vârf din G′ are gradul par, deci în G′ avem în particular că ( )1d x şi ( )2d x sunt numere pare. Prin eliminarea muchiei { }1 2,x x ,

rezultă că în G avem că ( )1d x şi ( )2d x sunt numere impare, gradele celorlalte

vârfuri rămânând pare, deci cel mult două vârfuri din G au gradele impare.

⇐ Din propoziŃia 2 capitolul 1, avem că G are cel mult două vârfuri cu grad

impar, implică faptul că numărul vârfurilor cu grad impar este 0 sau 2. Dacă numărul vârfurilor cu grad impar este 0, rezultă că toate vârfurile au

gradul par şi atunci conform teoremei 3, rezultă că G conŃine un ciclu eulerian, deci un lanŃ eulerian.

Dacă numărul vârfurilor cu gradul impar este 2, fie 1x şi 2x aceste vârfuri.

Construim graful { }{ }( )1 2, ,G X U x x′ = ∪ . Pentru G′ avem că este conex şi are

toate gradele pare şi atunci, conform lemei 1, rezultă că G′ conŃine un ciclu eulerian deci care conŃine toate muchiile din G′ .

Eliminăm din acest ciclu muchia { }1 2,x x , se obŃine un lanŃ simplu care

conŃine toate muchiile din G , deci un lanŃ euclidian. □

Page 87: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

87

Corolar 2. Fie ( ),G X U= un graf conex cu 2k vârfuri de grad impar,

0k > . Atunci există 1 2, ,...,i i iii p

L m m m = lanŃ deschis, i

jm U∈ , 1, 2,..., ij p= ,

1,2,...,i k= , astfel încât notând { }1 2, ,...,i i iii p

U m m m= avem i jU U =∅∩

pentru orice 1 ,i j k≤ ≤ , i j≠ şi 1

k

i

i

U U=

=∪ (mulŃimea muchiilor poate fi

partiŃionată în exact k lanŃuri deschise). DemonstraŃie. Acest rezultat este o generalizare a corolarului 1 în termenii punctului 3 din teorema 3.

Page 88: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

88

VI. ALGORITMI PENTRU DRUMURI ÎN GRAFURI ORIENTATE

6.1. Algoritmi de calcul direct

Pentru calculul direct a matricii drumurilor putem folosi, în primul rând, operaŃiile + şi i definite în capitolul 3.

Algoritmul are la bază propoziŃia 5 din capitolul 3 şi are forma următoare. Algoritmul 1.

1. Considerăm 1i = , D A= şi T A= . 2. Dacă i n> algoritmul se opreşte, D conŃine matricea drumurilor din G ,

altfel se continuă. 3. Considerăm 1i i= + şi calculăm T T A= i folosind operaŃiile + şi i .

4. Calculăm D D T= + folosind operaŃia + . 5. Reluăm cu pasul 2.

■ łinând cont că operaŃiile sunt de factură logică deci cu aceeaşi complexitate, în pasul 3 se realizează o înmulŃire de matrici logice şi astfel pentru fiecare element al matricii rezultate se fac 2n operaŃii logice. Cum matricile cu care lucrăm sunt matrici pătrate de ordin n , fiecare aplicare a pasului 3 implică

2 32 2n n n× = operaŃii logice. La pasul 4 se realizează o adunare de matrici logice, deci pentru aplicarea sa se folosesc 2n operaŃii logice. Ca urmare, la o iterare a paşilor 2, 3, 4 şi 5 se folosesc în total 3 22n n+ operaŃii logice. Pentru terminarea algoritmului se aplică 1n − iteraŃii şi astfel numărul total

de operaŃii logice necesare terminării algoritmului este ( )( )3 22 1n n n+ − , ceea ce

conduce la un polinom de grad 4 având coeficientul principal egal cu 2. Putem astfel să tragem următoarea concluzie: Teorema 1. Fie ( ),G X U= un grad orientat cu matricea de adiacenŃă

A şi cu X n= . Algoritmul 1 produce matricea drumurilor din G şi are

complexitatea ( )42O n .

□ Exemplul 1. Considerăm graful orientat ( ),G X U= , unde { }1,2,3X =

şi ( ) ( ) ( ) ( ){ }1,2 , 1,3 , 2,1 , 3,3U = . Graful are reprezentarea

Page 89: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

89

1 2

3

Matricea de adiacenŃă a grafului este 0 1 11 0 00 0 1

A

=

La inceputul aplicării algoritmului se fac iniŃializările 1i = şi 0 1 11 0 00 0 1

D T A

= = =

Deoarece 3i < se continuă cu aplicarea algoritmului şi făcând 2i = se calculează

0 1 1 0 1 1 1 0 11 0 0 1 0 0 0 1 10 0 1 0 0 1 0 0 1

T T A

= = =

i i

şi 0 1 1 1 0 1 1 1 11 0 0 0 1 1 1 1 10 0 1 0 0 1 0 0 1

D D T

= + = + =

Reluând pasul 2 relaŃia 2 3> este falsă şi vom relua calculele cu noile valori pentru matricile T şi D . ObŃinem 3i = şi

1 0 1 0 1 1 0 1 10 1 1 1 0 0 1 0 10 0 1 0 0 1 0 0 1

T T A

= = =

i i ,

1 1 1 0 1 1 1 1 11 1 1 1 0 1 1 1 10 0 1 0 0 1 0 0 1

D D T

= + = + =

.

Page 90: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

90

Putem face observaŃia că matricea D nu se modifică la aplicarea acestei iteraŃii. Continuând aplicarea algoritmului până ce ajungem la 4i = , această matrice continuă să nu se modifice, astfel că

1 1 11 1 10 0 1

D

=

este matricea drumurilor din graful G ╬

Acest algoritm poate fi considerat şi sub următoarea formă. Algoritmul 1’.

1. Considerăm D A= . 2. Pentru 1, 2,...,i n= şi pentru 1, 2,...,j n= se execută pasul 4. 3. Algoritmul se opreşte; D conŃine matricea drumurilor lui G . 4. Dacă 0ijd = , atunci pentru 1, 2,...,k n= se execută pasul 5 altfel se

continuă. 5. Se calculează ik ik jkd d d= + .

■ Exemplul 2. Pentru graful următor

1

2

3 4

5

matricea de adiacenŃă asociată este 0 1 0 0 10 0 1 1 00 0 0 1 01 0 0 0 10 0 1 0 0

A

=

.

Să determinăm matricea drumurilor D . 1. Construim linia 1 a matricii D pornind de la linia 1 a matricii A . Observăm că

12 1a = şi 15 1a = , restul elementelor fiind egale cu zero.

Atunci adunăm boolean linia 1 din A cu liniile 2 şi 5 ale matricii A

Page 91: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

91

( ) 11110:

001000110010010

:

:

:

21

__________________________

5

2

1

l

l

l

l

Observăm că linia (2)1l diferă de l1 prin elementul generat pe poziŃiile ( )2

13 1d =

şi ( )214 1d = . Adunăm boolean linia ( )2

1l cu liniile 3 şi 4 din A . ( )

( ) 11111:

100010100010010

:

::

31

__________________________

4

3

21

l

l

l

l

Observăm că s-a obŃinut o linie cu toate elementele egale cu 1, deci, linia 1 a matricii D va fi ( ) 11111:1

Dl

2. Pentru linia 2 a matricii D observăm că 23 1a = , 24 1a = , restul elementelor

fiind egale cu zero. Adunăm boolean linia 2 din A cu liniile 3 şi 4 .

( ) 11101:

100010100001100

:

:

:

22

__________________________

4

3

2

l

l

l

l

Observăm că linia ( )22l diferă de linia 2 prin elementele generate de poziŃiile

(2)21 1d = şi (2)

25 1d = . Adunăm boolean (2)2l cu liniile 1 şi 5 .

( )

( ) 11111:

001001001011101

:

::

32

__________________________

5

1

22

l

l

l

l

Am obŃinut toate elementele egale cu 1, deci ( ) 11111:2Dl

Similar pentru liniile 3, 4, 5 şi obŃinem matricea D

Page 92: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

92

=

1111111111111111111111111

D

╬ O altă modalitate de calcul direct foloseşte operaŃiile uzuale definite pe mulŃimea numerelor naturale. Algoritmul se bazează pe propoziŃia 6 din capitalul 3 şi pe legătura care există între matricile GD şi GND . Algoritmul are forma următoare. Algoritmul 2.

1. Considerăm 1i = , D A= şi T A= . 2. Dacă i n> se trece la pasul 6, altfel se continuă. 3. Considerăm 1i i= + şi calculăm T T A= i folosind operaŃiile uzuale de

adunare şi înmulŃire a numerelor întregi. 4. Calculăm D D T= + folosind operaŃia de adunare a numerelor întregi. 5. Reluăm cu pasul 2. 6. Pentru fiecare 1,2,...,i n= şi fiecare 1,2,...,j n= se execută pasul 8. 7. Algoritmul se opreşte, D conŃine matricea drumurilor din G 8. Dacă 0ijd ≠ , atunci face 1ijd = , altfel se continuă.

■ Algoritmul 1 este cunoscut sub numele de Algoritmul lui Wharshal pentru determinarea matricii drumurilor. Exemplul 3. Considerăm graful ( ),G X U= dat prin { }1,2,3,4X = ,

( ) ( ) ( ) ( ) ( ){ }1,2 , 1,3 , 2,3 , 3,4 , 4,1U = şi care are reprezentarea

1 2

3 4

Acest graf are matricea de incidenŃă

Page 93: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

93

0 1 1 00 0 1 00 0 0 11 0 0 0

A

=

La debutul aplicării algoritmului 2 se fac iniŃializările 1i = şi 0 1 1 00 0 1 00 0 0 11 0 0 0

D T A

= = =

Deoarece relaŃia 1 4> nu este indeplinită se aplică prima iteraŃie a algoritmului, pentru 2i = şi se obŃin matricile

0 1 1 0 0 1 1 0 0 0 1 10 0 1 0 0 0 1 0 0 0 0 10 0 0 1 0 0 0 1 1 0 0 01 0 0 0 1 0 0 0 0 1 1 0

T TA

= = =

şi 0 1 1 0 0 0 1 1 0 1 2 10 0 1 0 0 0 0 1 0 0 2 10 0 0 1 1 0 0 0 1 0 0 11 0 0 0 0 1 1 0 1 1 1 0

D D T

= + = + =

La reluarea algoritmului de la pasul 2, relaŃia 2 4> este falsă şi se continuă cu iteraŃia a doua, pentru 3i = şi în care se obŃin matricile

0 0 1 1 0 1 1 0 1 0 0 10 0 0 1 0 0 1 0 1 0 0 01 0 0 0 0 0 0 1 0 1 1 00 1 1 0 1 0 0 0 0 0 1 1

T TA

= = =

,

0 1 2 1 1 0 0 1 1 1 2 20 0 2 1 1 0 0 0 1 0 2 11 0 0 1 0 1 1 0 1 1 1 11 1 1 0 0 0 1 1 1 1 2 1

D D T

= + = + =

.

RelaŃia de la pasul 2 este acum 3 4> şi continuă să fie falsă generând a treia iteraŃie a algoritmului 2, pentru valoarea 4i = . În acest caz se obŃin următoarele matrici

Page 94: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

94

1 0 0 1 0 1 1 0 1 1 1 01 0 0 0 0 0 1 0 0 1 1 00 1 1 0 0 0 0 1 0 0 1 10 0 1 1 1 0 0 0 1 0 0 1

T TA

= = =

,

1 1 2 2 1 1 1 0 2 2 3 21 0 2 1 0 1 1 0 2 1 3 21 1 1 1 0 0 1 1 1 1 2 21 1 2 1 1 0 0 1 2 1 2 2

D D T

= + = + =

.

Algoritmul revine la pasul 2 pentru a realiza o nouă iteraŃie de calcul. Putem observa însă că ultima matrice D obŃinută are toate elementele nenule, astfel că dacă trecem acum direct la pasul 8 se obŃine deja o matrice cu toate elementele egale cu unu, deci există drumuri între oricare două vârfuri. Avem deci matricea drumurilor

1 1 1 11 1 1 11 1 1 11 1 1 1

D

=

Din forma matricii drumurilor putem trage şi concluzia că graful dat este tare conex.

6.2. Algoritmul Wharshal pentru drumuri minime în grafuri orientate De o mare aplicabilitate practică este o problemă de drumuri relativă la grafurile ponderate. Fie ( ),G X U= un graf ponderat, deci un graf orientat în care

U X M X⊂ × × , M fiind mulŃimea 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 Up

∈=

+∞.

Matricea poartă numele de matricea ponderilor grafului G . În graful G se poate defini astfel noŃiunea de lungime a unui drum

( ) ( ) ( )( )2 3 11 1 2 2 2 3 1, , , , , ,..., , ,

ki i i i i i i i i i i ik k kd x m x x m x x m x

++= ,

notată prin ( )L d = , şi dată prin relaŃia

Page 95: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

95

( )1

1

k

i ij jj

L d m+

=

=∑ .

Pentru orice ,x y X∈ , putem defini mulŃimea drumurilor de la x la y ca

fiind mulŃimea ( ) ( ){ }0 1, , ,..., drum in kD x y d x x x x y d G= = = = .

O problemă importantă este de a determina în G drumurile minime între vârfuri. Pentru acest lucru vom defini matricea drumurilor minime, notată

( )min

1 ,G ij i j nD d

≤ ≤= , unde

( )( )

,minij

d D x xi j

d L d∈

=

. Folosind aceste notaŃii, pentru determinarea matricii minGD a drumurilor

minime se poate face folosind Algoritmul Wharshal pentru drumuri minime, adică:

Algoritmul 3. 1. Considerăm 1i = (prelucrăm linia i ), D P= . 2. Dacă i n> , atunci algoritmul se termină şi

minGD D= , altfel se continuă.

3. Pentru fiecare 1,2,...,j n= se aplică pasul 5. 4. Facem 1i i= + (trecem la următoarea linie) şi trecem la pasul 2. 5. Dacă ijd = +∞ , atunci se continuă, altfel se înlocuieşte linia i cu minimul

dintre liniia i şi linia obŃinută din linia j prin adăugarea valorii ijd la

fiecare element. ■

OperaŃiile realizate în acest algoritm sunt de adunare şi de comparare în vedea obŃinerii minimului. OperaŃia cea mai costisitoare este cea de comparare astfel că, pentru exprimarea complexităŃii, ne vom referi în special la numărul de comparaŃii realizate. La pasul 5 al algoritmului se determină un vector al minimelor pe componente dintre doi vectori de dimensiune n şi astfel numărul de comparaŃii este n .

Conform pasului 3, pasul 5 se realizează pentru fiecare din valorile 1,2,...,j n= , deci de n ori şi astfel pasul 3 conduce la realizarea unui număr total

de 2n comparaŃii. Paşii 2, 3 şi 4 sunt realizaŃi pentru fiecare valoare a lui i , începând cu valoarea 1 până la îndeplinirea condiŃiei i n> , deci de n . Cum în pasul 4 nu se realizează comparaŃii, în pasul 2 se face o singură comparaŃie, iar în pasul 3 se fac

2n , rezultă că numărul total de comparaŃii este 3n n+ . RaŃionamentul de mai sus conduce la următorul rezultat.

Page 96: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

96

Teorema 2. Dacă ( ),G X U= este un graf orientat ponderat cu P

matricea ponderilor dată pe mulŃimea de ponderi M şi X n= . Algoritmul 3

producea matricea drumurilor minime din graful G şi are complexitatea ( )3O n

exprimată ca număr de comparaŃii.

□ Exemplul 4. Considerăm graful orientat ponderat ( ),G X U= pentru care

{ }1,2,3,4,5X = şi

( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1,4,3 , 2,3,1 , 2,7,5 , 3,7,4 , 4,6, 2 , 5,9,4 , 5,6,1U = .

Graful are reprezentarea

1 2

3 4 5

3

4

7 6

7

9

6

Matricea ponderilor grafului este

43 7

76

6 9

P

+∞ +∞ +∞ +∞ +∞ +∞ +∞ = +∞ +∞ +∞ +∞ +∞ +∞ +∞ +∞

+∞ +∞ +∞

Conform algoritmului considerăm 1i = (prelucrăm prima linie) şi 4

3 77

66 9

D P

+∞ +∞ +∞ +∞ +∞ +∞ +∞ = = +∞ +∞ +∞ +∞ +∞ +∞ +∞ +∞

+∞ +∞ +∞

Linia 1 este ( )1 4L = +∞ +∞ +∞ +∞ . Pentru 1j = şi 2j = avem

1 jd = ∞ şi ajungem la 3j = când 13 7d = ≠ ∞ iar linia 3 este

( )3 7L = +∞ +∞ +∞ +∞ . Astfel prin adăugarea valorii 4 la fiecare

Page 97: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

97

element din linia 3 se obŃine ( )3 11L′ = +∞ +∞ +∞ +∞ . Considerând acum

{ }1 3min ,L L′ obŃinem noua linie 1 dată prin ( )1 4 11L = +∞ +∞ +∞ .

Pentru 4j = avem acum 14 11d = ≠ ∞ iar linia 4 este

( )4 6L = +∞ +∞ +∞ +∞ . Adunând valoarea 11 se obŃine

( )4 17L′ = +∞ +∞ +∞ +∞ şi prin { }1 4min ,L L′ noua linie 1 este

( )1 17 4 11L = +∞ +∞ .

În linia 1 s-a format valoarea 17 corespunzătoare lui 2j = pentru care

linia 2 este ( )2 3 7L = +∞ +∞ +∞ . Prin adăugarea valorii 17 la elementele

din linia 2 se obŃine ( )2 20 24L′ = +∞ +∞ +∞ . Aplicând { }1 2min ,L L′

obŃinem ( )1 20 17 4 11 24L = . Deoarece linia 1 a fost completată, putem

scrie acum că matricea D a ajuns la forma 20 17 4 11 243 7

76

6 9

D

+∞ +∞ +∞ = +∞ +∞ +∞ +∞ +∞ +∞ +∞ +∞

+∞ +∞ +∞

Facem 2i = şi deoarece 2 5> este falsă se trece la prelucrarea liniei 2 care are forma ( )2 3 7L = +∞ +∞ +∞ . Pentru 1j = avem 21 3d = ≠ ∞ şi

considerd linia 1 la care se adaugă valoarea 3 se obŃine ( )1 23 20 7 14 27L′ = . Aplicând relaŃia { }2 1min ,L L′ se obŃine

( )2 3 20 7 14 7L = .

Pentru 3j = , 23 7d = ≠ ∞ şi adăugând 7 la linia 3 obŃinem

( )3 14L′ = +∞ +∞ +∞ +∞ . Din { }2 3min ,L L′ linia 2 existentă nu se

modifică. Când luăm 4j = , 24 14d = ≠ ∞ şi prin adunarea valorii 14 la linia 4 avem

( )4 20L′ = +∞ +∞ +∞ +∞ . Acum folosind minimul, linia 2 existentă nu se

modifică. Pentru 5j = , cu 25 7d = ≠ ∞ obŃinem ( )5 13 16L′ = +∞ +∞ +∞

iar aplicarea minimului nu modifica linia 2 obŃinută. Am ajuns astfel la o matrice

Page 98: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

98

20 17 4 11 243 20 7 14 7

76

6 9

D

= +∞ +∞ +∞ +∞ +∞ +∞ +∞ +∞

+∞ +∞ +∞

Algoritmul va continua în modul prezentat mai sus, terminarea exemplului fiind lăsată ca exerciŃiu pentru cititor.

6.3. Algoritmul lui Dantzig pentru drumuri minime de extremitate iniŃială dată

Acest algoritm determină toate drumurile de lungime minimă care pornesc de la un vârf dat şi ajung la toate celelalte vârfuri. Se consideră un graf orientat ( ),G X U= având X n= . Fie ix X∈ un

vârf considerat iniŃial pentru toate drumurile pe dare dorim să le determinăm. Fie

( )1 ,ij i j n

P p≤ ≤

= matricea ponderilor definită ca mai sus.

Se consideră următorul proces de calcul: Algoritmul 4.

1. Considerăm 1m = , { }m iX x= şi ( ) 0ic x = .

2. Dacă ( ) 0md X+ = , atunci ne oprim; altfel se continuă.

3. Pentru orice arc ( ),j kx x U∈ pentru care j mx X∈ şi k mx X∉ se

calculează valoarea ( )jk jk jd p c x= +

4. Calculăm min jkx Xmjx Xmk

d d∈∉

= .

5. Pentru fiecare k astfel încât jkd d= considerăm ( )kc x d= şi

{ }1m m kX X x+ = ∪ . Facem 1m m= + şi trecem la pasul 2.

■ În urma execuŃiei acestui proces, m este numărul de vârfuri atinse din vârful ix , mX este mulŃimea acestor noduri şi pentru fiecare mx X∈ valoarea

( )c x indică lungimea unui drum minim de extremitate iniŃială ix şi extremitate

finală x . Procesul se termină în cel mult 1n − repetări ale paşilor 2, 3, 4 şi 5 deoarece la pasul 5 se adaugă cel puŃin câte un vârf la mulŃimea mX .

Page 99: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

99

Exemplul 5. Considerăm un graf orientat ponderat ( ),G X U= pentru

care { }1,2,3,4X = şi ( ) ( ) ( ) ( ) ( ){ }1,3,2 , 1,4,3 , 2,5,3 , 3,5, 4 , 4,3,1U = . Graful

are reprezentarea

1 2

3 4

3

4 5

5

3

Matricea ponderilor care se obŃine din specificaŃiile grafului este

3 45

53

P

+∞ +∞ +∞ +∞ +∞ = +∞ +∞ +∞

+∞ +∞ +∞

Considerăm că dorim să determinăm drumurile care au extremitatea iniŃială 1 şi facem iniŃializările 1m = , { }1 1X = şi ( )1 0c = . Avem ( )1 2d X+ = şi astfel

facem prima prima iteraŃie din algoritm. Arcele care au extremitatea iniŃială în 1X sunt ( )1,2 şi ( )1,3 . Atunci

calculăm 12 3 0 3d = + = şi 13 4 0 4d = + = . Minimul valorilor calculate este

{ }min 3,4 3d = = şi se atinge pentru 12d . Astfel, considerăm ( )2 3c = şi

{ }2 1,2X = . După ce facem 2m = determinăm ( )2 2d X+ = şi deoarece această

valoare nu este egală cu zero, aplicăm a doua iteraŃie a algoritmului. Arcele care au extremitatea iniŃială în 2X sunt ( )1,3 şi ( )2,3 . Atunci

calculăm 13 4 0 4d = + = şi 23 5 3 8d = + = . Prin aplicarea minimului se obŃine

{ }min 4,8 4d = = care este atins pentru 13d . Din această cauză considerăm

( )3 4c = şi { }3 1,2,3X = . Facem 3m = şi avem ( )3 1d X+ = ceea ce face să

aplicăm a treia iteraŃie a algoritmului. Arcul cu extremitatea iniŃială în 3X este ( )3,4 astfel că

34 5 4 9d d= = + = , de unde ( )4 9c = şi { }4 1,2,3, 4X = . Deoarece

( )4 0d X+ = algoritmul se termină.

Page 100: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

100

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, ,..., nX x x x= . Putem

presupune că dorim să determinăm drumurile de extremitate finală nx . Acest lucru

nu restrânge generalitatea deoarece putem găsi un izomorfism f de grafuri orientate astfel încât dacă dorim să determinăm drumurile cu extremitatea finală

ix să avem ( )i nf x x= .

Considerăm că ( )1 ,ij i j n

P p≤ ≤

= este matricea ponderilor pentru graful G .

Pentru realizarea algoritmului Bellman-Kalaba, construim o versiune modificată a matricii ponderilor, matricea ( )

1 ,ij i j nW 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 Up i j

w i ji j

i j x m x U

≠ ∈≠

= = = = ∞ ≠ ∉

.

Algoritmul 5. Etapa 1

Se construieşte matricea extinsă a valorilor arcelor ( ), 1,ij i j n

W w=

= .

Construim un tabel în care liniile sunt liniile matricii , notat ( )1i i nL L

≤ ≤= , unde iL

este linia i a tabelului. La tabelul format se adaugă linia 1nL + care este transpusa

coloanei n din matricea W . Etapa 2

Se adaugă tabelului L , liniile suplimentare iL , 2, 3,...i n n= + + , astfel:

a) presupunând completată linia kL se completează linia 1kL + conform relaŃiei:

{ }( )1, , 1, ,1,...,min , mink j k j k t k t

t nL L w L+ +=

= + .

b) se continuă aplicarea punctului (a) până la obŃinerea a două linii kL şi 1kL +

identice.

Page 101: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

101

Etapa 3

Se determină regresiv drumul minim de la ix la nx astfel:

- se adună linia „ i ” din L cu linia 1kL + urmărindu-se rezultatul minim ce se

poate obŃine. Să presupunem că 1, 1,k i ij k iL w L+ += + , atunci primul arc din

drumul minim de la ix la nx este arcul ( )ji xx , ;

- se adaugă linia „ j ” din L cu 1kL + reŃinând valoare minimă, aflată de

exemplu pe coloana „ k ”, atunci al doilea arc va fi ( )kj xx , ş.a.m.d. Ultimul

succesor determinat va fi nx . ■

PropoziŃia 1. Pentru orice *k ∈ℕ avem

{ }1, ,1,mink i ij k jj n

L v L+=

= +

DemonstraŃie. Este evident că un drum de cel mult 1+k arce cu destinaŃia nx se poate

obŃine dintr-un drum de cel mult k arce cu destinaŃia nx , prin adăugarea unui arc la începutul său. Deci:

( ){ } { }1, ,1, 1,min min mink i ij k ij k j

dj n j nk

L v w d v L+= =

= + = + .

□ PropoziŃia 2. Dacă există

*k ∈ℕ pentru care , 1,k i k iL L += , pentru orice

1 i n≤ ≤ , atunci , ,k i s iL L= , pentru orice 1 i n≤ ≤ şi orice 1s k≥ + .

DemonstraŃie. Demonstrăm prin inducŃie după s . Pentru 1+= ks proprietatea este adevărată conform enunŃului.

Presupunând proprietatea adevărată pentru o valoare hs ≤ avem:

{ } { }1, , , 1,1, 1,

min minh i ij h i ij k i k ij n j n

L v L v L L+ += =

= + = + = .

□ Numărul maxim de aplicări ale celei de-a doua etape este cel mult egal cu numărul de vârfuri minus 1, deci 1 1n X− = − de unde rezultă şi că numărul de

paşi ale procesului descris mai sus este finit, deci el este într-adevăr un algoritm. La fiecare aplicare a pasului (a) din etapa a doua se calculează

{ }1, ,1,...,min k t k tt n

w L+=+ pentru acest lucru fiind necesare un număr de n comparaŃii.

Astfel pentru a calcula { }( )1, , 1, ,1,...,min , mink j k j k t k t

t nL L w L+ +=

= + sunt necesare 1n +

comparaŃii.

Page 102: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

102

Din cele de mai sus rezultă că numărul maxim de comparaŃii necesare trecerii la etapa a treia este ( )( ) 21 1 1n n n− + = − .

În etapa a treia, pentru a determina drumul de lungime minimă de la ix la

nx , se produc maxim 1n − comparaŃii. Astfel, pentru a determina drumurile

minime între orice nod ix şi nx , cu 1 1i n≤ ≤ − sunt necesare

( )2 21 2 1n n n− = − + .

Deoarece etapele 2 şi 3 din algoritm sunt independente, rezultă că numărul maxim de comparaŃii prin care algoritmul se termină este 22 2n n− .

Pe baza analizei făcute şi Ńinând cont de propoziŃiile 1 şi 2 de mai sus putem da următorul enunŃ.

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ă nx şi complexitatea algoritmului este ( )22O n exprimată ca

număr maxim de comparaŃii. □

Exemplul 6. Fie un graf ( ),G X U= cu { }1,2,3, 4,5,6,7X = , iar pe

arce este marcată ponderea fiecărui arc. Dorim să determinăm drumul minim dintre vârfurile 1 şi 7. Graful considerat este prezentat în imaginea de mai jos

1

2

3

4

5

6

7

2

6

4

1 4

11

9

11

6

4

9

14

19

13

Etapa 1

Construim matricea W a valorilor arcelor şi continuăm tabelul adăugând liniile conform calculelor prezentate mai jos. Totul se poate rezuma sub forma tabelului prezentat în continuare

Page 103: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

103

1 2 3 4 5 6 7 1 0 2 6 11 ∞ ∞ ∞ 2 ∞ 0 4 3 9 ∞ ∞ 3 ∞ ∞ 0 1 ∞ 11 ∞ 4 ∞ ∞ ∞ 0 ∞ ∞ 9 5 ∞ ∞ ∞ 6 0 14 19 6 ∞ ∞ ∞ 4 ∞ 0 13 7 ∞ ∞ ∞ ∞ ∞ ∞ 0 ( )( )1im ∞ ∞ ∞ 9 19 13 0 ( )( )2im 20 12 10 9 15 13 0 ( )( )3im 14 12 10 9 15 13 0 ( )( )4im 14 12 10 9 15 13 0

Etapa 2

a) adăugăm ( )1iL la matricea W , care este transpusă coloanei ( )7 1,j j n

w=

;

b) completăm matricea W cu liniile ( )2iL , ( )3

iL , ( )4iL ştiind că

( ) ( ){ }1

1,7mink k

i ij jj

L w L+

== +

Aşadar pentru linia ( )2iL , primul element ( )2

1L se determină adunând

elementele liniei 1 a matricii W cu cele ale liniei ( )1iL , cea mai mică fiind

elementul căutat. ( ) ( ){ }

{ }

211 1,7

min

min 0 , 2, 6,11 9,19 ,13 ,0 20

k

j jj

w LL == + =

+∞ ∞+ ∞ + + +∞ +∞ +∞ =

( ) ( ){ }{ }

222 1,7

min

min , 0, 4,9 3,9 19,13 , 0 12

k

j jj

w LL == + =

∞ +∞ ∞+ ∞+ + + +∞ ∞+ =

( ) ( ){ }{ }

233 1,7

min

min , , 0,9 1,19 ,13 11,0 10

k

j jj

w LL == + =

∞ +∞ ∞+∞ ∞+ + +∞ + +∞ =

( ) ( ){ }{ }

244 1,7

min

min , , ,9 0,19 ,11 13, 0 9

k

j jj

w LL == + =

∞ +∞ ∞+∞ ∞+∞ + +∞ + ∞+ =

Page 104: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

104

( ) ( ){ }{ }

255 1,7

min

min , , ,9 6,19 0,14 13,19 0 15

k

j jj

w LL == + =

∞ +∞ ∞+∞ ∞+∞ + + + + =

( ) ( ){ }{ }

266 1,7

min

min , , ,9 4,19 ,13 0,13 0 13

k

j jj

w LL == + =

∞ +∞ ∞+∞ ∞+∞ + +∞ + + =

( ) ( ){ }{ }

277 1,7

min

min , , ,9 , 19, 13,0 0 0

k

j jj

w LL == + =

∞ +∞ ∞+∞ ∞+∞ +∞ ∞+ ∞+ + =

Pentru linia ( )3iL vom avea ( ) ( ){ }3 2

1,7mini ij jj

L w L=

= + :

( ) { }31 min 20 0,12 2,10 6,9 11,15 ,13 ,0 14L = + + + + +∞ +∞ +∞ = ( ) { }32 min 20 ,12 0,10 4,9 3,9 15,13 , 0 12L = +∞ + + + + +∞ ∞+ = ( ) { }33 min 20 ,12 ,10 0,9 1,15 ,13 11,0 10L = +∞ +∞ + + +∞ + +∞ = ( ) { }34 min 20 ,12 ,10 ,9 0,15 , 13,0 9 9L = +∞ +∞ +∞ + +∞ ∞+ + =

( ) { }35 min 20 ,12 ,10 ,9 6,15 0,13 14,0 19 15L = +∞ +∞ +∞ + + + + = ( ) { }36 min 20 ,12 ,10 ,9 4,15 ,13 0,0 13 13L = +∞ +∞ +∞ + +∞ + + = ( ) { }37 min 20 ,12 ,10 ,9 ,15 ,13 ,0 0 0L = +∞ +∞ +∞ +∞ +∞ +∞ + =

Pentru linia ( )4iL vom avea ( ) ( ){ }4 3

1,7mini ij jj

L w L=

= + :

( ) { }41 min 14 0,12 2,10 6,9 11,15 ,13 ,0 14L = + + + + +∞ +∞ +∞ = ( ) { }42 min 14 ,12 2,10 4,9 3,15 9,13 , 0 12L = +∞ + + + + +∞ ∞+ =

( ) { }43 min 14 ,12 ,10 0,9 1,15 ,13 11, 0 10L = +∞ +∞ + + +∞ + ∞+ = ( ) { }44 min 14 ,12 ,10 ,9 0,15 ,13 ,0 9 9L = +∞ +∞ +∞ + +∞ +∞ + =

( ) { }45 min 14 ,12 ,10 ,9 6,15 0,13 14,0 19 15L = +∞ +∞ +∞ + + + + = ( ) { }46 min 14 ,12 ,10 ,9 4,15 ,13 0,0 13 13L = +∞ +∞ +∞ + +∞ + + = ( ) { }47 min 14 ,12 ,10 ,9 ,15 ,13 ,0 0 0L = +∞ +∞ +∞ +∞ +∞ +∞ + =

Observăm că liniile ( )3iL şi ( )4

iL coincid, iteraŃiile se opresc.

Elementele lui ( )4iL reprezintă valoarea minimă a fiecărei drum care ajunge

în vârful 7.

Page 105: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

105

Etapa 3

Se adună linia 1 din W cu ( )4iL urmărindu-se rezultatul minim, care este 14 ,

primul arc va fi ( )1,2 .

Se adună linia 2 din W cu ( )4iL , rezultatul fiind 12 , al doilea arc va fi

( )2,4 .

Se adună linia 4 din W cu ( )4iL , rezultatul minim fiind 9 , arcul

corespunzător va fi ( )4,7 .

Deci drumul minim de la 1x la 7x va fi ( )1,2,4,7d = cu valoarea 17.

6.4. Algoritmii lui Ford şi Dijkstra pentru drumuri minime de extremităŃi date

Comparativ cu algoritmii prezentaŃi mai sus următorul algoritm se foloseşte pentru cazul în care ambele extremităŃi ale drumului căutat sunt fixate. Fie ( ),G X U= un graf orientat şi ix , jx două vârfuri. Dorim să

determinăm un drum optim de la ix la jx . Datorită izomorfismelor de grafuri,

putem considera că determinăm un drum de la 1x la nx , fără a restrânge generalitatea procesului de determinare. Calculul se realizează în trei faze, una de iniŃializare, una de calcul efectiv şi una de obŃinere a drumul minim dintre 1x şi nx , dacă există drumuri între cele două vârfuri.

Considerăm 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 nW 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 Up i j

w i ji j

i j x m x U

≠ ∈≠

= = = = ∞ ≠ ∉

.

Algoritmul 6. Etapa 1

Se construieşte matricea extinsă a valorilor arcelor ( ), 1,ij i j n

W w=

= .

Construim un vector ( )1i i nv v

≤ ≤= pentru care considerăm 1 0v = şi iv = +∞

pentru 2 i n≤ ≤ .

Page 106: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

106

Etapa 2

a) Cu 1,2,...,i n= , în această ordine se construieşte vectorul ( )* *

1i i nv v

≤ ≤= pe

baza formulei:

( ){ }*

,

min , min

i

i i j jij

x x Uj

v v v w

= +

.

b) Se continuă aplicarea punctului (a) cât timp există un indice k pentru care *k kv v< , înlocuind vectorul v prin vectorul

*v . Etapa 3

- Dacă nw = +∞ , atunci nu există drumuri între 1x şi nx .

- Se determină drumul de la 1x la nx plecându-se de la nx , procedând după

cum urmează: dacă presupunem că s-a determinat ( )1 1, ,...,k k k nii

x x x x−

= ,

partea de la kix la nx a drumului minim. Luăm

1kix

+vârful pentru care are

loc relaŃia 1 1k k k ki ii i

v w v+ ++ =

■ Exemplul 7. Se consideră graful orientat ponderat ( ),G X U= , cu

{ }1,2,3,4,5X = şi

( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1,4,3 , 2,3,1 , 2,7,5 , 3,7,4 , 4,6, 2 , 5,9,4 , 5,6,1U = .

Graful are reprezentarea

1 2

3 4 5

3

4

7 6

7

9

6

Matricea extinsă a ponderilor este în acest caz

Page 107: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

107

0 43 0 7

0 76 0

6 9 0

W

∞ ∞ ∞ ∞ ∞ = ∞ ∞ ∞ ∞ ∞ ∞

∞ ∞

Considerând că dorim să determinăm drumul minim de la vârful 1 la vârful 5, conform primei etape a algoritmului se construieşte vectorul

( )0v = ∞ ∞ ∞ ∞ .

Aplicăm primul punct al etapei a doua şi avem 1i = , { }{ }*

1 min 0,min 3, 6 0v = ∞ + ∞+ =

2i = , { }{ }*2 min ,min 6v = ∞ ∞+ = ∞

3i = , { }{ } { }*3 min ,min 0 4 min ,4 4v = ∞ + = ∞ =

4i = , { }{ }*4 min ,min 7, 9v = ∞ ∞+ ∞ + = ∞

5i = , { }{ }*5 min ,min 7v = ∞ ∞+ = ∞

ObŃinem astfel vectorul ( )* 0 4v = ∞ ∞ ∞ .. Deoarece pentru

3k = , *3 34 v v= < = ∞ , facem ( )0 4v = ∞ ∞ ∞ şi reluăm calculele de

mai sus. 1i = , { }{ }*

1 min 0,min 3, 6 0v = ∞ + ∞+ =

2i = , { }{ }*2 min ,min 6v = ∞ ∞+ = ∞

3i = , { }{ } { }*3 min 4,min 0 4 min 4,4 4v = + = =

4i = , { }{ } { }*4 min ,min 4 7, 9 min ,11 11v = ∞ + ∞+ = ∞ =

5i = , { }{ }*5 min ,min 7v = ∞ ∞+ = ∞

Am ajuns la vectorul ( )* 0 4 11v = ∞ ∞ şi deoarece pentru 4k =

are loc relaŃia *4 411 v v= < = ∞ , reluăm calculele pentru vectorul

( )0 4 11v = ∞ ∞ .

Procedând ca anterior, de această dată se ajunge la ( )* 0 17 4 11v = ∞ , iar relaŃia de reluare este îndeplinită pentru 2k = .

Reluăm primul pas al etapei a doua pentru ( )0 17 4 11v = ∞ şi obŃinem

( )* 0 17 4 11 24v = .

Urmează încă o aplicare a primului pas din etapa a doua, în final obŃinând ( )* 0 17 4 11 24v v= = şi deoarece relaŃia *

k kv v< nu este verificată

Page 108: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

108

pentru niciun { }1,2,3,4,5k ∈ se trece la etapa a treia a algoritmului din care se

obŃine că există un drum de la vârful 1 la vârful 5 deoarece 5 24v = ≠ ∞ şi acest

drum este ( )1,3,4, 2,5d = .

╬. Algoritmul prezentat este un algoritm care conŃine o serie de complicaŃii datorate faptului că s-a dorit să funcŃioneze pentru toate grafurile orientate. Pentru cazul în care se cunoaşte faptul că graful G nu conŃine circuite, acest algoritm poate fi simplificat pentru a se ajunge la următoarea formă.

Algoritmul 7.

1. Se construieşte matricea extinsă a valorilor arcelor ( ), 1,ij i j n

W w=

= .,

facem 1 0v = (. ( )1i i nv v

≤ ≤= fiind un vector de dimensiune n ) şi

considerăm mulŃimile { }1A x= şi { }1\B X x= .

2. Dacă nu există jx A∈ şi ix B∈ astfel încât ( ),j ix x U∈ , atunci ne

oprim, nu există drumuri de la 1x la nx ; altfel se continuă. 3. Considerăm mulŃimea

( ) ( ){ }, , , ,C x B y A y x U si z B z x U= ∈ ∃ ∈ ∈ ∃ ∈ ∈ .

Pentru orice ix C∈ , facem { }mini j jij

x Aj

v v w

= + .

4. Facem înlocuirile A A C= ∪ , \B B C= . 5. Dacă nx A∉ atunci se trece la pasul 2, altfel se continuă.

6. Se determină drumul de la 1x la nx plecându-se de la nx , procedând după

cum urmează: dacă presupunem că s-a determinat ( )1 1, ,...,k k k nii

x x x x−

= ,

partea de la kix la nx a drumului minim. Luăm

1kix

+vârful pentru care

are loc relaŃia 1 1k k k ki ii i

v w v+ ++ = .

■ Exemplul 8. Considerăm graful orientat ponderat, fără circuite

( ),G X U= cu { }1,2,3,4,5X = şi

( ) ( ) ( ) ( ) ( ) ( ) ( ){ }1,3,2 , 1,4,3 , 2,2,3 , 2,4,4 , 2,9,5 , 3,5, 4 , 4,4,5U =

având reprezentarea următoare

Page 109: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

109

1 2

3 4 5

3

4

5

4 2 4

9

Scriem matricea extinsă a valorilor arcelor şi anume

0 3 40 2 4 9

0 50 4

0

W

∞ ∞ ∞ = ∞ ∞ ∞ ∞ ∞ ∞

∞ ∞ ∞ ∞

Şi considerând că dorim să determinăm drumul de extremitate iniŃială vârful 1, cu extremitatea finală vârful 5, facem iniŃializările 1 0v = , { }1A = şi { }2,3, 4,5B = .

Deoarece există 1 A∈ şi 2 B∈ astfel încât ( )1,2 U∈ se continuă cu

pasul 3 al algoritmului. Construim mulŃimea { }2C = . Pentru 2 C∈ facem

{ }2 min 0 3 3v = + = ..

La pasul 4 obŃinem { }1,2A = şi { }3,4,5B = şi deoarece 5 A∉ facem o

nouă iteraŃie începând cu pasul 2. Deoarece există 1 A∈ şi 3 B∈ astfel încât ( )1,3 U∈ se continuă cu pasul

3 al algoritmului. ObŃinem { }3C = . Pentru 3 C∈ facem

{ } { }3 min 0 4,3 2 min 4,5 4v = + + = =

La pasul 4 ajungem la { }1,2,3A = şi { }4,5B = şi din nou, deoarece

5 A∉ , reluăm de la pasul 2. Cum 2 A∈ şi 4 B∈ astfel încât ( )2,4 U∈ continuăm cu pasul 3 şi

obŃinem { }4C = . Pentru 4 C∈ se obŃine

{ } { }4 min 3 4,4 5 min 7,9 7v = + + = =

La pasul 4 se determină mulŃimile { }1,2,3, 4A = şi { }5B = şi este

necesară o nouă reluare de la pasul 2 deoarece 5 A∉ .

Page 110: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

110

Având 2 A∈ şi 5 B∈ pentru care ( )2,5 U∈ continuăm construind

{ }5C = şi cu determinarea

{ } { }5 min 3 9,7 4 min 12,11 11v = + + = =

urmată de obŃinerea mulŃimilor { }1,2,3,4,5A = şi B =∅ . De această dată

5 A∈ şi astfel, trecem la pasul 6 cu ( )0 3 4 7 11v = determinând drumul

( )1,2,4,5d = .

╬ 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 vârfurilor din C în A . Pe de altă parte, o parte din arcele considerate la pasul 3 nu vor face parte din drumul minim de la 1x la nx . Acest lucru se va întâmpla doar pentru vârfurile în care se

atinge minimul calculat la aplicarea relaŃiei { }mini j jij

x Aj

v v w

= + . Această

consideraŃie ne conduce la un algoritm înbunătăŃit pentru determinarea drumurilor minime în grafuri fără circuite, cunoscut sub numele de algoritmul lui Dijkstra.

Algoritmul 8.

1. Se construieşte matricea extinsă a valorilor arcelor ( ), 1,ij i j n

W w=

= .,

facem 1 0v = (. ( )1i i nv v

≤ ≤= fiind un vector de dimensiune n ) şi

considerăm mulŃimile { }1A x= şi { }1\B X x= .

2. Dacă nu există jx A∈ şi ix B∈ astfel încât ( ),j ix x U∈ , atunci ne

oprim, nu există drumuri de la 1x la nx ; altfel se continuă. 3. Considerăm mulŃimea

( ) ( ){ }, , , ,C x B y A y x U si z B z x U= ∈ ∃ ∈ ∈ ∃ ∈ ∈ .

Pentru orice ix C∈ , facem { }mini j jij

x Aj

v v w

= + .

4. Pentru fiecare kx C∈ pentru care există jx A∈ astfel încât

{ }mink jk j jkj

x Aj

v w v w

+ = + considerăm { }kA A x= ∪ şi { }\ kB B x= .

5. Dacă nx A∉ atunci se trece la pasul 2, altfel se continuă.

Page 111: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

111

6. Se determină drumul de la 1x la nx plecându-se de la nx , procedând după

cum urmează: dacă presupunem că s-a determinat ( )1 1, ,...,k k k nii

x x x x−

= ,

partea de la kix la nx a drumului minim. Luăm

1kix

+vârful pentru care

are loc relaŃia 1 1k k k ki ii i

v w v+ ++ = .

■ Exemplul 9. Fie un graf ( ),G X U= cu { }1,2,3, 4,5,6,7X = , iar pe

arce este marcată ponderea fiecărui arc. Dorim să determinăm drumul minim dintre vârfurile 1 şi 7. Graful considerat este fără circuite şi este prezentat în imaginea de mai jos

1

2

3

4

5

6

7

2

6

4

1 4

11

9

11

6

4

9

14

19

13

La pasul 1 se scrie matricea extinsă a valorilor arcelor

0 2 6 110 4 4 9

0 1 110 76 0 14 194 0 13

0

W

∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞

= ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞

∞ ∞ ∞ ∞ ∞ ∞

şi se fac iniŃializările 1 0v = , { }1A = şi { }2,3, 4,5,6,7B =

Modul de lucru al algoritmului este similar celui prezentat în exemplul 8 şi conduce în final la drumul ( )1,2,4,7d = .

Page 112: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

112

VII. ALGORITMI PENTRU GRAFURI HAMILTONIENE ŞI EULERIENE

7.1. Algoritmul lui Foulkes pentru drumuri hamiltoniene

Pentru a uşura căutarea drumurilor hamiltoniene într-un graf orientat conex

( ),G X U= , vom face o căutarea a drumurilor hamiltoniene în subcomponente

tari conexe ale grafului G şi apoi vom asambla subdrumurile prin utilizarea punŃilor prin care sunt conectate componentele tari conexe. Considerăm un graf orientat conex ( ),G X U= care are matricea de

adiacenŃă A . Din matricea de adiacenŃă putem determina matricea drumurilor D , utilizând modalităŃile prezentate în capitolele anterioare. Procesul se desfăşoară în 3 etape, una de formare a componentelor tari conexe din graful G , a doua în care se formează câte 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 1i = 1.b) În matricea M se consideră toate liniile formate doar cu

valoarea 1. Vârfurile corespunzătoare acestor linii formează mulŃimea de vârfuri iC .

1.c) Se elimină din matricea M liniile şi coloanele considerate în formarea mulŃimii iC .

1.d) Dacă matricea M nu s-a epuizat se trece la pasul (1.b), altfel se continuă trecând la etapa a doua.

Etapa 2

Se construieşte un grag ( ),G Y V′ = unde { }1 2, ,..., rY C C C= şi

( ),i jC C V∈ dacă şi numai dacă există ix C∈ şi există jy C∈ astfel încât

( ),x y U∈ . Se formează astfel un drum hamiltonian în G′ , şi anume drumul

( )1 2, ,..., rd C C C′ = .

Page 113: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

113

Etapa 3

3.a) Se consideră 1 1x C∈ şi 2 2x C∈ pentru care există ( )1 2,x x U∈ . Găsim în

1C un drum hamiltonian 1d de extremitate iniŃială *1x şi extremitate finală 1x

şi în 2C un drum hamiltonian 2d de extremitate iniŃială 2x şi extremitate

finală *2x . Se formează astfel drumul hamiltonian ( )( )*

1 1 1 2 2, , ,d d x x d= în

graful parŃial al lui G de vârfuri 1 2C C∪ . Facem 3i = . 3.b) Dacă i r> ne oprim, s-a obŃinut drumul hamiltonian, altfel se continuă.

3.c) Dacă există i ix C∈ astfel încât ( )*1,i ix x U− ∈ atunci se trece la pasul (3.d),

altfel se trece la pasul (3.e). 3.d) Se consideră în iC un drum hamiltonian id de extremitate iniŃială ix şi

notăm extremitatea sa finală prin *ix . Am format astfel drumul hamiltonian

( )( )* * *1 1, , ,i i i i id d x x d− −= în graful parŃial al lui G de vârfuri

1 2 ... iC C C∪ ∪ ∪ . Facem 1i i= + şi mergem la pasul (3.b).

3.e) Fie ie partea din drumul *1id − care formează acest drum împreună cu 1id − .

Fie 1 1i ix C− −′ ∈ şi i ix C∈ pentru care ( )1,i ix x U−′ ∈ . ÎmpărŃim drumul 1id − în

1id −′ de extremitate finală 1ix −′ şi drumul 1id −′′ de extremitate iniŃială 1ix −′ şi

extremitate finală *1ix − . Considerăm un drum 1id −′′′ care pleacă din 1ix −′ , trece

*1ix − şi apoi prin toate celelalte vârfuri care apar în drumul 1id −′′ astfel încât

extremitatea finală a lui 1id −′′′ să fie 1ix −′ . Se consideră în iC un drum

hamiltonian id de extremitate iniŃială ix şi notăm extremitatea sa finală prin *ix . Considerăm drumul ( )( )*

1 1 1, , , ,i i i i i id d d x x d− − −′ ′′′ ′= în graful parŃial al lui

G de vârfuri 1 2 ... iC C C∪ ∪ ∪ . Facem 1i i= + şi mergem la pasul (3.b). ■

Exemplul 1. Considerăm graful următor

1

2

3 4

5

6 7

8

9

Matricea de adiacenŃă a grafului este

Page 114: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

114

0 1 0 0 1 0 0 0 00 0 1 1 0 0 0 0 10 0 0 1 0 0 0 0 01 0 0 0 1 0 0 0 00 0 1 0 0 1 0 0 00 0 0 0 0 0 1 1 00 0 0 0 0 0 0 1 00 0 0 0 0 0 0 0 10 0 0 0 0 1 0 0 0

A

=

.

Prin aplicarea unuia din algoritmii pentru determinarea matricii drumurilor într-un graf orientat se obŃine matricea

1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 10 0 0 0 0 1 1 1 10 0 0 0 0 1 1 1 10 0 0 0 0 1 1 1 10 0 0 0 0 1 1 1 1

M

=

Prin aplicarea primei etape a algoritmului de mai sus se obŃine { }1 1,2,3, 4,5C = şi { }2 6,7,8,9C = şi în etapa a doua se obŃine graful condensat

C1 C2

şi astfel se obŃine drumul hamiltonian ( )1 2,cd C C= .

În etapa a treia se alege o punte, să spunem arcul ( )2,9 .

Alegem în componenta tare conexă 1C drumul hamiltonian de extremitate

finală vârful 2, şi anume ( )1 5,3,4,1,2d = .

Page 115: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

115

De asemenea, deoarece 2C este ultima componentă tare conexă, determinăm în ea un drum hamiltonian de extremitate iniŃială vârful 9, şi anume

( )2 9,6,7,8d = .

Acum, drumul hamiltonian se obŃine ca ( )1 2,d d d= , deci

( )1 5,3,4,1, 2,9,6,7,8d =

7.2. Teorema lui Chen

Fie ( ),G X U= un graf orientat şi fără circuite cu { }1 2, ,..., nX x x x= .

Considerăm că A este matricea de adiacenŃă a grafului şi putem determina matricea D a drumurilor din G . Pentru fiecare nod ix notăm cu ip puterea de atingere a vârfului ix , adică

numărul de vârfuri jx pentru care există drum de extremitate iniŃială ix şi

extremitate finală jx .

PropoziŃia 1. Fie ( ),G X U= un graf orientat şi fără circuite şi

( ),i jx x U∈ . Atunci i jp p≥ , unde ip este gradul de atingere al vârfului ix .

DemonstraŃie. Fie

( ){ },...,j k j kA x d x x= ∃ =

şi

( ){ },...,i k i kA x d x x= ∃ = .

Dacă jy A∈ , atunci există un drum ( ),...,jd x y= . Deoarece ( ),i jx x U∈ ,

atunci

( )( ) ( ), , , ,...,i j i jd x x d x x y′ = =

este un drum de la ix la y şi astfel iy A∈ . Cum y a fost ales arbitrar, rezultă

j iA A⊆ , deci

j j i ip A A p= ≤ = .

□ Corolar. Fie ( ),G X U= un graf orientat şi fără circuite şi care conŃine

un drum de la ix la jx . Atunci i jp p≥ , unde ip este gradul de atingere al

vârfului ix .

Page 116: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

116

DemonstraŃie. Se procedează ca în propoziŃia 1 doar că în loc de a utiliza arcul ( ),i jx x se consideră drumul ( ),...,i je x x= .

□ Următoarele 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 fără circuite cu X n= .

G conŃine un drum hamiltonian dacă şi numai dacă are loc relaŃia

( )1

12

n

ii

n np

=

−=∑

unde ip este gradul de atingere al vârfului ix . DemonstraŃie. ⇒

Fie { }nxxxd ,...,, 21= drumul hamiltonian în G , atunci:

- dacă ji > din jx nu se poate atinge vârful ix , deoarece în caz contrar în G

ar exista circuite; - din vârful ix ( 1, 2,..., 1i n= − ) se pot atinge vârfurile nii xxx ,...,, 21 ++ deci

ip n i= − ;

- din vârful nx nu se poate atinge nici un vârf. În total avem:

( ) ( )1 1

12

n n

ii i

n np n i

= =

−= − =∑ ∑ .

Presupunem că ( )

1

12

n

ii

n np

=

−=∑ , atunci în matricea D se găsesc

( )21−nn

elemente de „1”. Triangularizând superior această matrice, aceste elemente vor ocupa toate

locurile disponibile de deasupra diagonalei; în final drumul hamiltonian însuşi este dat de succesiunea vârfurilor corespunzătoare matricii triangularizată superior.

□ Teorema 2. Într-un graf orientat fără circuite, drumul hamiltonian, dacă există este unic. DemonsraŃie. Dacă ar exista două drumuri hamiltoniene ( )1

Hd şi ( )2Hd ,

atunci în cele două drumuri ar exista cel puŃin două vârfuri ix , jx aşezate în

ordine inversă, ceea ce ar face să apară un circuit între ix şi jx .

Page 117: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

117

Rezultatele prezentate mai sus dau un proces imediat pentru determinarea drumului hamiltonian într-un graf orientat fără circuite. Pentru acesta vom proceda după cum urmează: Algoritmul 2.

1. Scriem matricea de adiacenŃă A . 2. Calculăm, prin una din metodele descrise în capitolele anterioare,

matricea drumurilor D . Dacă în această matrice apare cel puŃin o valoare 1 pe diagonala principală ne oprim pentru că graful G conŃine un circuit şi teorema lui Chen nu se poate aplica.

3. Se determină puterile de atingere ale vârfurilor ( ) 1,2,...,i i np

= şi se verifică

valoarea de adevăr pentru relaŃia ( )

1

12

n

ii

n np

=

−=∑ . Dacă această relaŃie

nu este verificată atunci graful G nu conŃine un drum hamiltonian. 4. Se ordonează puterile de atingere ale vârfurilor şi dacă σ este

permutarea pentru care are loc relaŃia

( ) ( ) ( )1 21 ... 0nn p p pσ σ σ− = > > > = ,

atunci drumul

( ) ( ) ( )( )1 2, ,..., nh x x xσ σ σ=

este drumul hamiltonian căutat. ■

Exemplul 2. Considerăm graful dat prin reprezentarea

x1

x2

x3 x4

Matricea de adiacenŃă este

0 1 0 10 0 0 11 1 0 00 0 0 0

A

=

Matricea drumurilor este

Page 118: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

118

0 1 0 10 0 0 11 1 0 10 0 0 0

D

=

Să determinăm drumul hamiltonian pentru matricea drumurilor astfel obŃinută. Matricea nu conŃine nicio valoare 1 pe diagonală, deci graful la care matricea este asociată nu conŃine circuite.

Avem 1 2p = ; 2 1p = ; 3 3p = ; 4 0p = şi astfel 4

1

6ii

p=

=∑ , iar pentru

4=n rezultă ( )

621=

−nn.

Matricea D a drumurilor graf la care am ataşat şi puterile de atingere a vârfurilor este

1 2 3 4

1

2

3

4

0 1 0 1 20 0 0 1 11 1 0 1 30 0 0 0 0

ix x x x p

x

xD

x

x

=

Pentru a triangulariza matricea D ne folosim de relaŃiile

3 1 2 4p p p p> > > ,

vom scrie vârfurile în ordinea { }4213 ,,, xxxx în loc de ordinea { }4321 ,,, xxxx . Avem:

1 2 3 4

1

21

3

4

0 1 1 10 0 1 10 0 0 10 0 0 0

x x x xx

xD

x

x

=

care este matricea triangularizată a drumurilor. Deci, se poate aplica teorema lui Chen, în G există un drum hamiltonian,

iar acesta este { }4213 ,,,: xxxxdH . ╬

Page 119: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

119

7.3. Algoritmul înmulŃirii latine

Algoritmul de determinare a matricii drumurilor are un caracter prea sintetic, în sensul că prezenŃa unei valori de „1” în matricea drumurilor nu dă informaŃii asupra vârfurilor din care se compun drumurile corespunzătoare, bineînŃeles că nici asupra numărului de drumuri între vârfurile care corespund acelor valori de „1”.

Ca un exemplu de algoritm capabil să răspundă acestor deziderate, prezentăm algoritmul datorat lui Kaufmann, numit aloritmul înmulŃirii latine.

Introducem, ca punct de plecare, o matrice ( )1M , care, în locul valorilor de „1” utilizate în matricea obişnuită a arcelor, utilizează însuşi arcul respectiv, reprezentat prin vârfurile care îl compun. ( ) ( )( )

njiijmM,1,

11=

= , unde

dacă există arc de la ix la jx ( )

=0

1 ji

ij

xxm

în rest

Prin suprimarea primei litere în matricea ( )1M se obŃine o matrice ( )1~M ,

numită „a destinaŃiilor posibile”. Se compun matricele ( )1M şi ( )1~M prin operaŃia

de „înmulŃire latină”. ( ) ( )1 1M LMɶ . ÎnmulŃirea latină a matricilor se face formal ca şi înmulŃirea a două matrici,

fără însumare şi fără înmulŃire efectivă, Ńinând cont că: - produsul latin a două componente participante la calcul este nul dacă cel puŃin

una din ele este nulă. - produsul latin a două componente participante este nul dacă au vârf comun. - rezultatul compunerii constă în scrierea în continuare a vârfurilor componente

ale simbolurilor participante. Prin definiŃia produsului latin avem ( ) ( ) ( )2 1 1M M LM= ɶ ,

( ) ( ) ( )3 2 1M M LM= ɶ , … Algoritmul continuă până la obŃinerea matricii ( )1nM − , deoarece într-un graf cu n vârfuri un drum hamiltonian are 1−n arce.

În matricea ( )1−nM citim, conform modului de scriere de mai sus, toate drumurile hamiltoniene ale grafului.

Dacă toate elementele lui ( )1−nM sunt zerouri ( ( ) 0=−1nM ), graful nu admite drum hamiltonian.

ObservaŃie. Procedeul este aplicabil pentru orice tip de graf orientat (cu sau fără circuit), dar pentru grafurile fără circuite se recomandă algoritmul lui Chen, întrucât pentru grafuri de dimensiuni mari, algoritmul înmulŃirii latine este greoi (dar sigur).

Page 120: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

120

Exemplul 3. Să se determine drumurile hamiltoniene pentru graful

1

2

3 4

5

Cum ştim că graful are circuite, vom folosi metoda înmulŃirii latine. Matricele ( )1M şi ( )1Mɶ vor fi:

( )

=

0000000

0000000

000

35

5414

43

4232

5121

1

xx

xxxx

xx

xxxx

xxxx

M

( )

=

0000000

0000000

000

~

3

51

4

43

52

1

x

xx

x

xx

xx

M

( )

=

000000000

00

000

435

514354214

543143

542432142

421351

321

2

xxx

xxxxxxxxx

xxxxxx

xxxxxxxxx

xxxxxx

xxx

M

Page 121: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

121

( )

=

0000

0000

000

00

000

1435

3514

3214

51432143

5432

514235421432

54214351

4321

3

xxxxxxxx

xxxxxxxxxxxxxxxx

xxxxxxxxxxxx

xxxxxxxx

xxxx

M

( )

=

00000000000000

0300000

21435

514325142

5432135421

4

xxxxx

xxxxxxxxxx

xxxxxxxxxx

M

În graful dat există 5 drumuri hamiltoniene. ╬

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ă determinăm un ciclu eulerian. Pentru acest lucru, o soluŃie este de a pleca de la un lanŃ simplu C (iniŃial format dintr-o muchie a grafului) şi la care să adăugăm muchii încât să păstrăm lanŃul simplu şi în graful care se formează să nu apară muchii izolate. Dacă nu există şi alte opŃiuni, atunci se utilizează şi muchiile izolate. Algoritmul care se bazează pe principiul enunŃat mai sus este cunoscut drept algoritmul lui Fleury. Pentru a putea prezenta acest algoritm este necesar să considerăm un mod special de specificare a lanŃurilor. Până acum am făcut acest lucru fie sub forma

{ }0 1, ,..., rL x x x= , unde ix X∈ (reprezentarea prin noduri), fie prin

{ }1 2, ,..., sL u u u= , unde iu U∈ având condiŃia ca pentru orice 1,2,..., 1i s= −

muchiile iu şi 1iu + au o extremitate comună (reprezentarea prin muchii). Reprezentarea utilă a lanŃurilor este o reprezentare combinată în sensul că sunt prezente atât nodurile, cât şi muchiile implicate în formarea lanŃului sub forma

{ }0 1 1 2 1, , , ,..., , ,r r rL x u x u x u x−= , unde pentru orice 1,2,...,i r= avem

{ }1,i i iu x x−= .

Prezentăm în comtinuare algoritmul lui Fleury:

Page 122: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

122

Algoritmul 4. 1. Se alege un vârf 0x X∈ şi considerăm { }0 0C x= şi 0i = .

2. Pentru ix alegem o muchie ( )1 1,i i iu x x+ += care nu apare în iC şi

care nu este izolată în graful parŃial al lui G obŃinut prin eliminarea

muchiilor care formează iC (sau o muchie izolată din graful parŃial menŃionat, dacă nu avem altă variantă). Definim lanŃul

{ } { }1 1 1 0 1 1 2 1 1, , , , , ,..., , ,i i i i i i iC C u x x u x u x u x+ + + + += = şi facem 1i i= + .

3. Dacă i m= ne oprim, mC este ciclul eulerian, altfel se trece la pasul (2). ■

Teorema 3. Dacă ( ),G X U= este un graf eulerian, atunci orice ciclu

obŃinut prin aplicarea algoritmului 2 este un ciclu eulerian. □

Exemplul 4. Fie graful următor

1

2 3

4 5

6

deci ( ),G X U= , cu { }1,2,3, 4,5,6X = şi { }1 2 3 4 5 6 7 8 9, , , , , , , ,U u u u u u u u u u= ,

unse s-a notat { }1 1,4u = , { }2 1,5u = , { }3 2,3u = , { }4 2,4u = , { }5 3,4u = ,

{ }6 3,5u = , { }7 3,6u = , { }8 4,5u = şi { }9 5,6u = . Avem astfel 6n X= = şi

9m U= = .

Pentru aplicarea algoritmului 4 se realizează alegerea unui nod 0 3x X= ∈

şi se fac iniŃializările { }0 3C = , 0i = .

La prima iteraŃie graful parŃial ( )0, \X U C coincide cu graful G şi putem

alege orice muchie care are o extremitate în nodul 3, să spunem { }5 3,4u = .

Definim lanŃul { }1 53, , 4C u= şi facem 1i = . Cum 9i ≠ , procesul este reluat.

La a doua iteraŃie, graful parŃial ( )1, \X U C este reprezentat prin

Page 123: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

123

1

2 3

4 5

6

şi deoarece nu conŃine muchii izolate, putem alege orice muchie care are o extremitate nodul 4, să spunem { }8 4,5u = . Definim lanŃul { }2 5 83, , 4, ,5C u u= şi

facem 2i = , urmând a relua pasul 2. A treia iteraŃie are la bază graful parŃial

1

2 3

4 5

6

care nu conŃine muchii izolate şi astfel pentru continuare putem alege orice muchie care are o extremitate în nodul 5, să spunem { }2 1,5u = . Definim lanŃul

{ }3 5 8 23, , 4, ,5, ,1C u u u= şi facem 3i = . Deoarece 9i ≠ se revine la pasul 2.

A patra iteraŃie porneşte de la graful parŃial

1

2 3

4 5

6

în care se poate observa că singurele contunuări posibile sunt legate de muchiile din lanŃul { }1,4,2,3 (corespunzând şi iteraŃiilor cinci şi şase). Facem în ordine

alegerile { }1 1,4u = , { }4 2,4u = şi { }3 2,3u = . În final se obŃine lanŃul

Page 124: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

124

{ }6 5 8 2 1 4 33, , 4, ,5, ,1, , 4, , 2, ,3C u u u u u u= .

Facem 6i = . Urmează a relua pasul al doilea. La a şaptea iteraŃie, graful parŃial ( )6, \X U C este

1

2 3

4 5

6

În acest graf nu conŃine muchii izolate şi putem alege orice muchie care are o extremitate în nodul 3, să spunem { }7 3,6u = şi astfel să formăm lanŃul

{ }7 5 8 2 1 4 3 73, , 4, ,5, ,1, , 4, , 2, ,3, ,6C u u u u u u u=

şi trecem la 7i = . La reluarea pasului 2, graful parŃial obŃinut prin eliminarea muchiilor din lanŃul 7C conŃine lanŃul { }6,5,3 şi prin iteraŃiile 8 şi 9 se ajunge la

un lanŃ { }9 5 8 2 1 4 3 7 9 33, , 4, ,5, ,1, , 4, , 2, ,3, ,6, ,5, ,3C u u u u u u u u u=

Deoarece ajungem la 9i = , algoritmul se opreşte. LanŃul 9C are ambele

extremităŃi nodul 3 şi astfel este un ciclu. Fiecare muchie din ciclul 9C apare o

singură dată şi deci ciclul este unul simplu. Ciclul simplu 9C conŃine toate

muchiile din graful G , deci este un ciclu eulerian. ╬

7.5. Algoritmul lui Hierholzer pentru drumuri euleriene O altă idee pentru determinarea unui ciclu eulerian este să determinăm ciclurile formate cu muchii distincte şi care să aibă câte un nod comun şi unirea acestor cicluri în ciclul eulerian căutat. ExistenŃa ciclurilor cu un nod comun este garantată de faptul că graful considerat este conex. 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= .

Page 125: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

125

Algoritmul 5. 1. Se alege un vârf 0x X∈ şi plecând de la 0x , prin traversarea fiecărei

muchii neconsiderate formăm un ciclu { }0 0 00 1 2 0

, ,..., rC u u u= şi 0i = .

2. Dacă graful parŃial format cu muchiile cuprinse în ciclul iC coincide cu

G atunci ne oprim, iC reprezintă ciclul eulerian căutat, altfel se

continuă. 3. Fie nodul ix , extremitate a muchiei i

ku din ciclul iC şi al unei muchii *iu

care nu este în iC . Pornind de la nodul ix , în graful parŃial al lui G cu

mulŃimea de muchii formată de muchiile nefolosite la formarea lui iC ,

formăm un ciclu ca la pasul (1), notat *iC .

4. Formăm ciclul { }1 1 11 1 2 1

, ,...,i i ii ri

C u u u+ + ++ += pornind din ix , parcurgând

integral iC până ajungem din nou la ix şi apoi parcurgând integral *iC

până se ajunge la ix

5. Facem 1i i= + şi trecem la pasul (2). ■

Page 126: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

126

VIII. FLUX MAXIM ÎN REłELE DE TRANSPORT

8.1. ConsideraŃii generale

DefiniŃie. Un graf orientat ponderat ( ), ,G X U p= fără circuite, se

numeşte reŃea de transport dacă îndeplineşte următoarele condiŃii: 1. Dacă { }nxxxX ,...,, 21= , atunci oricare ar fi 1 i n≤ ≤ avem ( ),i ix x U∈ .

2. Există un vârf unic Xx ∈1 în care nu intră niciun arc, numit sursa reŃelei.

3. Există un unic vârf nx din care nu iese niciun arc, numit destinaŃia reŃelei.

4. G este conex şi există drumuri de la 1x la nx .

5. S-a definit o funcŃie :c U → ℝ astfel încât ( ) 0≥uc pentru orice arc u U∈ ;

numărul ( )uc se numeşte capacitatea reŃelei. □

DefiniŃie. Fie ( ), ,G X U p= o reŃea de transport. Fiind dată o

submulŃime XY ⊂ , se numeşte tăietură de suport Y mulŃimea de arce

( ) ( ){ }, ,i j i jY x x U x Y x Y Uω− = ∈ ∉ ∈ ⊂

( ) ( ){ }, ,i j i jY x x U x Y x Y Uω+ = ∈ ∈ ∉ ⊂ .

Cantitatea ( )( )( ) ( )∑

−ω∈

− =ωYjxixijpYc

,

este capacitatea tăieturii ( )Y−ω .

□ DefiniŃie. Fie ( ), ,G X U p= o reŃea de transport. O funcŃie :Uϕ +→ ℝ

se numeşte flux pe reŃeaua de transport ( ), ,G X U p= dacă îndeplineşte

următoarele condiŃii: 1. CondiŃia de mărginire a fluxului:

pentru orice ( ),i jx x U∈ , avem ( )ij

pxx ji ≤ϕ≤ ,0 .

2. CondiŃia de conservare

Pentru orice ix X∈ , avem ( )( )

( )∑∑Γ∈

=

Γ∈

=

ϕ=ϕn

hxjx

hhj

n

jxkx

kjk xxxx

,1

,1

,, .

Page 127: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

127

ObservaŃii 1. CondiŃia 2) afirmă că pentru orice vârf x cu 1xx ≠ şi nxx ≠ , suma

fluxurilor de pe arcele care intră în x este egală cu suma fluxurilor pe arcele care ies din x .

2. FuncŃia ϕ nu este unică.

DefiniŃie. Fie ( ), ,G X U p= o reŃea de transport. Un arc ( ),i jx x U∈ se

numeşte arc saturat, dacă în raport cu ϕ are loc relaŃia ( ) ijji pxx =ϕ , .

□ Se pune problema determinării funcŃiei ϕ astfel încât suma fluxurilor pe

arcele ce intră în nx să fie maximă, aşa-numita problemă a fluxului maxim.

Adică, dintre toate fluxurile :Uϕ +→ ℝ posibile în reŃeaua de transport

( ), ,G X U p= se urmăreşte să se determine fluxul ϕ̂ pentru care

( )

( )

( )

( )1 1

, ,

ˆ , ,n n

h n h nh h

x x U x x Un nh h

x x x xϕ ϕ= =

∈ ∈

≥∑ ∑ .

PropoziŃia 1. Fie ( ), ,G X U p= o reŃea de transport având sursa 1x ,

destinaŃia nx şi :Uϕ +→ ℝ un flux oarecare în reŃeaua G , atunci:

( )( )

( )( )

11 1

, ,1

, ,n n

i j ni j

x x U x x Ui j n

x x x xϕ ϕ= =

∈ ∈

=∑ ∑

DemonstraŃie. RelaŃia din enunŃ exprimă faptul că fluxul care iese din 1x

ajunge în nx . Avem ( ) ( ) 01 =ω=ω +−nxx şi se deduce că:

( )( ) ( )

( )( ) ( )

( )( ) ( )

( )( ) ( )∑∑

∑ ∑∑

−ω∈−∈

∈ −ω∈−ω∈

ϕ−ϕ=

=

ϕ−ϕ

ixixxi

nxnxjxnj

Xjx nxnxjxnj

jxjxixji

xxxx

xxxx

,1

1co,

,,

,,

,,

□ DefiniŃie. Fie ( ), ,G X U p= o reŃea de transport având sursa 1x ,

destinaŃia nx şi :Uϕ +→ℝ un flux oarecare în reŃeaua G . Valoarea

( )( ) ( )

( )( ) ( )

1,, 1

, ,j n i

x x xx x xn n ij i

x x x xωω

ϕ ϕ+− ∈∈

Φ = =∑ ∑

se numeşte valoarea totală a fluxului :ϕ +Γ→ ℝ . □

Page 128: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

128

PropoziŃia 2. Fie ( ), ,G X U p= o reŃea de transport şi fie XY ⊂ o

submulŃime cu proprietăŃile: - pentru sursa 1x a lui G avem 1x Y∉ ;

- pentru destinaŃia nx a lui G avem Yxn ∈ .

Atunci pentru orice flux :Uϕ +→ ℝ avem

( )( ) ( )

( )( ) ( )

( )( )YcxxxxYjxix

jiYjxix

ji=

+ω∈−ω∈

ω≤ϕ−ϕ=Φ ∑∑,,

,, .

DemonstraŃie. Avem:

( )( ) ( )

( )( ) ( )

( )( ) ( )

( )( ) ( )

( )( ) ( )

( )( ) ( )

( )( ) ( )

( )( ) ( )

( )( )

, ,

, ,

, ,

\ , ,

1,1

, ,

, ,

, ,

, ,

,

i j i j

x x Y x x Yi j i j

i k k jx Y x x x x x xk i k k jk k

i k k jx Y x x x x x xk i k k jk k

i k k jx X Y x x x x x xk i k k jk k

j

x x j

x x x x

x x x x

x x x x

x x x x

x x

ω ω

ω ω

ω ω

ω ω

ω

ϕ ϕ

ϕ ϕ

ϕ ϕ

ϕ ϕ

ϕ

− +∈ ∈

− +∈ ∈ ∈

− +∈ ∈ ∈

− +∈ ∈ ∈

− =

= − =

= − −

− − =

=

∑ ∑

∑ ∑ ∑

∑ ∑ ∑

∑ ∑ ∑

( )1x+

= Φ∑

ceea ce demonstrează egalitatea, căci:

( )( ) ( )

( )( ) ( )

( )( ) ( )

( )( ) ( )

( )( )

, ,

,

,

, ,

,

,

i j i j

x x Y x x Yi j i j

i j

x x Yi j

i j

x x Yi j

x x x x

x x

p x x c Y

ω ω

ω

ω

ϕ ϕ

ϕ

ω

− +∈ ∈

−∈

−∈

= − ≤Φ

≤ ≤

≤ =

∑ ∑

.

Page 129: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

129

8.2. Algoritmul Ford-Fulkerson

În continuare vom considera că toate capacităŃile sunt numere raŃionale sau întrucât numărul total de arce este finit, chiar numere naturale.

Pe baza consideraŃiilor precedente se deduce următorul algoritm cunoscut sub numele de algoritmul Ford-Fulkerson pentru determinarea fluxului maxim într-o reŃea de transport. Algoritm Pasul I

Se construieşte un flux iniŃial 0ϕ , care verifică condiŃiile de conservare în

fiecare vârf şi de mărginire pe fiecare arc, de exemplu chiar fluxul având

componente nule pe fiecare arc al reŃelei, ( )0 , 0i jx xϕ = , oricare ar fi

( ),i jx x U∈ .

Pasul II Folosind operaŃiile de marcare ce vor fi prezentate mai jos, se cercetează

dacă fluxul iniŃial 0ϕ este maxim; operaŃiunile de marcare constau în

următoarele: a) se marchează sursa reŃelei 1x cu semnul „+ ”;

b) vârfurile ( )1xx j+ω∈ vor fi marcate cu „ 1x+ ” dacă arcul ( )jxx ,1 este

nesaturat; c) dacă vârful jx este deja marcat şi dacă pentru un vârf ( )jk xx +ω∈ arcul

( )kj xx , este nesaturat, atunci marcăm vârful kx prin „ jx+ ”;

d) dacă vârful jx este deja marcat şi dacă pentru un vârf ( )jk xx −ω∈ arcul

( )jk xx are fluxul nenul, marcăm vârful kx prin „ jx− ”.;

În urma terminării operaŃiei de marcare, putem întâlni următoarele situaŃii: 1. Dacă destinaŃia nx a reŃelei nu s-a marcat, atunci fluxul este maxim şi

algoritmul se termină, altfel se aplică procesul (2) şi se reia pasul II. 2. Dacă destinaŃia nx s-a putut marca, atunci fluxul nu este maxim şi poate fi

măsurat astfel: a) se alege un drum de la 1x la nx ;

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 micşorează cu aceeaşi cantitate θ ;

d) fluxul arcelor nemarcate nu se schimbă; .■

Page 130: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

130

Algoritmul are un număr finit de paşi, iar fluxul maxim se atinge când nu mai poate fi marcată destinaŃia nx a reŃelei.

ObservaŃie. Mărimea fluxului se poate face cu mai mult decât o unitate, evitându-se astfel prea multe operaŃii de marcare, astfel: se consideră un drum V format din drumuri marcate cu „+” sau „-“ ce uneşte 1x cu nx , uşor de găsit

urmărind vârfurile marcate în sensul de la nx către 1x . Notăm +V mulŃimea

arcelor ( )yx, unde y este marcat cu „+” şi −V mulŃimea arcelor ( )yx, unde y este marcat cu „-“. Calculăm

( ) ( ){ }uucVu

ϕ−=θ+∈

min1

( )uVu

ϕ=θ−∈

min2

şi { }21 ,min θθ=θ . Observăm că 0>θ şi este număr întreg.

Mărim cu θ pe fiecare arc +∈Vu şi micşorăm cu θ pe fiecare arc −∈Vu , obŃinând, la ieşire, un flux mărit cu θ .

Se repetă etapa a doua cu fluxul obŃinut. Valoarea fluxului maxim se găseşte realizând o tăietură prin separarea cu o linie a vârfurilor marcate de cele nemarcate şi capacitatea acestei tăieturi reprezintă fluxul maxim, sau adunând fluxurile arcelor incidente interior lui nx .

8.3. Exemple

Exemplul 1. Fie reŃeaua

x1

x2

x3

x4

x5

+x1

+x1

+x1

2,0

5,0

3,0

7,0 5,0

4,0

8,0

5,0

+x2

Page 131: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

131

Vârful 1x este sursa reŃelei, vârful 5x este destinaŃia şi se verifică următoarele:

( ) ∅=ω−1x , ( ) ( ) ( ) ( ){ }4131211 ,,,,, xxxxxxx =ω+

( ) ( ) ( ){ }54525 ,,, xxxxx =ω− , ( ) ∅=ω+5x

Pentru reŃeaua din figură vrem să determinăm fluxul maxim. Considerăm fluxul iniŃial ( )0 , 0i jx xϕ = pentru orice ( ),i jx x U∈ .

Pasul 2

1) Observăm prin procedeul de marcaj am putut marca destinaŃia 5x a reŃelei. Atunci fluxul nu este maxim şi poate fi mărit.

Alegem un drum de la 1x la 5x

( )5211 ,,: xxxd Fluxul se majorează cu cantitatea

( ) ( ){ } { } 208,02minmin =−−=ϕ−=θ+∈

uucVu

;

(arcul ( )21 , xx se va satura).

Fluxul va avea valoarea 2201 =+ϕ=ϕ .

x1

x2

x3

x4

x5 +x1

+x1

2,2

5,0

3,0

7,0 5,0

4,0

8,2

5,0

+x4

Am putut marca destinaŃia 5x a reŃelei, fluxul nu este maxim şi poate fi

mărit. Fie drumul { }5412 ,,: xxxd , mărim fluxul cu 3=θ (arcul ( )41 , xx (x1, x4) se va satura).

Noul flux va avea valoarea 5312 =+ϕ=ϕ .

Page 132: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

132

x1

x2

x3

x4

x5 +x1

+x3

2,2

5,0

3,3

7,0 5,0

4,0

8,2

5,3

+x3

+x4

Prin repetarea procedeului de marcaj am putut marca din nou destinaŃia,

deci fluxul nu este maxim. Fie drumul { }54313 ,,,: xxxxd ,

( ) ( ){ } { } 235,04.05minmin =−−−=ϕ−=θ+∈

uucVu

Cu cantitatea 2=θ vom mări fluxul şi 7223 =+ϕ=ϕ

x1

x2

x3

x4

x5 +x1

2,2

5,2

3,3

7,0 5,0

4,2

8,2

5,3+2

+x3

+x2

DestinaŃia a fost marcată, alegem drumul { }52314 ,,,: xxxxd ,

{ } 328,05,25min =−−−=θ . Fluxul va fi mărit cu cantitatea 3=θ şi obŃinem

10334 =+ϕ=ϕ . ╬

Exemplul 2. Pentru a transporta în 6 locaŃii anumite elemente se poate opta pentru variantele din reŃeaua de mai jos, ştiind că numerele din afara parantezelor reprezintă capacităŃile arcelor, iar numerele din interior, valorile unui flux iniŃial ce nu saturează niciun arc. Se doreşte găsirea fluxului maxim de transport

Page 133: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

133

x1

x2

x3

x4

x6

+x1

+x1

+x1

3,(2)

8,(5)

7,(2)

5,(1)

5,(2)

4,(2)

3,(1)

6,(2)

+x2

x5

+x5

4,(1)

5,(3)

10,(5)

Rezolvare: verificăm dacă flux iniŃial constituie un flux realizabil, adică

:Uϕ +→ ℝ îndeplineşte condiŃia de mărginire a fluxului, deci orice ( ),i jx x U∈

avem ( ) ijji pxx ≤ϕ≤ ,0 , { }6,...,2,1, ∈ji . ObŃinem:

( ) 32,0 1221 =<=ϕ< pxx , ( ) 85,0 1331 =<=ϕ< pxx

( ) 72,0 1441 =<=ϕ< pxx , ( ) 41,0 2662 =<=ϕ< pxx

( ) 51,0 3223 =<=ϕ< pxx , ( ) 52,0 3443 =<=ϕ< pxx

( ) 62,0 3553 =<=ϕ< pxx , ( ) 105,0 4664 =<=ϕ< pxx

( ) 31,0 5445 =<=ϕ< pxx , ( ) 53,0 5665 =<=ϕ< pxx .

Pentru condiŃia de conservare oricare ar fi ix X∈

( )( )

( )( )

6 6

2 1

, ,

, ,k j j hk h

x x U x x Uj jk h

x x x xϕ ϕ= =

∈ ∈

=∑ ∑

avem Vârfuri Flux care intră în vârful ix Flux care iese în vârful ix

2x 3 3

3x 5 5

4x 5 5

6x 4 4 Se observă că şi PropoziŃia 1. este verificată, adică

( ) ( ) 9,,5

26

4

21 =ϕ=ϕ ∑∑

== jj

ii xxxx

deci fluxul iniŃial este 90 =ϕ .

Page 134: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

134

Trecem la Pasul II din algoritmul Ford-Fulkerson 1) DestinaŃia 6x a putut fi marcată. Alegem drumul { }65311 ,,,: xxxxd pentru

care { } 235,26,58min =−−−=θ

şi 11291 =+=ϕ .

Arcul ( )65 , xx s-a saturat.

x1

x2

x3

x4

x6

+x1

+x1

+x1

3,(2)

8,(5+2)

7,(2)

5,(1)

5,(2)

4,(2)

3,(1)

6,(2+2) x5

+x4

4,(1)

5,(3+2)

10,(5)

2) DestinaŃia 6x a putut fi marcată. Alegem drumul { }6412 ,,: xxxd ;

{ } 5510,27min =−−=θ ; 165112 =+=ϕ . Arcele ( )41 , xx , ( )64 , xx s-au saturat.

x1

x2

x3

x4

x6

+x1

+x1

+x3

3,(2)

8,(7)

7,(2+5)

5,(1)

5,(2)

4,(2)

3,(1)

6,(4) x5

+x2

4,(1)

5,(5)

10,(5+5)

3) DestinaŃia 6x a putut fi marcată. Alegem drumul { }6213 ,,: xxxd ;

{ } 114,23min =−−=θ ; 171163 =+=ϕ . Arcul ( )21 , xx s-a saturat.

Page 135: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

135

x1

x2

x3

x4

x6

+x3

+x1

3,(2+1)

8,(7)

7,(7)

5,(1)

5,(2)

4,(2)

3,(1)

6,(4) x5

+x2

4,(1+1)

5,(5)

10,(10)

4) DestinaŃia 6x a putut fi marcată. Alegem drumul { }62314 ,,,: xxxxd ;

{ } 124,15,78min =−−−=θ ; 181174 =+=ϕ . Arcul ( )31 , xx s-a saturat.

x1

x2

x3

x4

x6

3,(3)

8,(7+1)

7,(7)

5,(1+1)

5,(2)

4,(2)

3,(1)

6,(4) x5

4,(2+1)

5,(5)

10,(10)

Observăm că destinaŃia nu s-a mai putut marca. Deci fluxul este maxim 18=ϕ .

Page 136: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

136

IX. REłELE DE PROGRAMARE A ACTIVITĂłILOR O activitate este un proces precis determinat, care consumă timp şi resurse

şi are următoarele proprietăŃi: indivizibilitate (nu se mai descompune în subactivităŃi), durată cunoscută şi neinteruptibilitate (odată începută, nu mai poate fi întreruptă).

Un proiect este un proces complex destinat atingerii unui scop bine precizat şi care poate fi caracterizat printr-un obiectiv (produs, cantitate de informaŃii etc.), un ansamblu de activităŃi (subacŃiuni, subprocese, operaŃii) şi un proces tehnologic (intercondiŃionările între activităŃi).

O problemă de programare a activităŃilor constă în stabilirea unei ordini de efectuare a operaŃiilor (activităŃilor) unui proiect, astfel ca interdependenŃele dintre ele să fie respectate în cadrul resurselor disponibile şi durata totală de execuŃie a acestuia să fie minimă.

În literatura de specialitate, problemele de programare a activităŃilor mai sunt numite probleme de ordonanŃare.

Un proiect poate fi prezentat prin intermediul unui tabel în care se precizează activităŃile desfăşurate, condiŃionarea lor directă în sensul precedenŃei imediate şi durata de execuŃie a fiecărei activităŃi.

Un exemplu de tabel de prezentare a unui proiect este

ActivităŃile proiectului

ActivităŃile direct precedente

(condiŃionări) Durate

A - 3 B - 2 C A 2 D B 6 E B 4 F C,D,E 4 G E 1

Pornind de la prezentarea proiectului, acesta se poate transpune într-un graf orientat. Există două moduri de construcŃie a grafului de activităŃi, arc activitate sau vârf activitate

Page 137: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

137

9.1. Graful arc/activitate, metoda drumului critic

Pentru construcŃia grafului de activităŃi de tip arc/activitate se procedează după următoarele reguli:

• fiecare activitate este reprezentată de un arc pe care se trece identificarea activităŃii şi în paranteze durata ei. În exemplul de mai sus, considerând activitatea D cu durata de 6, ea se reprezintă printr-un arc

D(6)

• activităŃile care au durata egală cu zero sunt considerate activităŃi de

aşteptare şi se reprezintă prin arce desenate cu linie dublă. Astfel, dacă un proiect conŃine o activitate R cu durata egală cu zero, în graful de activităŃi vom avea reprezentarea

R(0)

• toate activităŃile necondiŃionate se consideră a avea extremitatea iniŃială

comună, vârful obŃinut fiind considerat vârful de start al proiectului. În exemplificarea de mai sus activităŃile necondiŃionate sunt A şi B, deci arcele corespunzătoare lor vor pleca din acelaşi vârf notat s şi vom avea

s

B(2)

A(3)

• toate activităŃile care nu apar în coloana de precedenŃă directă se consideră

a avea o extremitate finală comună, vârful astfel obŃinut fiind considerat vârful terminal al proiectului. În tabelul de activităŃi considerat, activităŃile F şi G nu apar în coloana precedenŃelor directe, deci arcele corespunzătoare lor vor avea o extremitate finală comună notată t obŃinând

Page 138: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

138

t G(1)

F(4)

• toate activităŃile care au o activitate comună care le precede au

extremitatea iniŃială identică cu extremitatea finală a activităŃii care le precede direct. În exemplul considerat activităŃile D şi E sunt condiŃionate direct de activitatea B şi astfel, în graful asociat proiectului avem

E(4)

D(6)

B(2)

• cu exceŃia cazului când între două vârfuri se formează două arce sau a celui

în care se conŃine un vârf în care atât gradul de intrare, cât şi cel de ieşire sunt mai mari decât 1, dacă mai multe activităŃi condiŃionează aceeaşi activitate, atunci extremităŃile finale ale activităŃilor care condiŃionează reprezintă un vârf comun, şi anume extremitatea iniŃială a activităŃii condiŃionate. În tabelul de mai sus, activităŃile C, D şi E condiŃionează activitatea F şi astfel se obŃine

E(4)

C(2)

D(6) F(4)

Page 139: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

139

• când între două vârfuri se formează două arce, ca în cazul

Q(2)

P(3)

se introduce o activitate suplimentară numită activitate fictivă, cu durata de execuŃie zero şi care se reprezintă printr-un arc cu linie punctată. Introducerea acestui arc se poate face la oricare din arcele cu extremităŃile comune pentru a forma o reprezentare

Q(2)

P(3)

Z(0)

sau

Q(2)

P(3) Z(0)

• când atât gradul de intrare, cât şi cel de ieşire dintr-un vârf sunt mai mari

decât 1 se introduc activităŃi fictive pentru a elimina situaŃia apărută. De exemplu, dacă în graful de activităŃi s-a obŃinut situaŃia

Page 140: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

140

G(1)

F(4)

J(3)

H(7)

atunci se introduce activitatea fictivă Z (cu durata egală cu zero) şi se obŃine graful

G(1)

F(4)

J(3)

H(7)

în care fiecare vârf are fie gradul de ieşire, fie cel de intrare egal cu 1.

• în final se numerotează vârfurile crescător de la vârful s către vârful t . Considerând proiectul prezentat în tabelul de mai sus, respectând modul de

construcŃie al grafului de activităŃi de tipul arc/activitate, rezultă reprezentarea

s t

1

2 3

4

A(3)

B(2)

C(2)

D(6)

E(4) G(1)

F(4)

Metoda drumului critic sau algoritmul lui Ford asociază fiecărul vârf o casetă cu două celule, cea stângă pentru specificarea timpului minim de început a activităŃilor care au vârful drept extremitate iniŃială (numit şi termenul cel mai devreme de începere a activităŃilor), şi cea dreaptă pentru timpul maxim de începere a activităŃilor respective (sau termenul cel mai târziu de începere a activităŃilor). Pentru un vârf i vom nota timpul minim cu min

it şi timpul maxim cu Maxit iar caseta asociată vârfului va fi de forma

Page 141: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

141

min Maxi it t .

Considerăm că în urma construcŃiei s-a obŃinut graful ( ),G X U= în care

dacă un arc ( ),x y corespunde activităŃii xyN , atunci are ponderea xyd egală cu

durata execuŃiei activităŃii şi în rest 0xyd = . Formăm astfel o matrice de ponderare

corespunzătoare duratelor de execuŃie ale activităŃilor ( ),xy x y X

D d∈

= , care este o

matrice pătrată de ordin X .

Algoritmul 1. 1. Se iniŃializează caseta vârfului s cu

min 0st = .

2. Dacă s-a completat mintt , atunci se trece la pasul 6, altfel se continuă.

3. Se determină mulŃimea ( ){ }min, , completati j i jA x X x x U t= ∈ ∈ .

4. Pentru fiecare x A∈ se determină ( )

( )min min

,maxx y yxy x U

t t d∈

= + .

5. Se trece la pasul 2. 6. Se iniŃializează

Max mint tt t= din caseta vârfului t .

7. Dacă s-a completat Maxst , atunci ne oprim, drumul care trece prin vârfurile

cu min Maxx xt t= este drumul optim în reŃeaua de pragramare a activităŃilor

(numit şi drum critic), altfel se continuă.

8. Se determină mulŃimea ( ){ }Max, , completati i j jB x X x x U t= ∈ ∈ .

9. Pentru fiecare x B∈ se determină ( )

( )Max Max

,minx x yxy x U

t t d∈

= − .

10. Se trece la pasul 7. ■

Exemplul 1. Considerăm un proiect în care activităŃile sunt cele din tabelul

ActivităŃile proiectului

ActivităŃile direct precedente

(condiŃionări) Durate

A - 3 B - 2 C A 2 D B 6 E B 4 F C,D,E 4 G E 1

Page 142: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

142

Aşa cum s-a văzut mai sus se obŃine graful ( ),G X U= cu

{ },1, 2,3,4,X s t= şi ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ },1 , , 2 , 1,4 , 2,3 , 2, 4 , 3, 4 , 3, , 4,U s s t t= .

Se obŃine următoarea matrice a ponderilor asociate duratelor de execuŃie: 0 3 2 0 0 00 0 0 0 2 00 0 0 4 6 00 0 0 0 0 10 0 0 0 0 40 0 0 0 0 0

D

=

Graful, la care se adaugă casetele asociate fiecărui vârf, are reprezentarea

s t

1

2 3

4

A(3)

B(2)

C(2)

D(6)

E(4) G(1)

F(4)

Aplicând pasul 1 facem min 0st = şi deoarece nu s-a completat min

tt are loc prima iteraŃie a paşilor 3, 4 şi 5. Paşi 3, 4, 5, iteraŃie 1. ObŃinem { }1,2A = .

Pentru 1x = avem doar arcul ( ),1s şi astfel

( )( ) ( ){ }min min

1 1,1max max 0 3 3y yy U

t t d∈

= + = + = .

Pentru . 2x = avem doar arcul ( ), 2s şi astfel

( )( ) ( ){ }min min

2 2,2max max 0 2 2y yy U

t t d∈

= + = + = .

Cum încă nu s-a completat mintt se reiterează.

Paşi 3, 4, 5, iteraŃie 2. ObŃinem { }3A = .şi având doar arcul ( )2,3 rezultă

( )( ) ( ){ }min min

3 3,3max max 2 4 6y yy U

t t d∈

= + = + = . Din nou nu s-a completat mintt .

Paşi 3, 4, 5, iteraŃie 3. Ajungem la { }4A = pentru care avem arcele

( )1,4 , ( )2,4 şi ( )3,4 astfel că

Page 143: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

143

( )( ) ( ) ( ) ( ){ }min min

4 4,4max max 3 2 , 2 6 , 6 0 8y yy U

t t d∈

= + = + + + =

Neavând completat mintt realizăm o nouă iteraŃie.

Paşi 3, 4, 5, iteraŃie 4. Avem { }A t= şi arcele ( )3, t şi ( )4, t de unde

rezultă

( )( ) ( ) ( ){ }min min

,max max 6 1 , 8 4 12t y yty t U

t t d∈

= + = + + =

Deoarece s-a completat mintt trecem la pasul 6 şi facem Max min 12t tt t= = .

Imaginea care se obŃine în acest moment pentru reŃeaua de planificare a activităŃilor este

s t

1

2 3

4

A(3)

B(2)

C(2)

D(6)

E(4) G(1)

F(4) 3

2 6

8 12 12 0

Deoarece nu s-a completat Max

st trecem la realizarea primei iteraŃii pentru paşii 8, 9 şi 10.

Paşi 8, 9, 10, iteraŃie 1. Avem { }4B = şi doar arcul ( )4, t şi astfel

( )( ) ( ){ }Max Max

4 44,min min 12 4 8x x

x Ut t d

∈= − = − = .

Deoarece nu s-a completat Maxst se trece la o nouă iteraŃie.

Paşi 8, 9, 10, iteraŃie 2.ObŃinem acum { }1,3B = .

Pentru 1y = avem doar arcul ( )1,4 şi astfel

( )( ) ( ){ }Max Max

1 11,min min 8 2 6x x

x Ut t d

∈= − = − = .

Pentru 3y = avem arcele ( )3,4 şi ( )3, t şi astfel rezultă

( )( ) ( ) ( ){ }Max Max

3 33,min min 8 0 , 12 1 8x x

x Ut t d

∈= − = − − = .

Din nou nu este completat Maxst şi realizăm iteraŃia a treia.

Paşi 8, 9, 10, iteraŃie 3. Se obŃine { }2B = cu arcele ( )2,3 şi ( )2,4 astfel

că ajungem la

( )( ) ( ) ( ){ }Max Max

2 22,min min 8 4 , 8 6 2x x

x Ut t d

∈= − = − − = .

Page 144: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

144

Cum încă nu s-a realizat completarea lui Maxst continuăm iteraŃiile.

Paşi 8, 9, 10, iteraŃie 4. Se obŃine { }B s= cu arcele ( ),1s şi ( ), 2s astfel

că ajungem la

( )( ) ( ) ( ){ }Max Max

,min min 6 3 , 2 2 0s x sxs x U

t t d∈

= − = − − = .

Deoarece s-a completat Maxst algoritmul se termină, iar drumul critic al

proiectului este format de succesiunea de activităŃi ( ), ,B D F .

Imaginea grafică la care se ajunge prin completarea timpilor maximi şi în care drumul critic s-a marcat prin îngroşarea liniilor de trasare a arcelor din care este format este

s t

1

2 3

4

A(3)

B(2)

C(2)

D(6)

E(4) G(1)

F(4) 3

2 6

8 12 12 0 8

2

6

8

0

9.1. Graful vârf/activitate, metoda potenŃialului Dorim construcŃia unui graf orientat în care activităŃile sunt plasate în vârfurile grafului. Pentru a utiliza vârfurile şi pentru realizarea algoritmului de determinare a drumului critic, vârfurile vor fi casete formate din 6 celule de forma

,min ,min

Max Max

i t

i i i

i t

i i i

t N t

t t t

unde, pentru fiecare vârf i • iN este identificarea activităŃii;

• it este dutara de realizare a activităŃii;

• ,mini

it este momentul minim de începere a activităŃii;

• ,mint

it este momentul minim de terminare a activităŃii;

• ,Maxi

it este momentul maxim de începere a activităŃii;

• ,Maxt

it este momentul maxim de terminare a activităŃii. Presupunem că proiectul este format din n activităŃi.

Page 145: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

145

În afara activităŃilor specificate în proiect se introduc două activităŃi noi, activitatea de start, pentru care 0N s= şi 0 0t = şi activitatea de terminare cu

1nN t+ = şi 1 0nt + = . Pentru construcŃia grafului se folosesc următoarele reguli:

• Intervine un arc ( )0, i dacă activitatea iN nu este condiŃionată de nicio

activitate, 1 i n≤ ≤ . • Apare un arc ( ), 1i n + dacă activitatea iN nu condiŃionează nicio

activitate, 1 i n≤ ≤ . • Se consideră că există arcul ( ),i j dacă activitatea iN condiŃionează

activitatea jN , 1 ,i j n≤ ≤ .

Exemplul 2. Considerăm tabelul de specificaŃie a proiectului Nr. crt. i

ActivităŃile proiectului

iN

ActivităŃile direct precedente

(condiŃionări)

Durate

it

1 A - 3 2 B - 2 3 C A 2 4 D B 6 5 E B 4 6 F C,D,E 4 7 G E 1

Numărul specificat al activităŃilor este 7 şi astfel vom construi un graf orientat în care { }0,1, 2,3,4,5,6,7,8X = , considerând şi cele două vârfuri

suplimentare. Graful ( ),G X U= va avea următoarele arce:

• ( )0,1 şi ( )0,2 , deoarece activităŃile 1N şi 2N sunt necondiŃionate;

• ( )6,8 şi ( )7,8 , deoarece activităŃile 6N şi 7N nu condiŃionează alte

activităŃi; • deoarece activitatea A condiŃionează pe C, rezultă arcul ( )1,3 ;

• activitatea B condiŃionează activităŃile D şi E şi astfel generează arcele ( )2,4 şi ( )2,5

• activitatea G este condiŃionată de E şi se produce arcul ( )5,7 ;

• Fiecare din activităŃile C, D şi E condiŃionează pe F şi astfel avem arcele ( )3,6 , ( )4,6 şi ( )5,6 .

Rezumând raŃionamentele făcute am obŃinut

Page 146: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

146

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ){ }0,1 , 0, 2 , 1,3 , 2, 4 , 2,5 , 3,6 , 4,6 , 5,6 , 5,7 , 6,8 , 7,8U =

Graful are reprezentarea grafică

s t

A

B

C

D

E

F

G 0 0

3

2

2

6

4

4

1

0

1

2

3

4

5

6

7

8

Pentru determinarea drumului critic în grafurile de activităŃi de tip vârf/activitate se aplică un algoritm similar celui pentru vârfurile de activităŃi arc/activitate. Algoritm 2.

1. Se iniŃalizează ,min ,min

0 0 0i tt t= = .

2. Dacă s-a completat ,min1

t

nt + se trece la pasul 6, altfel se continuă. 3. Se determină mulŃimea A a vârfurilor pentru care toate arcele care intră

au completate valorile de timp minim de terminare la extremităŃile iniŃiale. 4. Pentru fiecare i A∈ se calculează

( )

,min ,min

,maxi t

i jj i U

t t∈

= şi apoi

,min ,mint i

i i it t t= + . 5. Se trece de la pasul 2. 6. Facem iniŃializările

,Max ,Max ,min1 1 1

i t t

n n nt t t+ + += = .

7. Dacă s-a completat ,Max

0it , atunci ne oprim, drumul critic este drumul care

trece prin vârfurile k în care ,Max ,mint t

k kt t= , altfel se continuă.

8. Se determină mulŃimea B a vârfurilor pentru care toate arcele care ies au

completate valorile de timp maxim de început la extremităŃile finale. 9. Pentru fiecare j B∈ se calculează

( ),Max ,Max

,mint i

j ij i U

t t∈

= şi apoi

,Max ,Maxi t

j j jt t t= − .

10. Se trece de la pasul 7. ■

Page 147: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

147

Exemplul 3. Considerăm că lucrăm pe proiectul prezentat în exemplele anterioare. Modul de lucru al algoritmului este similar procesului descris integral în exemplul 2. În urma calculelor vom obŃine rezultatele trecute în următoarea reprezentare, în care am desenat cu linie îngroşată arcele ce fac parte din drumul critic care este ( )0,2, 4,6,8C = şi astfel corespunde succesiunii de

activităŃi ( ), , , ,s B D F t sau, eliminând activităŃile de start şi terminare, la

succesiunea ( ), ,B D F .

s t

A

B

C

D

E

F

G 0 0

3

2

2

6

4

4

1

0

1

2

3

4

5

6

7

8 0 0 0 0

0

0

3 3 5

2

2

2

8

6

8

6 7

12

12 12 12 12

12

12

8

11

8

8

8

6

4

2

6 3

2 0

Page 148: SILVIU BẬRZĂ LUCIANA MARIA MOROGAN ALGORITMICA · PDF file · 2010-09-13universitatea spiru haret facultatea de matematicĂ informaticĂ silviu bẬrzĂ luciana maria morogan algoritmica

148

BIBLIOGRAFIE

1. I. Tomescu, Combinatorică şi teoria grafurilor, Editura UniversităŃii din. Bucureşti, 1990

2. Bang-Jensen, G. Gutin, Digraphs Theory, Algorithms and Applications, Springer-Verlag, 2007

3. J.A. Bomdy, U.S.R. Murty, Graph Theory, Springer, 2007 4. I. Tomescu, Probleme de combinatorică şi teoria grafurilor, Editura

Didactică şi Pedagogică, Bucureşti, 1981. EdiŃia engleză: Problems in

Combinatorics and Graph Theory, John Wiley, New York , 1985.

5. M. Behzad, G. Chartrand, L. Lesniak-Foster, Graphs & Digraphs, Prindle, Weber & Schmidt, Boston, Massachusetts, 1979.

6. B. Bollobas, Graph Theory. An Introductory Course, Springer-Verlag, New York, Heidelberg, Berlin, 1979.

7. C. Berge, Teoria grafurilor şi aplicaŃii, Editura Tehnică, Bucureşti, 1971