Documente Academic
Documente Profesional
Documente Cultură
Mitică Craus
1/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
Cuprins
Introducere
Parcurgerea euleriană a unui arbore
Descriere
Transformarea unui arbore neorientat ı̂n arbore cu rădăcină
Numerotarea vârfurilor ı̂n preordine şi postordine
Calculul relaţiilor ”este un descendent al lui ” şi ”este un strămoş al lui ”
Calculul minimului (maximului) valorilor din subarborele cu rădăcina ı̂ntr-un nod
oarecare:
Colorarea arborilor
Colorarea arcelor
Colorarea vârfurilor
2/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
Introducere
• Arborii sunt obiectul unor calcule care deseori constituie taskuri ı̂n probleme de
grafuri.
• Sunt frecvente cazurile ı̂n care algoritmi polilogaritmici eficienţi sunt obţinuţi pe
baza unor calcule pe arbori.
• Problemele relative la arbori, abordate ı̂n acestă lecţie sunt:
1. Parcurgerea unui arbore ı̂n sens eulerian:
2. Aplicaţii ale parcurgerii euleriene:
2.1 Transformarea unui arbore neorientat ı̂n arbore cu rădăcină;
2.2 Numerotarea preordine si postordine a vârfurilor unui arbore;
2.3 Calculul relaţiilor ”este un descendent al lui ” şi ”este un strămoş al lui ”;
2.4 Calculul minimului (maximului) valorilor din subarborele cu rădăcina ı̂ntr-un nod oarecare.
3. Colorarea arborilor:
3.1 Colorarea arcelor;
3.2 Colorarea vârfurilor.
3/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
4/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
5/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
• Problema cheie este calcularea, pentru arcul (i, j), a valorii index(succ(j,i)).
• Dacă se copie tabloul A ı̂ntr-un tablou B şi apoi se sortează tabloul B ı̂n ordinea
crescătoare a valorilor lui j, atunci B[k] va conţine h(j, i), index(succ(j, i))i.
• Aceasta presupune o fază de preprocesare de complexitate timp ≥ O(log n).
• În aceste condiţii, algoritmulPARCURGERE EULERIANA ARBORE(A, n) are
complexitate timp O(1), pe o maşină PRAM cu O(n) unităţi de procesare.
6/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
7/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
8/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
9/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
• Fie (r , j) primul arc din tabloul A. Arborele neorientat T va fi transformat ı̂n arbore
cu rădăcina r . Pentru fiecare vârf i 6= r se determină părinte(i) ı̂n modul următor:
1. Se numerotează elementele listei LE prin intermediul procedurii CALCUL RANGURI.
2. Rangurile rezultate vor fi modificate astfel incât să reprezinte distanţa unui arc faţă de
primul element al listei LE . Dintre două arce (i, j) şi (j, i) cel de rang mai mic este
marcat ca fiind arc direct iar cealalt invers.
3. Sublistele rezultate vor fi numite LED = lista arcelor directe, respectiv LEI = lista
arcelor inverse.
4. Pentru fiecare arc direct (i, j), părinte[j] ← i.
• Pentru simplificarea limbajului vom nota index(succ(i, j)) cu index(succ(A[k]), dacă
A[k] = h(i, j), index(succ(i, j))i.
10/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
11/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
12/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
13/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
14/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
16/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
Colorarea arcelor
17/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
Colorarea vârfurilor
18/ 18