Documente Academic
Documente Profesional
Documente Cultură
Parcurgerea grafurilor
1. Parcurgerea in adâncime
2. Parcurgerea in lațime
3. Inchiderea tranzitiva a unui graf.
4. Sortarea topologica
Fie G=(V,U) graf neorientat sau neorientat. Prin parcurgerea grafului G
se înțelege vizitarea, într-un mod sistematic, a tuturor nodurilor, plecând
de la un nod xp (nod de plecare) mergând pe muchii incidente două câte
două.
Un graf poate fi parcurs în următoarele două moduri:
- în lățime (BFS = Breadth First Search)
- în adâncime (DFS = Depth First Search)
p=u
1
* Se vizitează toate nodurile adiacente cu 1
1 2 3 4
* Se trece la următorul element din coadă și acesta este 2. Dar toate
nodurile adiacente sunt vizitate.
1 2 3 4
* Se trece la următorul element din coadă și acesta este 3. Adiacent
este nodul 6 se include in coadă.
1 2 3 4 6
* Se trece la următorul element din coadă și acesta este 4. Adiacent
este nodul 5 se include in coadă.
p
1 2 3 4 6 5
* Se trece la următorul element din coadă și acesta este 6. Noduri
nevizitate nu mai sunt
1 2 3 4 6 5
* Se trece la următorul element din coadă și acesta este 5. Noduri
nevizitate nu mai sunt. S-au vizitat toate nodurile din coadă.
p u
1 2 3 4 6 5
Parcurgerea in adâncime (DFS)
Fie G =(V, M) un graf cu n vârfuri (V={1 ,2, .... n} ) şi m muchii.
Parcurgerea începe de la un varf de start, nu obligatoriu 1.
• Se vizitează primul vecin nevizitat, al vârfului de start. Vârful y
este considerat vecin al vârfului, dacă exista muchia (x,y).
• Se caută vecini nevizitați a lui y. De exemplu z
• Se caută vecini nevizitați a lui z. ș.a.m.d.
• Daca z nu mai are vecini nevizitați, atunci sunt căutați vecini
nevizitați a lui y, ș.a.m.d.
• Se procedează așa pană nu rămân noduri nevizitate
Exemplu. Incepem cu varful 1
DFS={1,
Exemplu. DFS={1, 2
Exemplu. DFS={1, 2,3,
Exemplu. DFS={1, 2,3,4
Exemplu. DFS={1, 2,3,4,5
Exemplu. DFS={1, 2,3,4,5,6}
BFS={1,2,7,3,4,8,5,9,10,6}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,7,3,4,8,5,9,10,6}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,3,4,8,5,9,10,6}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,4,8,5,9,10,6}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,8,5,9,10,6}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,8,5,9,10,6}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,5,9,10,6}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10,6}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10,6}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={1,2,5,7,3, 4,6,8,9,10}
DFS={1,2,3,4,7,8,5,6,9,10}
BFS={3,1,2,5,4,6,7}
DFS={3,1,2,4,5,6,7}
Inchiderea tranzitivă a unui graf
Dacă G = ( X,U ) este un graf neorientat, atunci pentru orice x, y∈ X ,
Considerăm
1, 𝑑𝑎𝑐𝑎 𝑒𝑥𝑖𝑠𝑡𝑎 𝐿 = [𝑥 = 𝑥0 , 𝑥1 , … , 𝑥𝑟 = 𝑦]
𝑙 𝑥, 𝑦 = ቊ
0, 𝑑𝑎𝑐𝑎 𝑛𝑢 𝑒𝑥𝑖𝑠𝑡𝑎 𝑙𝑎𝑛𝑡 𝑖𝑛𝑡𝑟𝑒 𝑥 𝑠𝑖 𝑦
Definiție. Fie G = ( X,U ) un graf neorientat sau orientat cu n noduri si
presupunem că X = {x1 x2,..., xn }. Definim matricea LG (lij) 1≤I,j≤n. care are
valorile 0 si 1, definită pentru 𝑙𝑖𝑗 = 𝑥𝑖 , 𝑥𝑗 Matricea LG se numeste
matricea lanțurilor grafului G .
Matricea lanturilor se mai numeste si matricea inchiderii tranzitive a
unui graf. Cu alte cuvinte elementul matricei L(i,j) este 1, daca intre
varfurile xi și xj exestă lanț.
In mod analogic se defineste matricea drumurilor pentru un graf
orientat.
Determinarea matricei lanturilor (drumurilor)
𝐿 = 𝐴𝐾
𝑘=1
calculele fiind realizate folosind operațiile logice + si * .
Exemplu.
Suma celor patru matrici
1 4 7
3 5
8
2
6
Exemplu. Numerotați vârfurile în ordine
topologică.
1
2
3
4
a
5 c 6
8
d
7
1 3 2
5 6
8
4
7