Traversarea grafurilor Aplicaii Structuri de date i algoritmi

  • Slides: 13
Download presentation
Traversarea grafurilor. Aplicaţii Structuri de date şi algoritmi -laborators. l. dr. ing. Ciprian-Bogdan Chirila

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

Cuprins • Traversarea grafurilor – Traversarea grafurilor în adâncime – Traversarea grafurilor prin cuprindere

Cuprins • Traversarea 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

Traversarea grafurilor în adâncime (depth-first search) 2 3 b c 1 a 4 d

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

TDA graf const Max. Nod=100; typedef Nod=record cheie: integer; vizitat: boolean; end; typedef Graf=record

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

Căutare în adâncime -algoritmprocedure Cautare. In. Adancime(g: Graf; x: Nod); var y: Nod; begin

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

Traversarea grafurilor prin cuprindere (breadth-first search) 2 3 b c 1 a 5 d

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

Căutare prin cuprindere -algoritmprocedure Cautare. Prin. Cuprindere(g: Graf; x: Nod); var Q: Coada. Noduri;

Căutare prin cuprindere -algoritmprocedure Cautare. Prin. Cuprindere(g: Graf; x: Nod); var Q: Coada. Noduri; begin adauga(x, Q); repeat x: =scoate(Q); x. vizitat: =true; for *fiecare nod y adiacent lui x do if not y. vizitat then begin y. vizitat: =true; adauga(y, Q); end; until vid(Q); end; procedure Traversare. Prin. Cuprindere(g: Graf); var x: Nod; begin for *fiecare nod x din g do x. vizitat: =false; for *fiecare nod x din g do if not x. vizitat then Cautare. Prin. Cuprindere(g, x); end;

Determinarea arborilor de acoperire (traversare în adâncime) b c a d g f e

Determinarea arborilor de acoperire (traversare în adâncime) b c a d g f e

Determinarea arborilor de acoperire (traversare prin cuprindere) b c a d g f e

Determinarea arborilor de acoperire (traversare prin cuprindere) b c a d g f e

Determinarea componentelor conexe procedure Cautare. In. Adancime(g: Graf; x: Nod); var y: Nod; begin

Determinarea componentelor conexe procedure Cautare. In. Adancime(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 Cautare. In. Adancime(g, y); end; cod de delimitare între două componente conexe procedure Traversare. In. Adancime(g: Graf); var x: Nod; begin for *fiecare nod x din g do x. vizitat: =false; for *fiecare nod x din g do if not x. vizitat then begin writeln; Cautare. In. Adancime(g, x); end;

Puncte de articulaţie şi componente biconexe b c a d g f punct de

Puncte de articulaţie şi componente biconexe b c a d g f punct de articulaţie e

Puncte de articulaţie şi componente biconexe (2) b c a d g f componentă

Puncte de articulaţie şi componente biconexe (2) b c a d g f componentă biconexă e

Aplicaţie L’ ami de mon ami c’est mon ami. Pierre Adeline Philippe Roxanne Serge

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