Sunteți pe pagina 1din 2

PARCURGEREA GRAFURILOR

1. Parcurgerea grafurilor in latime (“Breadth First”)


Derularaea algoritmului presupune alegerea la un moment dat, dintre vecinii unui varf, pe acela ce nu a
fost vizitat inca. Acest lucru este posibil prin folosirea unui vector VIZITAT de dimensiune n ale carui
componente se definesc astfel:
1, daca varful k a fost vizitat
VIZITAT [k]  
0, in rest
Se va folosi o structura de tip coada. 1
Algoritmul parcurgerii in latime
Pas. 1. Se prelucreaza varful initial k
Pas. 1.1. Se adauga varful k in coada 2 3 4
Pas. 1.2. Varful k se considera vizitat
Pas. 2. Cat timp coada este nevida se executa:
Pas. 2.1. Pentru toti vecinii j nevizitati inca ai varfului k 5 6
Pas. 2.1.1. Se adauga varful j in coada
Pas. 2.1.2. Varful j se considera vizitat
Pas. 2.2. Se reia de la Pas. 2.1. (varful j devine varful k) 7

1, 2, 3, 4, 5, 6, 7
void Parc_Lat()
{
prim = 1;
ultim = 1; Cd – coada

Cd[1] = 1; Viz – vectorul VIZITAT

cout<<endl<<Cd[1]; Scoate – functie care returneaza primul element


din coada
Viz[1] = 1;
Add – adauga un element in coada
while (prim<=ultim)
Prim – indicele primului element din coada (la
{ scoatere creste cu o unitate)
nod = Scoate(Cd, prim); Ultim – indicele ultimului element din coada (la
adaugare creste cu o unitate)
for (j=1 ; j<= n; j++)
In coada vor fi elemente atata timp cat
if ((a[nod][j] == 1) && (Viz[j] == 0))
prim <=ultim
{
Add(Cd, ultim, j);
cout<<" "<<j;
Viz[j]=1;
}
}
}