Drumuri Hamilt. RoyW & Yen

June 30, 2018 | Author: Ionut Marin | Category: N/A
Share Embed Donate


Short Description

Download Drumuri Hamilt. RoyW & Yen...

Description

II GRAFURI TARE CONEXE DRUMURI HAMILTONIENE HAMILTONIENE DISTANTE MINIME ALGORITMI MATRICEALI Daca notiunea de conexitate intr-un graf orientat este definita cu ajutorul conceptului de lant, notiunea de tare conexitate se va defini cu ajutorul conceptului de drum.

(V,U) se numeste tare conex  Definitia 1 Un graf G = (V,U) daca are proprietatea ca pentru oricare doua varfuri distincte  x,y exista un drum de la  x la y si un drum de la  y la x.

Altfel zis, oricare doua varfuri din graful orientat sa se afle pe un circuit. Matricea drumurilor unui graf tare conex are toate elementele egale cu unu.   Definitia 2 Se numeste componenta tare conexa a unui graf orientat

'

'

'

G = (V,U), un subgraf G =(V ,U ) cu

proprietatea ca est estee tare conex si maximal in raport cu aceasta aceasta proprietate, adica

∀z∈V\V' subgraful

lui G generat de V ' ∪{z}

nu mai este tare conex. Fie R o relatie binara definita pe multimea V a grafului orientat G = (V,U), astfel:  xRy daca  x=y sau exista un drum

1

de la   x la y si un drum de la  y la  x. Aceasta relatie este o relatie de echivalenta (Exercitiu!). Clasele de echivalenta corespunzatoare relatiei  R sunt componentele tare conexe ale lui G.  Exemplul 1 Sa consideram urmatorul graf graf orientat G care nu este tare conex.

2

4

6 1

3

5

Fig.1 Componentele tare conexe sunt: C 1={1,2,3,4};C2={5}; C3={6}.   Propozitia 1 Fie C 1 si C 2 doua componente tare '  ' 

conexe distincte si varfurile  x,y din C 1,  x ,y din C 2. Daca exista un drum d  x,x ,'  atunci nu va mai exista un drum d  y ,'  y. 2

 Demonstratie: Sa presupunem ca ar exista un drum '  d  y , y in graf. Atunci, conform ipotezei, vor exista drumurile '  '  '  '  d  x,x ,y si d  y, y,x. Prin urmare, varfurile  x si  y s-ar gasi pe un

circuit (contradictie!).

 Descrierea unui algoritm matriceal pentru identificarea componentelor tare conexe

Pentru

determinarea

componentelor

tare

conexe

intr-un graf orientat G=(V,U), se poate utiliza matricea drumurilor  asociata grafului. Daca matricea  D

are toate

elementele de pe diagonala principala egale cu 1, atunci toate varfurile lui G se afla in circuite. Sa notam cu S(x j) multimea varfurilor lui G care sunt extremitati finale ale unor drumuri care pleaca din  x j, iar cu P(x j) multimea tuturor varfurilor din G care sunt extremitati initiale ale unor drumuri care sosesc in

varful x j. Se observa ca multimea S(x j) consta din acele varfuri  xk  cu proprietatea d[x j,x k ] =1, adica varfurile corespunzatoare

coloanelor din matricea  D care contin elemente egale cu unu pe linia  j. Analog, multimea P(x j) consta din acele varfuri  x k  cu proprietatea ca d[x k ,x j] = 1, adica varfurile corespunzatoare liniilor din D care contin elemente egale cu unu pe coloana  j. Componenta tare conexa corespunzatoare varfului  x j va fi (S(x j)∩P(x j)) ∪{x j }. 3

 Matrice latine. Drumuri hamiltoniene

A. Kaufmann si J. Malgrange au introdus in calculul operational conceptul de matrice latina. Matricele latine participa la relatia de definire a unui graf. Secvente de varfuri ale unui graf orientat pot fi caracterizate de anumite proprietati.   Definitia

3 Varfurile unui graf orientat care au

aceeasi proprietate P si care se succed intr-o anumita ordine compatibila cu ordinea din graf se numeste secventa. Operatia ce se poate realiza cu secventele, care au aceeasi proprietate P, este concatenarea. Prin concatenarea a doua secvente, cu aceeasi proprietate P,

s1

=  xi , xi 1

obtine secventa s1 * s 2

2

,..., xim , s 2

=  xi , xi 1

2

=  x j , x j 1

2

,..., x jn , se

,..., xim , x j2 , x j3 ,..., x jn , daca

au loc urmatoarele doua conditii: 1)  xim 2)

=  x j

1

s1*s2 are proprietatea P.

Daca una din cele doua conditii nu este indeplinita, atunci se va considera s1*s2 = φ . Conventii: φ * s

= φ ; s *φ = φ ; φ * φ = φ.

 Exemplul 2 Se considera urmatorul graf orientat:

4

1

2

5

3

4 Fig. 2

Proprietatea P consta in faptul ca varfurile din secvente se afla pe drumuri elementare. Fie secventele: s1= 2 5 3 s2= 2 1 4 s3= 3 2 1 4 s4=3 1 4. Se observa ca: s1*s2= φ (nu are loc conditia 1) s1*s3= φ (drumul (2 5 3 2 1 4) nu este elementar) s1*s4= (2 5 3 1 4). Concatenarea este o operatie asociativa, dar nu este 5

comutativa. Tranzitiile din graf

se vor dispune sub forma unui

tablou (matrice latina).

(0)

A

1

2

3

1 2

2,1

3

3,1

3,2

4

4,1

4,2

4

5

1,4

1,5 2,5

4,3 5,3

5

Vom construi matricea  A(1) pornind de la matricea A(0) luand secventele fara primul element al lor tinand cont de definitia concatenarii.

(1)

A

1

2

3

1 2

1

3

1

2

4

1

2

4

5

4

5 5

3 3

5

Concatenarea celor doua tablouri se realizeaza similar

6

produsului a doua matrice prin

tehnica " linie-coloana",

astfel:

(2)

A

1

2

3

4

5

143 1

-

142

153

φ

φ

2

φ

-

253

214

215

3

321

φ

-

314

315 325

4

421

φ

432

-

415

431 5

531

425

φ

532

φ

-

(0)

  Exemplu de calcul: Linia 1 din A

"inmultita" cu

coloana 1 din  A(1) va conduce la secventa 1 4 1 care este un circuit de lungime 2 si nu ne intereseaza de aceea am trecut (-). In rest se obtin numai secvente vide ( φ ). La acest pas, se vor obtine toate drumurile elementare de lungime 2. In continuare, se va efectua operatia intre  A(2) si  A(1) pentru a obtine  A(3) ce va indica drumurile elementare de lungime 3.

7

(3)

A

1

1

-

2

3

4

5

1432

φ

φ

1425

2143

φ

φ

1532 2531

2

-

2153 3

φ

3142

4

4321

φ

-

3214

3215

-

4215

4153 4253

4315 4325

φ

5321

5

φ

5314

-

Drumurile elementare de lungime 4, le vom intalni ca elemente in tabloul A(4). Pentru a calcula pe  A(4) vom opera cu tablourile  A(3) si (1)

 A .

(4)

1

2

1

-

φ

2

φ

-

3

φ

A

3

14253

φ

φ

4

φ 25314

-

φ

5

14325

φ 31425

4

42531

41532

42153

-

43215

5

φ

53142

φ

53214

-

8

(5)

A

1

2

3

4

5

1

-

φ

φ

φ

φ

2

φ

-

φ

φ

φ

3

φ

φ

-

φ

φ

4

φ

φ

φ

-

φ

5

φ

φ

φ

φ

-

In tabloul  A(5) ar trebui sa se identifice drumurile elementare de lungime 5. Se observa ca nu exista drumuri elementare de lungime 5. Prin urmare, exista drumuri hamiltoniene in graf (vezi (4)  A ).

Reluati calculele si identificati circuitul hamiltonian din graful considerat.

 Algoritmi pentru calculul distantelor minime



R+ o

functie care asociaza fiecarui arc din G un numar

real

Fie G = (V,U) un graf orientat si

λ

: U

nenegativ numit lungimea sa. In cazul de fata, prin lungimea unui drum din G se intelege suma lungimilor arcelor sale, iar distanta minima dintre doua varfuri oarecare ale lui G consta

in lungimea drumurilor scurte care au ca extremitati aceste varfuri. 9

 Algoritmul lui Roy-Floyd 

Fie G = (V,U) un graf orientat cu V = {x 1,x2,…,xn}, etichetat. Vom defini matricea distantelor directe ale lui G ca fiind matricea  A(nxn) unde:

λ ((x i , x j )) daca ( xi , x j ) ∈ U   (1≤ i,j ≤ n) a[i,  j ] = 0 daca i =  j ∞ daca ( x , x ) ∉ U  i  j  Fie  A*(nxn) matricea distantelor

minime dintre

varfurile grafului orientat G care se defineste astfel:

0 daca i =  j  * a [i,  j ] = min i, j ∞ altfel 

(1≤i,j ≤ n)

unde mini,j reprezinta minimul dintre lungimile drumurilor cu extremitatile i, j. Rolul acestui algoritm este de a gasi matricea distantelor minime  A* pornind de la matricea distantelor directe A. for k=1 , n for i =1 , n if (i≠k) for j = 1 , n if (j≠i ∧ j≠k) a[i,j] = min (a[i,j] , a[i,k]+a[k,j] ) 10

Ciclurile  for(i),  for(j), vor recalcula elementele cu indici diferiti intre ei ale unei submatrice cu n-1 linii si n-1 2

coloane, deci este necesar un numar de (n-1) –(n-1) = (n-1)* (n-2) operatii de adunare, respectiv comparatii. Intregul algoritm

(incluzand  for(k))

va

necesita

un

numar

de

n(n-1)(n-2) operatii de adunare si tot atatea comparatii , adica 3

O(n ). Observatie: Algoritmul respectiv se poate trata si in

limbaj operatorial . (k-1)

Tk (A

(k)

)=A

(k=1,n) unde,

min{ A ( k −1) (i,  j), A ( k −1) (i, k ) +  A ( k −1) (k ,  j )}, i ≠  j ≠ k   ( k ) ( k −1)  A (i,  j ) =   A (i,  j ), daca i = k  sau  j = k   0, daca i =  j (1 ≤ i,  j ≤ n)  Asadar, la aplicarea operatorului T k , linia si coloana k  din matricea  A(k) raman nemodificate, adica identice cu cele (k-1)

din matricea  A

.

Elementele de pe diagonala principala a matricei  A sunt egale cu zero. Acest algoritm, putin modificat, poate servi la determinarea drumurilor de lungime minima dintre varfurile grafului orientat G. Vom defini o matrice  D(nxn) ale carei elemente reprezinta submultimi de varfuri ale lui G. Initializarea matricei D va fi de forma urmatoare: 11

{x i } daca a[i,  j ] < ∞ d [i,  j ] =  φ daca a[i,  j ] = ∞ Elementul

(1≤i,j ≤ n)

d[i,j] reprezinta submultimea varfurilor

vecine varfului  x j aflate pe drumuri de la  xi la  x j. In ciclurile dupa i si j, elementele d[i,j] se reactualizeaza astfel:

d[i, j] daca a[i, j] < a[i, k] + a[k, j]  d [i,  j ] = d[i, j] ∪ d[k, j] daca a[i, j] = a[i, k] + a[k, j] d[k, j] daca a[i, j] > a[i, k] + a[k, j]  (1≤i , j , k  ≤ n) Cunoscand varfurile vecine (in sens invers orientarii drumului) pentru orice drum de lungime minima din graf, acesta se poate reconstitui usor.   Exemplul 4 Sa consideram urmatorul graf: 2

3

2

1

2 4

5

1

8

4

5

5

6

1 Fig. 6 12

3

5

Vom calcula matricea distantelor minime  A* si a drumurilor minime  D*.

(0)

 A=A

1

2

3

4

5

6

1



1

4







2



0

2

5

8



3





0

2

5



4







0

3

5

5









0

1

6











0

(0)

Matricea A=A (matricea distantelor directe)

(0)

 D

1 2

1  x1

2

3

4

5

6

 x1

 x1

 x2

 x2

 x2

 x2

 x3

 x3

 x3

 x4

 x4

 x4

 x5

 x5

3 4 5

 x6 

6

Matricea initiala D

(0)

 Nota: casuta libera desemneaza faptul ca ea contine multimea vida de varfuri. 13

Se va aplica operatorul T 1 matricei  A(0) . Deoarece coloana 1 din matricea  A(0) are toate elementele (1)

 D

∞ ,  A(1) =A(0) ,

(0)

=D .

Se aplica operatorul T 2 matricei A(1) si se obtine:

 A

(2)

1

2

3

4

5

6

1

0

1

3

6

9

2

∞ ∞ ∞ ∞ ∞

0

2

5

8

∞ ∞ ∞ ∞

0

2

5

∞ ∞ ∞

∞ ∞ ∞

0

3

5

∞ ∞

0

1



0

3 4 5 6

Matricea A(2) Pentru a calcula, de exemplu, elementul (1)

(1)

(2)

A (1,3),

(1)

vom calcula min{ A (1,3), A (1,2)+A (2,3)} (s-a aplicat operatorul T 2 , deci k=2). Linia si coloana 2 raman identice (1) cu cele din matricea  A . (2)

 D

1 2 3

1  x1

2

3

4

5

6

 x1

 x2

 x2

 x2

 x2

 x2

 x2

 x2

 x3

 x3

 x3

 x4

 x4

 x4

 x5

 x5

4 5

 x6 

6 14

Matricea  D(2) se calculeaza prin actiunea operatorului (1) (1) T 2 asupra matricei  A si tinand seama de matricea  D . De

exemplu, pentru a calcula elementul  D(2)(1,3) se vor compara elementele  A(1)(1,3) cu elementul suma  A(1)(1,2)+A(1)(2,3). Se (1)

(1)

(1)

gaseste ca A (1,3)> A (1,2)+A (2,3) (k=2). Prin urmare, se va lua  D(2)(1,3)=D(1)(2,3). Linia si coloana 2 din matricea  D(2) vor fi identice cu cele din matricea  D(1). Diagonala principala, evident, nu se va modifica. Analog se vor calcula, in continuare, elementele matricelor  A(3),..., A(6) , respectiv D(3),..., D(6).  A(3)

1

2

3

4

5

6

1

0

1

3

5

8

2

∞ ∞ ∞ ∞ ∞

0

2

4

7

∞ ∞ ∞ ∞

0

2

5

∞ ∞  ∞

∞ ∞ ∞

0

3

5

∞ ∞

0

1



0

3 4 5 6

Matricea A(3). Se aplica operatorul T 3(A(2)). (3)

 D

1 2 3

1  x1

2

3

4

5

6

 x1

 x2

 x3

 x3

 x2

 x2

 x3

 x3

 x3

 x3

 x3

 x4

 x4

 x4

 x5

 x5

4 5

 x6 

6 15

Matricea  D(3) (Se va tine seama de matricea T 3(A(2)) si D(2)) (4)

1

2

3

4

5

6

1

0

1

3

5

8

10

2

∞ ∞ ∞ ∞ ∞

0

2

4

7

9

∞ ∞ ∞ ∞

0

2

5

7

∞ ∞ ∞

0

3

5

∞ ∞

0

1



0

 A

3 4 5 6

 

Matricea  A(4). Se aplica operatorul T 4(A(3)).  D(4)

1

2

3

4

5

6

1

 x1

 x1

 x2

 x3

 x3 ,x4

 x4

 x2

 x2

 x3

 x3 ,x4

 x4

 x3

 x3

 x3 ,x4

 x4

 x4

 x4

 x4

 x5

 x5

2 3 4 5

 x6 

6

(Se va tine seama de matricea T 4(A(3)) si D(3)) (5)

1

1

0

1

3

5

8

9

2

∞ ∞ ∞ ∞ ∞

0

2

4

7

8

∞ ∞ ∞ ∞

0

2

5

6

∞ ∞ ∞

0

3

4

∞ ∞

0

1



0

 A

3 4 5 6

2

3

16

4

5

6

 

(5)

 D

1

1  x1

2

2

3

4

5

6

 x1

 x2

 x3

 x3 ,x4

 x5

 x2

 x2

 x3

 x3 ,x4

 x5

 x3

 x3

 x3 ,x4

 x5

 x4

 x4

 x5

 x5

 x5

3 4 5

 x6 

6

Matricea D(5)  A

(6)

1

2

3

4

5

6

1

0

1

3

5

8

 9

2

∞ ∞ ∞ ∞ ∞

0

2

4

7

8

∞ ∞ ∞ ∞

0

2

5

6

∞ ∞ ∞

0

3

4

∞ ∞

0

1



0

3 4 5 6

* Matricea A(6). Se aplica operatorul T 6 (A(5))=A(5)= A  . (6)

 D

1 2 3

1

2

3

4

5

6

 x1

 x1

 x2

 x3

 x3 ,x4

 x5

 x2

 x2

 x3

 x3 ,x4

 x5

 x3

 x3

 x3 ,x4

 x5

 x4

 x4

 x5

 x5

 x5

4 5 6

 x6  *

Matricea  D(6)= D 17

 

Se gaseste distanta minima de la  x1 la  x6  ca fiind * a [1,6] = 9 . Drumurile de lungime minima de la  x1 la  x6  se

observa din matricea  D* astfel: Elementul d*[1,6] = x5. Se cauta in prima linie si a 5-a coloana si se gaseste d*[1,5] ={ x3 ,x4 }, adica drumurile de lungime minima de la  x1 la x6  se vor termina prin succesiunile  x3 ,x5 ,x6 , respectiv x4 ,x5 ,x6 .

Pentru prima succesiune de varfuri cautam in prima linie si a treia coloana si gasim  x2, iar in coloana a doua se gaseste  x1. Asadar un drum de lungime minima de la  x1 la  x6  este (x1 ,x2 ,x3 ,x5 ,x6 ) . Procedand analog cu a doua succesiune, se obtine al doilea drum minim (x1 ,x2 ,x3 ,x4 ,x5 ,x6 ). Fiecare din cele doua drumuri au lungimea 9. In algoritmul descris se observa ca, dupa etapa de initializare ( Θ(n ) ), se trece la recalcularea elementelor cu 2

indici diferiti intre ei pentru o submatrice de dimensiuni (n-1)*(n-1). Este necesar un numar de (n-1)(n-2) operatii de adunare, respectiv comparatii. In total se vor executa un numar de n(n-1)(n-2) operatii de adunare si tot atatea comparatii. Asadar, ordinul de complexitate al algoritmului este

Θ(n 3 ).

 Algoritmul lui Yen

Acest algoritm este util in determinarea distantelor  minime a*[1,2], a*[1,3],...,a*[1,n] de la varful  x1 la varfurile  x2 , x3 ,…,xn ale grafului orientat G = (V,U). 18

 Descrierea algoritmului

p1. Se determina in matricea distantelor directe  A, minimul dintre distantele directe a[1,2], a[1,3], …,a[1,n]. Daca acest minim se realizeaza, de exemplu, pentru un indice i0, adica

a[1,i o] =

min{a[1,k] / k = 2,3,…,n},

atunci

distanta minima este a*[1,i0] = a[1,io]. Este posibil ca indicele i0 sa nu fie unic.

p2. Elementele din prima linie a matricei  A se vor transforma astfel: Pentru orice i≠1, io, elementul a[1,i] se inlocuieste cu min(a[1,i] , a[1,io]+a[io ,i]). Din matricea obtinuta se suprima

linia si coloana de rang io, conservand rangurile initiale din matricea A, pentru liniile si coloanele ramase. Daca matricea obtinuta este de ordinul 2, atunci elementul a[1,2] din aceasta matrice reprezinta distanta minima de la varful  x1 la varful  xk  unde k  este rangul initial al coloanei a doua din matricea curenta. In aceasta situatie algoritmul se opreste deoarece au fost determinate distantele minime a*[1,2] , a*[1,3] ,…,a*[1,n]. In caz contrar, se va trece la primul pas, efectuandu-se aceleasi operatii asupra matricei curente ca si asupra lui  A initial. In acest moment un element a[1,i] va fi elementul din prima linie si coloana i a matricei obtinute, pentru care s-au conservat rangurile initiale ale liniilor si coloanelor matricei  A. Complexitatea algoritmului va fi determinata de 19

numarul operatiilor de adunare si comparare folosite de algoritm. La pasul  p1 sunt necesare cel mult n-2 comparari, deoarece elementele a[1,i] =

∞ nu se vor lua in considerare.

La pasul p2 sunt necesare cel mult n-2 adunari si n-2 comparari. Se observa ca ordinul matricei  A scade cu cate o unitate la fiecare executie. In concluzie, vor fi necesare cel n−2

∑ q = (n − 1)(n − 2) comparari si

mult un numar de 2

cel

q =1

n−2

mult un numar de

∑q = q =1

(n − 1)(n − 2) 2

adunari .

Aplicand algoritmul lui Yen de n ori, vom determina distantele minime de la  x1 la toate celelalte varfuri, de la  x2 la celelalte varfuri, …..,de la  xn la toate celelalte varfuri ale grafului orientat, adica distantele minime intre oricare doua varfuri ale grafului G. Pentru aceasta sunt necesare cel mult n(n-1)(n-2) 3

comparari si n(n-1)(n-2) / 2 adunari, adica O(n ) .  Exemplul 5

Sa se determine distantele minime de la

varful  x1 la celelalte varfuri ale grafului orientat G=(V,U), dat in fig. 6.

20

 A

1

2

3

4

5

6

1

0

1

4







2



0

2

5

8



3





0

2

5

8

4







0

3

5

5









0

1

6











0

 A-Matricea distantelor directe

In matricea

distantelor directe  A se observa ca pe

prima linie elementul minim este a[1,2] = 1, deci a*[1,2] =1 (io=2). Celelalte elemente ale primei linii se vor recalcula: a[1,3]= min(a[1,3], a[1,2] + a[2,3] ) = 3; a[1,4] = 6 ;a[1,5] = 9 ;a[1,6] = ∞ . Se vor suprima linia si coloana de rang 2, obtinand matricea

in care se vor mentine vechile ranguri de linii si

coloane din A. 1

3

4

5

6

 A(1)

1

2

3

4

5

1

1

0

3

6

9

3

 2

0

2

5

4

 3

3

5

 4

1

 5

∞ ∞

0

6

∞ ∞ ∞

0

5

∞ ∞ ∞ ∞

∞ ∞



0

21

Elementul minim, din prima linie,

este a*[1,3] =

a[1,3] = 3 .

Continuand rationamentul, se vor obtine urmatoarele matrice:

 A

(2)

1

4

5

6

1

2

3

4

1

1

0

5

8



4

 2

0

3

5

5

 3

1

 4

∞ ∞

0

6

∞ ∞ ∞



0

Se vede ca a*[1,4] = 5.

 A

(3)

1

5

6

1

2

3

1

1

0

8

10

5

 2

0

1

6

 3

∞ ∞



0

Elementul obtinut este a*[1,5] = 8.

(4)

 A

1

6

1

2

1

1

0

9

6

 2



0

22

In final, se obtine a*[1,6] = 9. Algoritmul se opreste in acest moment. Distantele minime gasite sunt: a*[1,2] = 1; a*[1,3] = 3; a*[1,4] = 5; a*[1,5] = 8 ; a*[1,6] = 9. Acestea sunt elementele minime

diferite de zero de pe prima linie din matricea curenta. Pentru determinarea drumurilor de lungime minima de la varful x1 la varful x6  se va proceda astfel: Daca (xk  , x j) este ultimul arc al unui drum minim de la varful  xi la varful  x j, atunci

a*[i,j] = a*[i,k] + a[k,j],

deoarece, daca consideram un drum minim de la  xi la  xk  pe care sa-l prelungim cu arcul (xk  ,x j), lungimea acestui drum de la  xi la  x j este egala cu a*[i,k] + a[k,j] = a*[i,j], adica este drumul minim de la  xi la x j al carui ultim arc este (xk  ,x j). Prin urmare, daca consideram indicii k= k 1 ,k 2 ,…,k s care satisfac relatia a*[i,j] = a*[i,k] + a[k,j], atunci arcele

( x k 1 , x j ), ( x k 2 , x j ),..., ( x k s , x j )

sunt

ultimele

arce

din

drumurile minime de la  xi la x j. Pentru fiecare din acesti

indici

se va repeta

procedeul, gasind ultimele arce care ajung in  xk1 din drumurile minime de la varful  xi la varful  xk1, luand in locul lui  j pe k 1 etc. Daca nu exista nici un indice k ≠i, j care sa verifice egalitatea a*[i,j] = a*[i,k] + a[k,j], atunci rezulta ca arcul (x ,x i  j) este singurul drum minim de la  xi la x j. Continuand 23

rationamentul, se vor gasi toate drumurile minime de la  xi la x j. Pentru aplicatia considerata se vor regasi drumurile minime: d 1=(x1 ,x2 ,x3 ,x5 ,x6 ) si d 2 =(x1 ,x2 ,x3 ,x4 ,x5 ,x6 ) .

Tematica propusa 1

Sa se arate ca un graf orientat G=(V,U) cat si

transpusul sau G =(V,U ) cu U ={(x,y)/(y,x) ∈ U}, au aceleasi T

T

T

componente tare conexe. 2 Sa se implementeze algoritmul matriceal pentru

identificarea componentelor tare conexe intr-un graf orientat. 3 Aratati ca un graf complet si tare conex este

hamiltonian. 4 Fie G=(V,U) un graf cu V={0,1,2,...,n-1} si  A(nxn)

matricea sa de adiacenta. O astfel de matrice se poate considera ca fiind matricea booleana a drumurilor de lungime unu existente in G. Aratati ca numarul drumurilor netriviale de lungime k  de la varful i la varful  j este dat de elementul k  matriceal (A )i,j , iar existenta unor astfel de drumuri este data

de elementul matriceal (A(k))i,j (unde  A(k) reprezinta puterea booleana k  a matricei  A). De asemenea, daca (A(k))i,i=1 inseamna ca exista circuit de lungime k  in graf, iar numarul acestora este dat de elementul matriceal (Ak )i,i. Determinati drumurile si circuitele ce exista in graful 24

orientat reprezentat prin matricea de adiacenta urmatoare:

0

0

0

1

1

1

0

0

0

1

1

1

0

0

0

1

1

1

0

0

0

0

1

0

1

5 Sa se implementeze in C algoritmii lui

Roy-Floyd

si Yen. 6 Aplicati algoritmul lui Yen pe graful ponderat cu

urmatoarea matrice a costurilor:

A

1

2

3

4

5

6

7

8

1

0

2

10

6









2



0

9

3









3





0



8

3





4





0

2



7



5







0

6

5

6

6





∞ ∞ ∞





0



7

7











0

8

8





∞ ∞









0

25

Verificati-va cunostintele: -1 Gradul exterior al unui varf  x dintr-un graf orientat

este definit prin: a)

Γ + ( x) −

b) ω ( x ) c)

Γ + ( x) +

d) ω ( x) . -2 Cate grafuri orientate complete de ordin n ≥ 5 (n

numar natural ) exista? a) 1 ; b) 2 ;

c)

 n      ;    2  

 n      2     d) 3  

-3 Se considera urmatoarea matrice de adiacenta:

 A

1

2

3

4

5

6

7

8

1

0

1

0

0

1

0

0

0

2

0

0

1

0

0

0

0

0

3

0

0

0

1

0

0

0

0

4

1

0

0

0

0

0

0

0

5

0

1

0

0

0

1

0

0

6

0

0

0

0

0

0

1

1

7

0

0

0

0

0

0

0

0

8

0

0

0

0

1

0

1

0

26

Graful orientat reprezentat prin acesata matrice este: a) simetric b) antisimetric c) complet d) tranzitiv

27

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF