120 likes | 261 Vues
PARCURGEREA GRAFURILOR NEORIENTATE. Obiective. No ţ iuni teoretice despre parcurgeri (semnificaţie, mod de realizare, scop); Metode de parcurgere ; Parcurgerea în “lăţime” (prezentarea metodei, exemple); Algoritmul BF. Sfârșit. Parcurgere (noţiuni teoretice).
E N D
Obiective • Noţiuniteoretice despre parcurgeri (semnificaţie, mod de realizare, scop); • Metode de parcurgere; • Parcurgerea în “lăţime” (prezentarea metodei, exemple); • Algoritmul BF. Sfârșit
Parcurgere(noţiuni teoretice) • Semnificaţie: examinarea în mod sistematic a nodurilor unui graf; • Realizare: se pleacă dintr-un nod dat i, astfel încât fiecare nod accesibil din i pe muchii incidente două câte două, să fie atins o singură dată. • Alte expresii similare: vizitare, traversare. • Scop: • prelucrării informaţiilor asociate nodurilor; • determinarea aranjării lineare a nodurilor în vederea trecerii de la unul la altul • Observaţii: • Presupunem că mulţimea vârfurilor este X={1, 2, … , n}; • Presupunem că ordinea vârfurilor este dată de relaţia „<”, existentă în mulţimea numerelor naturale.
Metode de parcurgere • Parcurgere în „lăţime” (Breadth First - BF) • Parcurgerea în „adâncime” (Depth First - DF)
Parcurgerea în „lăţime”Breadth First - BF Se vizitează vârful iniţial x, apoi vecinii acestuia, apoi vecinii nevizitaţi ai acestora, şi aşa mai departe. Exemplu: Pentru graful din figura următoare ordinea de parcurgere a nodurilor cu metoda BF, când se pleacă din vârful 1 este următoarea: 1 1, 2, 3, 4, 5. 2 3 4 5
1 Pentru acelaşi graf, dacă se pleacă din nodul iniţial 5, ordinea de parcurgere “în lăţime” este următoarea: Dacă se pleacă din nodul 2, lista vârfurilor obţinută în urma parcurgerii BF este următoarea: 5, 2, 1, 4, 3. 2 3 4 2, 1, 4, 5, 3. 5
Uses crt: Var vizitat:array[1..20] of 0..1; A:array[1..20,1..20] of integer; V:array[1..20] of integer; N,m,p,u,I,k,x1,x2:integer; Procedure init; Begin for i:= 1 to n do begin vizitat[i]:=0; For j:=1 to n do a[I,j]:=0; End; End; Procedure complet; Begin For i:=1 to m do Begin Readln(x1);readln(x2); A[x1,x2]:=1; a[x2,x1]:=1; End; End; Procedure prim_vf; Begin V[1]:=I; P:=1; u:=1; Vizitat[i]:=1; End; procedure prelucrare; Begin K:=v[p]; For j:=1 to n do if (a[k,j]=1) and(vizitat[j]=0) then begin u:-u+1; v[u]:=j; Vizitat[j]:=1; End; P:=p+1; End; Procedure scrie; Begin For j:=2 to u do write(v[j],’ ‘); End; Begin Clrscr; Readln(n0;readln(m); Init; Complet; Readln(i); Prim_vf; While p<=u do prelucrare; Scrie; End. Algoritmul BF - implementare
Variabilele utilizate în programul PASCAL a - matricea de adiacenţă asociată grafului; v-vector în care se trec în ordine nodurile”parcurse”; n - numărul de noduri din graf; m - numărul de muchii din graf; x1,x2- extremităţile muchiilor; i,j - contori; p– nodul din care se „pleacă”; u – ultimul element al cozii; k –vârfulîn lucru;
Vectorul trecut care are n componente este definit astfel: Deoarece algoritmul conţine două cicluri imbricate: unul while (care se execută de cel mult n-1 ori) şi unul for (care se execută de n ori) rezultă că ordinul de complexitate al algoritmului este O(n2).
2 4 5 10 3 9 8 1 7 11 12 6 Aplicaţie: Fie graful din figura de mai jos. Se cere să se realizeze parcurgerea în “lăţime” pornind pe rând din nodurile: 1, 12, 4, 7, 8, 5 şi 10.
prof. Mirzacu Marius EmilianColegiul Național “Elena Cuza”București Sfârșit