PARCURGERI DE GRAFURI Cmrau AncaMihaela Flint AndaAlexandra PARCURGERI

  • Slides: 24
Download presentation
PARCURGERI DE GRAFURI Cămăraşu Anca-Mihaela Flintă Anda-Alexandra

PARCURGERI DE GRAFURI Cămăraşu Anca-Mihaela Flintă Anda-Alexandra

PARCURGERI DE GRAFURI Parcurgerea unui digraf G=(N, A) consta in generarea multimii W a

PARCURGERI DE GRAFURI Parcurgerea unui digraf G=(N, A) consta in generarea multimii W a nodurilor y accesibile dintrun nod sursa s dat. Spunem ca nodul y este accesibil din nodul s in digraful G daca exista drum de la nodul sursa s la nodul y. Evident W ⊆ N. N= multime de elemente numite noduri sau varfuri N={1, A= familie de elemente numite arce A={1, …. . , n} …. , m} W=multimea nodurilor vizitate si analizate

PARCURGERI DE GRAFURI Fiecare iteratie a executiei oricarui algoritm de parcurgere stabileste pentru fiecare

PARCURGERI DE GRAFURI Fiecare iteratie a executiei oricarui algoritm de parcurgere stabileste pentru fiecare nod apartenenta la una din urmatoarele trei stari: 1. Nevizitat 2 1 3 4 6 5 U = multimea nodurilor nevizitate U = {2, 3, 4, 5, 6}

� 2. Vizitat si neanalizat, adica un nod vizitat ai carui succesori au fost

� 2. Vizitat si neanalizat, adica un nod vizitat ai carui succesori au fost partial vizitati; 2 3 1 6 5 4 Arc admisibil V = multimea nodurilor vizitate si neanalizate � V = {1, 2} � Daca nodul x este vizitat si neanalizat, exista arc (x, y) si nodul y este nevizitat, atunci se poate vizita nodul y. In acest caz se spune ca arcul (x, y) este arc admisibil si daca nodul y este vizitat explorand arcul (x, y) se spune ca nodul x este predecesorul parcurgere al nodului y. �

� 3. Vizitat si analizat, adica un nod vizitat ai carui succesori au fost

� 3. Vizitat si analizat, adica un nod vizitat ai carui succesori au fost ın totalitate vizitati 2 1 3 4 6 �W 5 = multimea nodurilor vizitate si analizate � W = {1}

Algoritmii pentru parcurgerea unui digraf: v Algoritmul generic v Algoritmul de parcurgere in latime

Algoritmii pentru parcurgerea unui digraf: v Algoritmul generic v Algoritmul de parcurgere in latime [BF] v Algoritmul de parcurgere in adancime [DF]. � Acesti algoritmi utilizeaza urmatoarele notatii comune: v U , V, W definite anterior; v p tabloul predecesor, care este unidimensional cu n elemente �

� 1. Ce a) b) c) � 2. Ce a) b) c) � 3.

� 1. Ce a) b) c) � 2. Ce a) b) c) � 3. Ce a) b) c) reprezinta notatia s? Nod accesibil Nod sursa Nod analizat este un nod vizitat si neanalizat? Nod vizitat ai carui predecesori au fost partial vizitati Nod vizitat ai carui succesori nu au fost vizitati Nod vizitat ai carui succesori au fost partial vizitati reprezinta multimea W? Multimea nodurilor vizitate si analizate Multimea nodurilor nevizitate Multimea nodurilor vizitate si neanalizate

ALGORITMUL GENERIC DE PARCURGERE Pe langa notatiile prezentate anterior introducem notiunea de tablou de

ALGORITMUL GENERIC DE PARCURGERE Pe langa notatiile prezentate anterior introducem notiunea de tablou de ordine notat cu o. Acest tablou este unidimensional si are n elemente.

ALGORITMUL PARCURGERII GENERICE PROGRAM PG; BEGIN U = N − {s}; V = {s};

ALGORITMUL PARCURGERII GENERICE PROGRAM PG; BEGIN U = N − {s}; V = {s}; W =ø; FOR toti y Є N DO p(y) = 0; k = 1; o(s) = 1; FOR toti y Є U DO o(y) = ∞; WHILE V ≠ ø DO BEGIN se selecteaza un nod x din V ; IF exista arc(x, y) Є A si y Є U THEN BEGIN U = U − {y}; V = V ∪ {y}; p(y) = x; k = k + 1; o(y) = k ELSE BEGIN V = V − {x}; W = W ∪ {x}; END; END.

ALGORITMUL PARCURGERII GENERICE Teorema 1: � Algoritmul PG are complexitatea O (m). Definitia 1:

ALGORITMUL PARCURGERII GENERICE Teorema 1: � Algoritmul PG are complexitatea O (m). Definitia 1: � Un digraf G=(N, A) se numeste arborescenta cu radacina s daca este fara cicluri, ρ-(s)=0 si ρ-(x)=1 pentru toate nodurile x din N cu x ≠ s. Definitia 2: � Subgraful Gp = (Np , Ap) cu Np ={y∈ N | p(y) ≠ 0} ∪{s}p si = Teorema 2: � Algoritmul PG determina elementele tabloului p astfel incat subgraful predecesor Gp = (Np , Ap) este o arborescenta parcurgere generica.

PROCEDURA DRUM � Drumul de la nodul sursa s la un nod oarecare y

PROCEDURA DRUM � Drumul de la nodul sursa s la un nod oarecare y se determina folosind vectorul predecesor p, cu urmatoarea procedura: PROCEDURA DRUM(G, s, y); BEGIN IF y=s THEN se tipareste s; ELSE IF p(y)=0 THEN se tipareste “nu exista drum de la s la y”; ELSE BEGIN drum(s, p(y), p) se tipareste y; END.

EXEMPLUL 1 Aplicam algoritmul generic de parcurgere pe digraful urmator: 2 4 3 5

EXEMPLUL 1 Aplicam algoritmul generic de parcurgere pe digraful urmator: 2 4 3 5 1

DUPA INITIALIZARI 2 4 3 5 1 s=1 U={2, 3, 4, 5} V={1} W=

DUPA INITIALIZARI 2 4 3 5 1 s=1 U={2, 3, 4, 5} V={1} W= ø p =(0, 0, 0) k=1 o=(1, ∞, ∞)

ITERATIA 1 2 4 3 5 1 Se selecteaza x=1(Nodul 1 fiind singurul nod

ITERATIA 1 2 4 3 5 1 Se selecteaza x=1(Nodul 1 fiind singurul nod din V) Avem (1, 2)∈ A, 2∈ U, deci: U={3, 4, 5} k=2 V={1, 2} o=(1, 2, ∞, ∞, ∞) p =(0, 1, 0, 0, 0)

ITERATIA 2 2 4 3 5 1 Nodul x poate fi oricare dintre nodurile

ITERATIA 2 2 4 3 5 1 Nodul x poate fi oricare dintre nodurile V. Pp. ca a fost ales x=1 Deoarece (1, 3)∈ A, 3∈ U, deci: U={4, 5} k=3 V={1, 2, 3} o=(1, 2, 3, ∞, ∞) p =(0, 1, 1, 0, 0)

ITERATIA 3 2 4 3 5 1 Nodul x poate fi oricare dintre nodurile

ITERATIA 3 2 4 3 5 1 Nodul x poate fi oricare dintre nodurile V. Daca se selecteaza x=3 Deoarece (3, 5)∈ A, 5∈ U, deci: U={4} k=4 V={1, 2, 3, 5} o=(1, 2, 3, ∞, 4) p =(0, 1, 1, 0, 3)

ITERATIA 4 2 4 3 5 1 Presupunem ca a fost selectat nodul x=1

ITERATIA 4 2 4 3 5 1 Presupunem ca a fost selectat nodul x=1 din V. Deoarece nu exista arc de la nodul 1 la un nod nevizitat, inseamna ca nodul 1 este vizitat si analizat, deci: V={2, 3, 5} W={1}

ITERATIA 5 2 4 3 5 1 Daca se selecteaza nodul x=3 din V,

ITERATIA 5 2 4 3 5 1 Daca se selecteaza nodul x=3 din V, atunci: V={2, 5} W={1, 3}

ITERATIA 6 2 4 3 5 1 Daca se selecteaza nodul x=2: Deoarece (2,

ITERATIA 6 2 4 3 5 1 Daca se selecteaza nodul x=2: Deoarece (2, 4)∈ A, 4∈ U, deci: U= ø k=5 V={2, 4, 5} o=(1, 2, 3, 5, 4) p =(0, 1, 1, 2, 3)

ITERATIA 7 2 4 3 5 1 Consideram ca se selecteaza nodul x=2. Deoarece

ITERATIA 7 2 4 3 5 1 Consideram ca se selecteaza nodul x=2. Deoarece nu mai sunt noduri nevizitate rezulta ca: V={4, 5} W={1, 2, 3}

ITERATIA 8 2 4 3 5 1 Presupunem ca se selecteaza nodul x=5 din

ITERATIA 8 2 4 3 5 1 Presupunem ca se selecteaza nodul x=5 din V. Atunci: V={4} W={1, 2, 3, 5}

ITERATIA 9 2 4 3 5 1 Se selecteaza nodul x=4 din V. Obtinem:

ITERATIA 9 2 4 3 5 1 Se selecteaza nodul x=4 din V. Obtinem: V= ø W={1, 2, 3, 4, 5} Si algoritmul se termina.

ARBORESCENTA PG 2 4 3 5 1 La terminarea parcurgerii, p=(0, 1, 1, 2,

ARBORESCENTA PG 2 4 3 5 1 La terminarea parcurgerii, p=(0, 1, 1, 2, 3) o=(1, 2, 3, 4, 5) si W=N, ceea ce inseamna ca toate nodurile digrafului sunt accesibile din nodul sursa s=1. Cu ajutorul vectorului predecesor p putem determina arborescenta parcurgere generica.

 Care a) b) c) este complexitatea algoritmului PG? O(m lg m) O (m)

Care a) b) c) este complexitatea algoritmului PG? O(m lg m) O (m) O(m 2)