Presentation is loading. Please wait.

Presentation is loading. Please wait.

Traversarea grafurilor. Aplicaţii

Similar presentations


Presentation on theme: "Traversarea grafurilor. Aplicaţii"— Presentation transcript:

1 Traversarea grafurilor. Aplicaţii
Structuri de date şi algoritmi -laborator- s.l. dr. ing. Ciprian-Bogdan Chirila Universitatea Politehnica Timişoara 2014

2 Cuprins Traversarea grafurilor Aplicaţii ale traversării grafurilor
Traversarea grafurilor în adâncime Traversarea grafurilor prin cuprindere Aplicaţii ale traversării grafurilor Determinarea arborilor de acoperire Determinarea componentelor conexe Puncte de articulaţie şi componte biconexe Aplicaţie L’ami de mon ami c’est mon ami

3 Traversarea grafurilor în adâncime (depth-first search)
2 b 3 c 1 a 4 d g e 7 f 5 6

4 TDA graf const MaxNod=100; typedef Nod=record cheie:integer;
vizitat:boolean; end; typedef Graf=record n:integer; noduri:array[1..MaxNod] of Nod; arc:array[1..MaxNod,1..MaxNod] of boolean;

5 Căutare în adâncime -algoritm-
procedure CautareInAdancime(g:Graf;x:Nod); var y:Nod; begin x.vizitat:=true; for *fiecare nod y adiacent lui x do if not y.vizitat then CautareInAdancime(g,y); end; procedure TraversareInAdancime(g:Graf); var x:Nod; for *fiecare nod x din g do x.vizitat:=false; if not x.vizitat then CautareInAdancime(g,x);

6 Traversarea grafurilor prin cuprindere (breadth-first search)
2 b 3 c 1 a 5 d g e 4 f 6 7

7 Căutare prin cuprindere -algoritm-
procedure CautarePrinCuprindere(g:Graf;x:Nod); var Q:CoadaNoduri; begin adauga(x,Q); repeat x:=scoate(Q); x.vizitat:=true; for *fiecare nod y adiacent lui x do if not y.vizitat then y.vizitat:=true; adauga(y,Q); end; until vid(Q); procedure TraversarePrinCuprindere(g:Graf); var x:Nod; for *fiecare nod x din g do x.vizitat:=false; if not x.vizitat then CautarePrinCuprindere(g,x);

8 Determinarea arborilor de acoperire (traversare în adâncime)
g e f

9 Determinarea arborilor de acoperire (traversare prin cuprindere)
g e f

10 Determinarea componentelor conexe
cod de delimitare între două componente conexe procedure CautareInAdancime(g:Graf;x:Nod); var y:Nod; begin x.vizitat:=true; write(x.cheie); for *fiecare nod y adiacent lui x do if not y.vizitat then CautareInAdancime(g,y); end; procedure TraversareInAdancime(g:Graf); var x:Nod; for *fiecare nod x din g do x.vizitat:=false; if not x.vizitat then begin writeln; CautareInAdancime(g,x); end;

11 Puncte de articulaţie şi componente biconexe
g e f punct de articulaţie

12 Puncte de articulaţie şi componente biconexe (2)
g e f componentă biconexă

13 Aplicaţie L’ ami de mon ami c’est mon ami.
Pierre Pierre Adeline Adeline Philippe Philippe Roxanne Roxanne Serge Robert Serge Robert Bertrand Bertrand Iniţial Final


Download ppt "Traversarea grafurilor. Aplicaţii"

Similar presentations


Ads by Google