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:
Vizitat[i] = 1 daca nodul I a fost vizitat
= 0 in rest
Se va folosi o structura de tip coada.
Algoritmul parcurgerii in latime
Pas. 1. Se prelucreaza
varful initial k
Pas.
1.1. Se adauga varful k in
coada
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
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)
void Parc_Lat()
{
prim = 1;
ultim = 1;
Cd[1] = 1;
cout<<endl<<Cd[1];
Viz[1] = 1;
while (prim<=ultim)
{
nod =
Scoate(Cd, prim);
for (j=1
; j<= n; j++)
if ((a[nod][j] == 1) && (Viz[j] ==
0))
{
Add(Cd, ultim, j);
cout<<" "<<j;
Viz[j]=1;
}
}
}
Cd – coada
Viz – vectorul
VIZITAT
Scoate – functie care
returneaza primul element din coada
Add – adauga
un element in
coada
Prim – indicele primului
element din coada (la scoatere creste cu o unitate)
Ultim – indicele ultimului
element din coada (la adaugare creste cu o unitate)
In coada vor fi elemente
atata timp cat prim <=ultim
