Drumuri Hamilt. RoyW & Yen
June 30, 2018 | Author: Ionut Marin | Category: N/A
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