Top Banner
PARCURGEREA PARCURGEREA GRAFURILOR GRAFURILOR NEORIENTATE NEORIENTATE
15

Parcurgerea Grafurilor Neorientate

Jul 08, 2016

Download

Documents

Patricia Ficior

informatica
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Parcurgerea Grafurilor Neorientate

PARCURGEREA PARCURGEREA GRAFURILOR GRAFURILOR NEORIENTATENEORIENTATE

Page 2: Parcurgerea Grafurilor Neorientate

Cum putem folosi parcurgerea garfurilor in viata de zi cu zi?

Page 3: Parcurgerea Grafurilor Neorientate

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

Page 4: Parcurgerea Grafurilor Neorientate

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.

Page 5: Parcurgerea Grafurilor Neorientate

ObiectiveObiective•Noţiuni teoretice despre parcurgeri

(semnificaţie, mod de realizare, (semnificaţie, mod de realizare, scop);scop);

•Metode de parcurgere;;•Parcurgerea în “lăţime” (prezentarea (prezentarea

metodei, exemple);metodei, exemple);•Algoritmul BF.

Page 6: Parcurgerea Grafurilor Neorientate

ParcurgereParcurgere (noţiuni teoretice)(noţiuni teoretice)

• Semnificaţie:Semnificaţie: examinarea în mod sistematic a nodurilor examinarea în mod sistematic a nodurilor unui graf;unui graf;

• Realizare:Realizare: se pleacă dintr-un nod dat se pleacă dintr-un nod dat ii, astfel încât fiecare , astfel încât fiecare nod accesibil din nod accesibil din ii pe muchii pe muchii incidenteincidente două câte două, să fie două câte două, să fie atins o singură dată.atins o singură dată.

• Alte expresii similareAlte expresii similare:: vizitare, traversare. vizitare, traversare.• Scop:Scop:

prelucrării informaţiilor asociate nodurilor;prelucrării informaţiilor asociate nodurilor; determinarea aranjării lineare a nodurilor în vederea determinarea aranjării lineare a nodurilor în vederea

trecerii de la unul la altultrecerii de la unul la altul• Observaţii: Observaţii:

Presupunem că mulţimea vârfurilor este X=Presupunem că mulţimea vârfurilor este X={1, 2, … , n};{1, 2, … , n}; Presupunem că ordinea vârfurilor este dată de relaţia „<”, Presupunem că ordinea vârfurilor este dată de relaţia „<”,

existentă în mulţimea numerelor naturale.existentă în mulţimea numerelor naturale.

Page 7: Parcurgerea Grafurilor Neorientate

Metode de parcurgereMetode de parcurgere

• Parcurgere în Parcurgere în „„lăţimelăţime”” ( (Breadth First - BF))

• Parcurgerea în Parcurgerea în „adâncime„adâncime” ” ((Depth First Depth First - - DFDF))

Page 8: Parcurgerea Grafurilor Neorientate

Parcurgerea în Parcurgerea în „„lăţimelăţime”” Breadth FirstBreadth First - - BFBF

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:

2

1

5

4

3

1,2,3,4,5.

Page 9: Parcurgerea Grafurilor Neorientate

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:

2

1

5

4

33.4,1,2,5,

5, 3.4,1,2,

Page 10: Parcurgerea Grafurilor Neorientate

Algoritmul BF - implementareUses 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 dobeginvizitat[i]:=0;

For j:=1 to n do a[I,j]:=0;End;End;Procedure complet;BeginFor i:=1 to m doBeginReadln(x1);readln(x2);A[x1,x2]:=1; a[x2,x1]:=1;End;End;Procedure prim_vf;BeginV[1]:=I;P:=1; u:=1;Vizitat[i]:=1;End;

procedure prelucrare;BeginK:=v[p];For j:=1 to n do

if (a[k,j]=1) and(vizitat[j]=0) thenbeginu:-u+1;v[u]:=j;

Vizitat[j]:=1;End;P:=p+1;End;Procedure scrie;BeginFor j:=2 to u do write(v[j],’ ‘);End;

BeginClrscr;Readln(n0;readln(m);Init;Complet;Readln(i);Prim_vf;While p<=u do prelucrare;Scrie;End.

Page 11: Parcurgerea Grafurilor Neorientate

Variabilele utilizate în programul Variabilele utilizate în programul PASCALPASCAL

aa - - matricea de adiacenţă asociată grafului;matricea de adiacenţă asociată grafului;vv --vector în care se trec în ordine nodurile”parcursevector în care se trec în ordine nodurile”parcurse”;”;nn - - numărul de noduri din graf;numărul de noduri din graf;mm - - numărul de muchii din grafnumărul de muchii din graf;;xx1,1,xx22 - - extremităţile muchiilor;extremităţile muchiilor;i,ji,j - - contori;contori;pp – – nodul din care se „pleacă”;nodul din care se „pleacă”;uu – – ultimul element al coziiultimul element al cozii;;kk – –vvâârful rful îîn lucrun lucru;;

Page 12: Parcurgerea Grafurilor Neorientate

Vectorul trecut care are n componente este definit astfel:

}n..., ,2,1{j

contrar cazîn 0,

atfost vizit a j nodul dacă 1,[j]trecut

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

Page 13: Parcurgerea Grafurilor Neorientate

1

2

3

4 5

6

7

89

10

11

12

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.

Page 14: Parcurgerea Grafurilor Neorientate

Informatica este un joc al Informatica este un joc al mințiiminții

Page 15: Parcurgerea Grafurilor Neorientate

prof. prof. Mirzacu Marius EmilianMirzacu Marius EmilianColegiul Național Colegiul Național ““Elena CuzaElena Cuza””

BucureBucureșștiti

Sfârșit