Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.