Documente Academic
Documente Profesional
Documente Cultură
Grafuri
• Definiţii
• Reprezentări
• Parcurgere în lăţime
• Parcurgere în adîncime
• Drumuri în grafuri. Conexitate
– Matricea existenţei drumurilor. Algoritmul Roy-
Warshall
– Componente conexe
– Drumuri de cost minim. Algoritmul Dijkstra. Algoritmul
Roy-Floyd
• Circuite şi cicluri
– Algoritmul Marimont
Definiţii
2
4
6
5
3
4
2
3
5
Reprezentare
• D=(V,E) graf direcţionat, V={1,2,3,4,5}, E={(1,2), (1,3), (1,5) (2,5),
(3,5), (4,4)}.
1
4
2
3
5
5 1
2 3
4
2
7
4
1, dacă vi ,v j E
aij
0 , altfel
Reprezentări
1, dacă vi , v j E
• Matricea de adiacenţă aij
0, altfel
1 0 1 1 0 0 0
1
1 0 0 0 1 0
2 1 0 0 0 1 0
4 A
6 0 0 0 0 0 0 4
5 2
3 0 1 1 0 0 1
0 0 0 0 1 0
3
1
5
0 1 1 0 1
0 0 0 0 1 0 1 1 0 1
4 A 0 0 0 0 1 0 0 0 0 1
2
1 0 0 0 0 A 0 0 0 0 1
3 0 0 0 1 1 0 0 0 1 0
5
0 0 0 0 0
Reprezentare
W ( vi ,v j ) , dacă vi ,v j E
wi , j
, altfel
1
5 1 7
5 1 5 4 2
W
2 3 1 4
4
2
7 2
7
4
Rprezentare
• Tabelară
1 2 1 2 1 2
1 2 5
1 3 1 3
1 3 1 5 1 1 3 1
5
A 2 5
A 2 5 A A 2 3 4
2 5
3 5 3 5 1 4 7
5 4 1 3 5
6
4
4
4 2 4 2
5
Reprezentare
• Liste dinamice
Parcurgere (traversare)
• În lăţime
• Fie G=(V,E) un graf.
– A - matricea de adiacenţă a grafului;
– C - o structură de tip coadă, în care sînt introduse vîrfurile
ce urmează a fi vizitate şi procesate 1,
c
– V - un vector cu n componente (iniţializate cu 0), unde 0, i
• Algoritm
– coada C este iniţializată cu vîrful v0;
– cît timp C ≠ Ø,
• Se extrage şi vizitează un vîrf i din coadă,
• Se introduc în coadă vecinii lui i care nu au fost deja
introduşi (acele vîrfuri k cu proprietatea că c[k]=0 şi a[i]
[k]=1). Vîrfurile i ce au fost introduse în coadă sînt
marcate prin v[i]=1.
Parcurgere (traversare) în lăţime
• Fie graful: 1 8
3
2
6
4 9 10
11
5 7
• Algoritm
– stiva S este iniţializată cu vîrful v0;
– cît timp S ≠ Ø,
• Se extrage şi vizitează un vîrf i din stivă,
• Se introduc în stivă vecinii lui i care nu au fost deja
introduşi (acele vîrfuri k cu proprietatea că c[k]=0 şi a[i]
[k]=1). Vîrfurile i ce au fost introduse în stivă sînt
marcate prin v[i]=1.
Parcurgere (traversare) în adîncime
• Fie graful: 1 8
3
2
6
4 9 10
11
5 7