1 / 10

PARCURGEREA GRAFURILOR NEORIENTATE

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. END. Parcurgere (noţiuni teoretice).

ganya
Download Presentation

PARCURGEREA GRAFURILOR NEORIENTATE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PARCURGEREA GRAFURILOR NEORIENTATE

  2. Obiective Noţiuni teoretice despre parcurgeri(semnificaţie, mod de realizare, scop); Metode de parcurgere; Parcurgerea în “lăţime” (prezentarea metodei, exemple); Algoritmul BF. END

  3. 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.

  4. Metode de parcurgere Parcurgere în „lăţime” (Breadth First - BF) Parcurgerea în „adâncime” (Depth First - DF)

  5. 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

  6. 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

  7. #include <iostream.h> void main (void) { int a[20][20],trecut[20],n,i,j,u,pc, m,e1,e2,x,sol[20]; cout<<"numarul de noduri: "; cin>>n; cout<<"numarul de muchii: "; cin>>m; for (i=1;i<=n;i++) for (j=1;j<=n;j++) a[i][j]=0; for (i=1;i<=m;i++) { cout<<"Muchia "<<i<<":\n"; cout<<"e1="; cin>>e1; cout<<"e2="; cin>>e2; a[e1][e2]=a[e2][e1]=1; } for (i=1;i<=n;i++) trecut[i]=0; cout<<"Nodul initial: "; cin>>x; pc=1; u=1; sol[1]=x; trecut[x]=1; while (u<n) { for (i=1;i<=n;i++) if (a[sol[pc]][i] && !trecut[i]) { u++; sol[u]=i; trecut[i]=1; } pc++; } cout<<"Parcurgerea BFS:"; for (i=1;i<=n;i++) cout<<sol[i]<<','; cout<<'\b'; } Algoritmul BF (programul C++)

  8. Variabilele utilizate în programul C++ a - matricea de adiacenţă asociată grafului; trecut -vector în care se trec în ordine nodurile”parcurse”; n - numărul de noduri din graf; m - numărul de muchii din graf; e1,e2 - extremităţile muchiilor; i,j - contori; x– nodul din care se „pleacă”; u - variabilă (contor) ce ţine evidenţa numărului de noduri vizitate; pc - nodul ai cărui vecini îi căutăm; sol- vectorul rezultat în urma parcurgerii (conţine nodurile în ordinea vizitării lor).

  9. 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).

  10. 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.

More Related