Professional Documents
Culture Documents
Arbori echilibrati
http://www.acs.ase.ro
http://www.itcsolutions.eu
Everybody in this country should learn how to
program a computerbecause it teaches you how
to think.
http://www.youtube.com/watch?v=dU1xS07N-
FA&desktop_uri=%2Fwatch%3Fv%3DdU1xS07N-FA&app=desktop
2
http://www.acs.ase.ro
http://www.itcsolutions.eu
ARBORI BINARI ECHILIBRATI
Abordari ale operatiei de echilibrare:
1. Echilibrare perfecta:
Diferenta dintre nr. noduri SS si SD este 0, pentru fiecare
nod din arbore;
Toate nodurile frunza sunt pe acelasi nivel;
Orice nod de pe nivelurile intermediare are doi
descendenti (h inaltime arbore);
3
23
10 27
18 3
25 29
http://www.acs.ase.ro
http://www.itcsolutions.eu
Implementare operatie:
Metoda divide et impera;
Parcurgere sir de chei ordonate crescator si
inserarea valorii din mijloc in arbore;
Volum mare de calcule: operatii de inserare
si stergere, parcurgere inordine arbore,
reconstructie structura arborescenta.
4
ARBORI BINARI ECHILIBRATI
http://www.acs.ase.ro
http://www.itcsolutions.eu
5
ARBORI BINARI ECHILIBRATI
void echlibrareArbore(int *chei, int dim, int stanga, int dreapta, NodArbore
*&radacina){
if (dreapta>=stanga){
int mijloc=(dreapta+stanga)/2;
if (dreapta-stanga==1){
radacina =inserareArbore(radacina, chei[stanga]);
radacina = inserareArbore (radacina, chei[dreapta]);
}
else{
if (dreapta==stanga)
radacina = inserareArbore (radacina, chei[stanga]);
else{
radacina = inserareArbore (radacina, chei[mijloc]);
echlibrareArbore (chei,dim,stanga, mijloc-1, radacina);
echlibrareArbore (chei,dim, mijloc+1,dreapta, radacina);
}
}
}
chei vector: irul sortat cresctor al valorilor;
dim dimensiunea vectorului;
stanga, dreapta limitele intervalului curent;
rdcina arborelui ce va fi creat.
http://www.acs.ase.ro
http://www.itcsolutions.eu
Mentenanta unei astfel de structuri:
Grad de complexitate foarte ridicat;
Recrearea arborelui perfect echilibrat dup
fiecare operaie de inserare sau tergere cu
metoda echilibrareArb;
6
ARBORI BINARI ECHILIBRATI
http://www.acs.ase.ro
http://www.itcsolutions.eu
Abordari ale operatiei de echilibrare
(continuare):
2. Echilibrare imperfecta:
Diferenta dintre nr. noduri SS si SD este
maxim 1, pentru fiecare nod din arbore;
Crearea structurii: utilizarea metodei
prezentate anterior, pornind de la un set de
valori sortate cresctor sau descresctor;
7
ARBORI BINARI ECHILIBRATI
http://www.acs.ase.ro
http://www.itcsolutions.eu
Mentenanta unei astfel de structuri:
Grad de complexitate acceptabil;
Metode specifice unor structuri
arborescente echilibrate particulare: AVL,
arbori B, arbori Rosu & Negru;
Efort de prelucrare mai mic dect volumul
operaiilor asociat reconstruciei arborelui
prin metoda echilibrareArb.
8
ARBORI BINARI ECHILIBRATI
http://www.acs.ase.ro
http://www.itcsolutions.eu
Minimizarea efortului de cautare:
Aranjare echilibrata a valorilor pe ambii
subarbori ai fiecrui nod.
9
23
10
27 18
3
2
23
10 27
18 3
2
23 10 3 2, 4 comparatii 10 3 2, 3 comparatii
ARBORI BINARI ECHILIBRATI
http://www.acs.ase.ro
http://www.itcsolutions.eu
Caracteristici:
Definit de G.M. Adelson-Velskii i E.M.
Landis;
Arbore binar de cutare echilibrat pe
nlime;
Arbore binar de cutare este AVL: gradul de
echilibru al fiecrui nod ia valori n mulimea
{-1,0,1}.
10
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Gradul de echilibru al unui nod (GE):
GE = H(SD) H(SS)
H() funcia de calcul a nlimii unei structuri
arborescente;
H(rad) = 1 + max (H(subarbore drept), H(subarbore stng))
11
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Pentru GE = 0, nodul este echilibrat,
Pentru GE=1 si GE=-1, nodul descrie un
dezechilibru la dreapta, respectiv la stnga;
situatii acceptate: pentru un numr par de valori
este imposibil sa se defineasc un arbore binar de
cutare n care toate nodurile sunt perfect
echilibrate.
12
23
10
27 18
3
2
GE = 0
GE = -1 GE = 0
GE = 0 GE = 0 GE = 0
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Mentenanta structura arbore AVL:
Verificarea gradului de echilibru, pentru fiecare
nod n parte;
Inserare/tergere afecteaz structura arborelui i
conduc la situaii de dezechilibru;
Situaiile de dezechilibru puternic: identificate prin
indicatorul GE care ia valori n mulimea
{-2,2}.
13
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Reechilibrarea arborelui binar de cutare i
pstrarea caracteristicilor aferente arborilor
AVL:
rotire simpla la stnga;
rotire simpla la dreapta;
dubla rotire la stnga;
dubla rotire la dreapta.
14
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Operatia de echilibrare:
Inserare: un arbore AVL dezechilibrat va fi
reechilibrat printr-o singur rotaie;
Stergere: mult mai complex, necesitnd
minim o rotaie.
Metoda adecvata de reechilibrare: analiza
gradului de echilibru a nodurilor aflate pe
drumul de la rdcina arborelui la locaia
unde a fost inserat/ters un nod.
15
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Arbore binar AVL dezechilibrat dupa inserare nod cu
valoare cheie = 1
16
23
10
27 18
3
2
GE = -1
GE = -2 GE = 0
GE = -1 GE = 0 GE = 0
1
GE =0
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Aplicare metoda de reechilibrare:
Se identifica un nod (pivot) n care se
realizeaz rotirea subarborelui abordare
bottom-up pornind de la locatia nodului
inserat/sters;
Reechilibrarea: cat mai aproape de locatia
care a generat dezechilibrul;
Identificare operatie de rotatie: gradul de
echilibru al nodului pivot si fiu al pivotului
pe directia dezechilibrului.
17
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Nodul pivot (cheia 3), are GE = -2: dezechilibru la stnga.
Nodul fiu stnga (cheia 2), are dezechilibru la stnga.
Reechilibrarea se realizeaz prin operaia de rotire simpl la
dreapta.
18
X
3
2
Z
?
Y
X
3
2
Z
X - Subarbore drept
pivot
GE = -2
GE = -1
?
Y
Y - Subarbore stang
fiu dreapta pivot
NOD PIVOT
GE = 0
GE = 0
NOD FIU PE
DIRECTIA
DEZECHILIBRULUI
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
19
3
2
?
3
2
GE = H
1
(H
1
+ 2) = -2
GE = H
1
(H
1
+ 1) = -1
?
NOD PIVOT
GE = 0
GE = 0
H
1
H
1
+1
Z Y
H
1
X
H
1
+1
Z
H
1
+2
H
1
Y
H
1
X
H
1
+1
ARBORI AVL
Procesul de rotire simpl la dreapta
http://www.acs.ase.ro
http://www.itcsolutions.eu
20
23
10
27 18
2
3
GE = 0
GE = 0 GE = 0
GE = 0
GE = 0 GE = 0
1
GE =0
ARBORI AVL
Arbore AVL reechilibrat
http://www.acs.ase.ro
http://www.itcsolutions.eu
21
23
10
27
2
30
GE = 1
GE = -1
GE = 2
GE = 0
GE = 1 GE =0
1
Nodul pivot (cheia 23), are GE = 2: dezechilibru la dreapta.
Nodul fiu stnga (cheia 27), are dezechilibru la dreapta.
Reechilibrarea se realizeaz prin operaia de rotire simpl la
stanga.
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
22
X - Subarbore stng
pivot
27
23
X
Y
GE = 2
GE = 1
?
Z
Y - Subarbore stang
fiu stnga pivot
NOD PIVOT
Z
27
23
Y
?
X
GE = 0
GE = 0
NOD FIU PE
DIRECTIA
DEZECHILIBRULUI
Procesul de rotire simpl la stnga
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
23
27
10
30
2
23
GE = 1
GE = -1
GE = 0
GE = 0 GE = 0 GE =0
1
Arbore AVL reechilibrat
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Se insereaz n arborele AVL anterior
elementele cu valorile 16, 24, 26. Structura
arborescent obinut este:
24
27
10
30
2
23
GE = 2
GE = -1
GE = -2
GE = 1 GE = 0 GE =0
1
24
26
16
GE = 1
GE = 0
GE = 0
Arbore AVL dezechilibrat
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Ultima operatie: inserare nod 26;
Analiza drumului de la nodul 26 rdcin
conduce la identificarea pivotului, nodul 27;
Nodul 27: puternic dezechilibrat la stnga,
nodul fiu, nodul 23, este dezechilibrat slab
pe direcia opus;
25
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Simulare rotire simpl la dreapta aplicat
pivotului
26
23
10
27
2
16
GE = 2
GE = -1
GE = 2
GE = 0 GE = -1 GE =0
1
24
26
GE = 1
GE = 0
GE = 0
30
Arbore AVL dezechilibrat
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Arborele AVL obtinut:
Este dezechilibrat, dar n sens opus;
Reechilibrarea: tot cu o rotire simpl, dar n
sens opus: va conduce la obinerea ipotezei
iniiale;
Solutia este ineficienta.
27
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Soluia eficient:
Aplicarea unei rotiri duble: const n dou
rotiri simple;
Prima rotire: scop de a rearanja structura
arborescent astfel nct direciile
dezechilibrului nodului pivot i a fiului
acestuia s aib acelai sens;
A doua rotire are ca obiectiv reechilibrarea
arborelui;
28
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Soluia eficient (continuare):
Cele dou rotaii sunt aplicate unor noduri
diferite;
Prima rotaie: nodului fiu al nodului pivot, pe
direcia dezechilibrului;
A dou rotire: nodului pivot i are sens opus
dezechilibrului.
29
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Pivotul este nodul 27, puternic dezechilibrat la
stnga.
Etape pentru a reechilibra arborele:
Se analizeaz nodul fiu al nodului pivot pe
direcia dezechilibrului, nodul 23 i este slab
dezechilibrat la dreapta;
Reechilibrare printr-o dubl rotaie (pivotul
i nodul fiu sunt dezechilibrate pe direcii
diferite);
30
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Etape pentru a reechilibra arborele (cont.):
Prima rotaie se aplic nodului fiu; are sens identic
cu dezechilibrul nodului pivot; redefinete situaia
pentru aplicarea unei rotaii simple
A doua rotaie se aplic nodului pivot i are sens
opus dezechilibrului
31
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
32
27
10
30
2
23
GE = 2
GE = -1
GE = -2
GE = 1
GE = 0
GE =0
1
24
26
16
GE = 1 GE = 0
GE = 0
27
10
30
2
24
GE = 2
GE = -1
GE = -2
GE = -1 GE = 0 GE =0
1
26
16
23
GE = 0 GE = -1
GE = 0
NOD PIVOT
NOD FIU
A) ROTATIE SIMPLA LA STANGA B) ROTATIE SIMPLA LA DREAPTA
NOD PIVOT
24
27
2
23
GE = 1
GE = -1
GE = 0
GE = -1 GE = 0 GE =0
1
26
30
16
GE = 0 GE = 0
GE = 0
C) ARBORE REECHILIBRAT
10
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Reechilibrare arbore AVL prin stergerea unei
chei 16 si inserarea cheii 25.
33
24
27
2
23
GE = 2
GE = -1
GE = 2
GE = -1 GE = -1 GE =0
1
26
30
25
GE = -1
GE = 0
GE = 0
10
Arbore AVL dezechilibrat
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Exist dou noduri, 24 i 10, ce descriu
dezechilibre puternice, GE = 2, la dreapta.
Analiza drumului de la noul nod inserat la
rdcin arborelui, stabilete ca fiind pivot
nodul cu valoarea 24.
34
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Reechilibrarea presupune:
Rotaie simpla la dreapta n nodul fiu al
pivotului 27; dac pivotul are ambii fii atunci
rotaia se face in direcia dezechilibrului;
Rotaie simpla la stnga, n sens opus
dezechilibrului, n nodul pivot;
35
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
36
24
27
2
23
GE = 2
GE = -1
GE = 2
GE = -1 GE = -1 GE =0
1
26
30
25
GE = -1
GE = 0
GE = 0
10
NOD PIVOT
NOD FIU
A) ROTATIE SIMPLA LA DREAPTA
24
26
2
23
GE = 2
GE = -1
GE = 2
GE = -1 GE = 1 GE =0
1
25
27
30
GE = 0
GE = 0
GE = 1
10
NOD PIVOT
NOD FIU
B) ROTATIE SIMPLA LA STANGA
26
27
2
24
GE = 1
GE = -1
GE = 0
GE = 0 GE = 1
1
25
30
GE = 0
GE = 0
GE = 0
10
23
GE =0
C) ARBORE REECHILIBRAT
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
37
Situaii dezechilibru arbori AVL (operatia de inserare)
Grad
echilibru
nod pivot
Nod fiu
analizat
Grad echilibru
nod fiu
Rotire
+2 dreapta +1 Simpl la stnga
+2 dreapta -1 Dubl la stnga: rotire simpl
la dreapta n fiul din dreapta
al pivotului; rotire simpl la
stnga n pivot.
-2 stnga -1 Simpl la dreapta
-2 stnga +1 Dubl la dreapta: rotire
simpl la stnga n fiul din
stnga al pivotului; rotire
simpl la dreapta n pivot.
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Din arborele AVL de mai jos, se terge nodul
50.
38
47
35
50 37
22
16
42
31
9 27 32
29
GE =0
GE =0 GE =0
GE =0
GE =0
GE = -1
GE = -1 GE = -1
GE = 1
GE = 1
GE = -1
GE = -1
47
35
stiva
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
39
47
35
37
22
16
42
31
9 27 32
29
GE =0
GE =0 GE =0 GE =0
GE = -1
GE = -1 GE = -1
GE = 1
GE = 1
GE = -2
GE = -1
35 stiva
42
35
37
22
16
47
31
9 27 32
29
GE =0
GE =0
GE =0
GE =0
GE = -1
GE = -1 GE = -1
GE = 1
GE = 0
GE =0
GE = -2
Structur arborescenta de tip AVL dezechilibrat prin
aplicarea unei rotaii duble (1. stanga in 37, 2. dreapta
in 42)
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Printr-o rotaie la dreapta n nodul cu valoarea
35 considerat pivot, arborele AVL este
reechilibrat.
Deoarece stiva a fost golit, operaie de
tergere se consider ncheiat
40
GE =0
GE = -1
42
35
37
22
16
47
31
9 27 32
29
GE =0
GE =0
GE =0
GE =0
GE = -1
GE = -1 GE = -1
GE = 1
GE = 0
GE =0
GE = -2
GE =0
42
35
37
22
16
47
31
9
27 32
29
GE =0 GE =0
GE =0
GE = -1
GE =0
GE = 1
GE = 0
GE =0
(1)
(2)
Structur arborescenta de tip AVL
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Situaii de dezechilibru diferite de ipotezele analizate
la operaia de inserare
41
GE =0
19
17
16 20
23
GE =0
GE = 1
GE = 0
GE =0 GE =0
19
17
20
23
GE = 2
GE = 0
GE =0
GE = -1
19
20
23 17
GE = 0
GE =0
GE = -1
tergere din structur arborescenta de tip AVL
Pivotul are un grad de echilibru +2, iar nodul fiu de pe direcia
dezechilibrului are un echilibru 0.
Soluia este data de o rotaie simpl n pivot la stnga.
ARBORI AVL
http://www.acs.ase.ro
http://www.itcsolutions.eu
Caracteristici:
Tipologie de arbori binari de cutare
echilibrai;
Definii de Rudolf Bayer n 1972 sub forma
de arbori simetrici;
Nodurile sunt plasate n mod simetric n
subarborii stnga sau dreapta.
42
ARBORI ROSU&NEGRU
http://www.acs.ase.ro
http://www.itcsolutions.eu
Factorul cel mai important este dat de culoarea
fiecrui nod:
Fiecare nod are una dintre cele dou culori, rou
sau negru;
Nodul rdcin este ntotdeauna negru;
Ambele noduri fiu ale unui nod printe rou sunt
negre; un nod rou nu poate avea ca printe dect
un nod negru;
toate drumurile de la rdcin la oricare din
nodurile frunz conin acelai numr de noduri
negre.
43
ARBORI ROSU&NEGRU
http://www.acs.ase.ro
http://www.itcsolutions.eu
44
23
15
27 18
3
2
Structur arborescenta de tip Rou & Negru
ARBORI ROSU&NEGRU