210 likes | 397 Views
PARCURGEREA GRAFURILOR NEORIENTATE. Cum putem folosi parcurgerea garfurilor in viata de zi cu zi?.
E N D
Cum putem folosi parcurgerea garfurilor in viata de zi cu zi?
Sa presupum ca dorim sa ajungem la un prieten care se afla la cateva sute de kilometri distanta si dorim sa ajungem la el foarte repede, evident o sa trebuiasca sa mergem pe drumul cel mai scurt :D
Pentru aceasta vom considera orasele ca fiind nodurile grafurlui, iar drumurile dintre ele muchiile si vom determina toate drumurile intre cele 2 orase si il vom alege pe cel mai scurt. Aceasta parcurgere o vom realizea folosind un algoritm de parcurgere specific grafurilor.
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