Documente Academic
Documente Profesional
Documente Cultură
2) s
1
*s
2
are proprietatea P.
Daca una din cele doua conditii nu este indeplinita,
atunci se va considera s
1
*s
2
= .
Conventii: . * ; * ; * s s
Exemplul 2 Se considera urmatorul graf orientat:
5
1
2 5
3 4
Fig. 2
Proprietatea P consta in faptul ca varfurile din
secvente se afla pe drumuri elementare.
Fie secventele:
s
1
= 2 5 3
s
2
= 2 1 4
s
3
= 3 2 1 4
s
4
=3 1 4.
Se observa ca:
s
1
*s
2
= (nu are loc conditia 1)
s
1
*s
3
= (drumul (2 5 3 2 1 4) nu este elementar)
s
1
*s
4
= (2 5 3 1 4).
Concatenarea este o operatie asociativa, dar nu este
6
comutativa.
Tranzitiile din graf se vor dispune sub forma unui
tablou (matrice latina).
A
(0)
1 2 3 4 5
1 1,4 1,5
2 2,1 2,5
3 3,1 3,2
4 4,1 4,2 4,3
5 5,3
Vom construi matricea A
(1)
pornind de la matricea A
(0)
luand secventele fara primul element al lor tinand cont de
definitia concatenarii.
A
(1)
1 2 3 4 5
1 4 5
2 1 5
3 1 2
4 1 2 3
5 3
Concatenarea celor doua tablouri se realizeaza similar
7
produsului a doua matrice prin tehnica " linie-coloana",
astfel:
A
(2)
1 2 3 4 5
1 - 142
143
153
2
- 253 214 215
3 321
- 314 315
325
4 421
431
432
- 415
425
5 531 532
-
Exemplu de calcul: Linia 1 din A
(0)
"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.
8
A
(3)
1 2 3 4 5
1
-
1432
1532
1425
2 2531 - 2143
2153
3
3142 - 3214 3215
4 4321
4153
4253
- 4215
4315
4325
5 5321
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
A
(1)
.
A
(4)
1 2 3 4 5
1 -
14253
14325
2
-
25314
3
-
31425
4 42531 41532 42153 - 43215
5
53142
53214 -
9
A
(5)
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
A
(4)
).
Reluati calculele si identificati circuitul hamiltonian
din graful considerat.
Algoritmi pentru calculul distantelor minime
Fie G = (V,U) un graf orientat si : U R
+
o
functie care asociaza fiecarui arc din G un numar real
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.
10
Algoritmul lui Roy-Floyd
Fie G = (V,U) un graf orientat cu V = {x
1
,x
2
,,x
n
},
etichetat. Vom defini matricea distantelor directe ale lui G ca
fiind matricea A(nxn) unde:
'
U x x daca
j i daca
U x x daca x
j i a
j i
j i j
) , (
0
) , ( )) , ((x
] , [
i
(1 i,j n)
Fie A*(nxn) matricea distantelor minime dintre
varfurile grafului orientat G care se defineste astfel:
'
altfel
j i a
j i,
*
min
j i daca 0
] , [ (1i,j n)
unde min
i,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 (ik)
for j = 1 , n
if (ji jk)
a[i,j] = min (a[i,j] , a[i,k]+a[k,j] )
11
Ciclurile for(i), for(j), vor recalcula elementele cu
indici diferiti intre ei ale unei submatrice cu n-1 linii si n-1
coloane, deci este necesar un numar de (n-1)
2
(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
O(n
3
).
Observatie: Algoritmul respectiv se poate trata si in
limbaj operatorial .
T
k
(A
(k-1)
)=A
(k)
(k=1,n) unde,
'
) , 1 ( , 0
), , (
)}, , ( ) , ( ), , ( min{
) , (
) 1 (
) 1 ( ) 1 ( ) 1 (
) (
n j i j i daca
k j sau k i daca j i A
k j i j k A k i A j i A
j i A
k
k k k
k
Asadar, la aplicarea operatorului T
k
, linia si coloana k
din matricea A
(k)
raman nemodificate, adica identice cu cele
din matricea A
(k-1)
.
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:
12
'
<
] , [
] , [ } {x
] , [
i
j i a daca
j i a daca
j i d
(1i,j n)
Elementul d[i,j] reprezinta submultimea varfurilor
vecine varfului x
j
aflate pe drumuri de la x
i
la x
j
. In ciclurile
dupa i si j, elementele d[i,j] se reactualizeaza astfel:
'
+ >
+
+ <
2
1
) 2 )( 1 ( 2
n
q
n n q comparari si cel
mult un numar de
2
1
2
) 2 )( 1 (
n
q
n n
q adunari .
Aplicand algoritmul lui Yen de n ori, vom determina
distantele minime de la x
1
la toate celelalte varfuri, de la x
2
la
celelalte varfuri, ..,de la x
n
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)
comparari si n(n-1)(n-2) / 2 adunari, adica O(n
3
) .
Exemplul 5 Sa se determine distantele minime de la
varful x
1
la celelalte varfuri ale grafului orientat G=(V,U), dat
in fig. 6.
21
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
(i
o
=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 0 3 5
5
4 0 1
6
5 0
22
Elementul minim, din prima linie, este a*[1,3] =
a[1,3] = 3 .
Continuand rationamentul, se vor obtine urmatoarele
matrice:
1 4 5 6
A
(2)
1 2 3 4
1 1 0 5 8
4 2
0 3 5
5 3
0 1
6 4
0
Se vede ca a*[1,4] = 5.
1 5 6
A
(3)
1 2 3
1 1 0 8 10
5 2
0 1
6 3
0
Elementul obtinut este a*[1,5] = 8.
1 6
A
(4)
1 2
1 1 0 9
6 2
0
23
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 x
1
la varful x
6
se va proceda astfel:
Daca (x
k
, x
j
) este ultimul arc al unui drum minim de
la varful x
i
la varful x
j,
atunci a*[i,j] = a*[i,k] + a[k,j],
deoarece, daca consideram un drum minim de la x
i
la x
k
pe
care sa-l prelungim cu arcul (x
k
,x
j
), lungimea acestui drum de
la x
i
la x
j
este egala cu a*[i,k] + a[k,j] = a*[i,j], adica este
drumul minim de la x
i
la x
j
al carui ultim arc este (x
k
,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
) , ( ),..., , ( ), , (
2 1
j k j k j k
x x x x x x
s
sunt ultimele arce din
drumurile minime de la x
i
la x
j
.
Pentru fiecare din acesti indici se va repeta
procedeul, gasind ultimele arce care ajung in x
k1
din drumurile
minime de la varful x
i
la varful x
k1
, luand in locul lui j pe k
1
etc.
Daca nu exista nici un indice ki, j care sa verifice
egalitatea a*[i,j] = a*[i,k] + a[k,j], atunci rezulta ca arcul
(x
i
,x
j
) este singurul drum minim de la x
i
la x
j
. Continuand
24
rationamentul, se vor gasi toate drumurile minime de la x
i
la x
j
.
Pentru aplicatia considerata se vor regasi drumurile
minime: d
1
=(x
1
,x
2
,x
3
,x
5
,x
6
) si d
2
=(x
1
,x
2
,x
3
,x
4
,x
5
,x
6
) .
Tematica propusa
1 Sa se arate ca un graf orientat G=(V,U) cat si
transpusul sau G
T
=(V,U
T
) cu U
T
={(x,y)/(y,x)U}, au aceleasi
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
matriceal (A
k
)
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 (A
k
)
i,i
.
Determinati drumurile si circuitele ce exista in graful
25
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
26
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)
,
`
.
|
2
n
; d)
,
`
.
|
2
3
n
-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
27
Graful orientat reprezentat prin acesata matrice este:
a) simetric
b) antisimetric
c) complet
d) tranzitiv