Sunteți pe pagina 1din 2

Parcurgerea grafurilor

Parcurgerea unui graf presupune examinarea sistematică a vârfurilor grafului, cu scopul prelucrării
informaţiilor asociate vârfurilor.
Există două metode fundamentale de parcurgere a grafurilor:
1. Parcurgerea în adâncime (DFS – Depth First Search)
2. Parcurgerea în lăţime (BFS – Breadth First Search)

Parcurgerea în adâncime
Parcurgerea în adâncime se caracterizează prin faptul că se merge „în adâncime” ori de câte ori este posibil.
 Parcurgerea începe cu vârful iniţial, denumit vârful de start, care este şi vizitat.
 Se vizitează apoi primul vecin nevizitat al vârfului de start. Vârful y este considerat vecin al vârfului x
dacă exisă muchia (pentru graful neorientat), respectiv arcul (pentru graful orientat).
 Se vizitează în continuare primul vecin nevizitat al primului vecin al vârfului de start, şi aşa mai
departe, mergând în adâncime, până când ajungem într-un vârf care nu mai are vecini nevizitaţi.
Când ajungem într-un astfel de vârf, revenim la vârful său părinte (vârful din care acest nod a fost
vizitat). Dacă acest nod mai are vecini nevizitaţi, alegem primul vecin nevizitat al său şi continuăm
parcurgerea în acelaşi mod. Dacă nici acest vârf nu mai are vecini nevizitaţi, revenim în vârful său
părinte şi continuăm în acelaşi mod, până când toate vârfurile accesibile din vârful de start sunt
vizitate.

Parcurgerea în lăţime

 Parcurgerea în lăţime începe cu vârful iniţial, denumit şi vârful de start. Se vizitează mai întâi vârful
de start.
 Se vizitează în ordine toţi vecinii nevizitaţi ai vârfului de start.
 Apoi se vizitează în ordine toţi vecinii nevizitaţi ai vecinilor vârfului de start şi aşa mai departe, până
la epuizarea tuturor vârfurilor accesibile din vârful de start.

Observaţii
1. Parcurgerea în lăţime are o proprietate remarcabilă: fiecare vârf este vizitat pe cel mai scurt lanţ/drum,
începând din vârful de start.
2. Complexitatea timp a algoritmilor de parcurgere în adâncime şi în lăţime a unui graf depinde de
modalitatea de reprezentare a acestuia. În cazul reprezentării prin liste de adiacenţă, complexitatea este
. În cazul reprezentării prin matrice de adiacenţă este .

1 2 3

Parcurgerea în adâncime
4 5

6 7 11

9 10 12 Parcurgerea în lăţime
Conexitate
Graful neorientat se numeşte conex dacă pentru oricare două vârfuri x şi y
există lanţ între x şi y.
Se numeşte componentă conexă a grafului G un subgraf conex maximal cu această
proprietate (adică, dacă am mai adăuga un vârf şi toate muchile incidente cu acesta, subgraful
obţinut nu ar mai fi conex).

Graful orientat se numeşte tare conex dacă pentru oricare două vârfuri x şi y
există drum de la x la y şi drum de la y la x.
Se numeşte componentă tare-conexă a grafului G un subgraf tare-conex maximal cu
această proprietate (adică, dacă am mai adăuga un vârf şi toate arcele incidente cu acesta,
subgraful obţinut nu ar mai fi tare-conex).

Observaţii
1. Orice graf neconex/ ne-tare-conex conține cel puţin două componente conexe.
2. Componentele conexe/tare-conexe ale unui graf sunt disjuncte.
3. Componentele conexe/tare-conexe conţin o partiţie a mulţimii vârfurilor grafului.
4. Vârful izolat este o componentă conexă/tare-conexă a unui graf.

Descompunerea unui graf în componente conexe/tare-conexe


Descompunerea unui graf în componente conexe/tare-conexe înseamnă a determina toate
componentele conexe/tare-conexe.
A determina componenta conexă/tare-conexă a unui vârf x presupune a determina toate
vârfurile accesibile din vârful x. Deci, este suficient să realizăm o parcurgere a grafului (în lățime
sau adâncime) cu vârful de start x.
Pentru a descompune graful în componente conexe/tare-conexe, vom realiza câte o
parcurgere pentru fiecare componentă conexă (selectând ca vârf de start primul vârf nevizitat).

S-ar putea să vă placă și