parcurgerea grafurilor neorientate

15
PARCURGEREA PARCURGEREA GRAFURILOR GRAFURILOR NEORIENTATE NEORIENTATE

Upload: patricia-ficior

Post on 08-Jul-2016

287 views

Category:

Documents


3 download

DESCRIPTION

informatica

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