Sunteți pe pagina 1din 32

Arbori de cautare echilibrat, i.

SD 2015/2016

Arbori bicolori (red-black trees)


I

Symmetric binary B-tree, Rudolf Bayer, 1972.

Echilibrarea este ment, inuta cu ajutorul unei colorari a nodurilor.

Arborii ros, u-negru sunt arbori binari de cautare care satisfac


urmatoarele proprietat, i:
1. un nod este colorat cu ros, u sau negru;
2. radacina s, i nodurile frunza (nil care fac parte din structura) sunt
colorate cu negru;
3. daca un nod este ros, u, atunci fiii sai sunt negri;
4. drumurile de la un nod la nodurile de pe frontiera au acelas, i numar de
noduri negre.
FII, UAIC ()

Curs 10

SD 2015/2016

2 / 31

Arbori bicolori - exemplu


20

10

35

15

21

50

30

FII, UAIC ()

Curs 10

SD 2015/2016

3 / 31

Arbori bicolori

Lema:
Orice subarbore al unui arbore bicolor are cel put, in 2bh(v ) 1 noduri
interne, unde:
I

v radacina subarborelui,

bh(v ) numarul de noduri negre aflate pe un drum de la v la un nod


de pe frontiera, excluzandu-l pe v ;

Demonstratie.
La curs.

FII, UAIC ()

Curs 10

SD 2015/2016

4 / 31

Arbori bicolori

Teorema:
Un arbore bicolor cu n noduri interne are nalt, imea h 2 log2 (n + 1).

Demonstratie.
Conform proprietat, ii 4,
n 2h/2 1 h/2 log2 (n + 1)

FII, UAIC ()

Curs 10

h 2 log2 (n + 1).

SD 2015/2016

5 / 31

Arbori bicolori: operat, ii

Corolar:
Intr-un arbore bicolor cu n noduri, operat, ia de cautare are complexitatea
timp O(log n).

FII, UAIC ()

Curs 10

SD 2015/2016

6 / 31

Operat, ia de inserare

Se cauta pozit, ia de inserare s, i se insereaza noua valoare ca n cazul


arborilor binari de cautare obis, nuit, i.

Se coloreaza noul nod cu ros, u.

Se restaureaza proprietat, ile de arbore bicolor prin recolorare de noduri


s, i aplicare de rotat, ii simple.

FII, UAIC ()

Curs 10

SD 2015/2016

7 / 31

Operat, ia de inserare

Proprietatea 1: satisfacuta.

Proprietatea 2 satisfacuta (ambii fii ai nodului inserat sunt nil).


Daca nodul inserat este radacina recolorare n negru.

Proprietatea 4 satisfacuta (noul nod ros, u nlocuies, te o frunza).

Poate sa nu fie respectata proprietatea 3 - daca parintele nodului este


ros, u.
I

Muta mai sus aceasta situat, ie prin recolorarea nodurilor pana cand
poate fi reparata prin operat, ii de rotat, ie s, i recolorare.

FII, UAIC ()

Curs 10

SD 2015/2016

8 / 31

Operat, ia de inserare: restaurarea proprietat, ii 3


I

Caz 1: unchiul nodului inserat este ros, u


Se recoloreaza parintele s, i unchiul n negru s, i bunicul in ros, u.

Caz 2: unchiul nodului inserat este negru s, i nodul inserat este fiul
drept al unui fiu stang
Se aplica o rotat, ie simpla la stanga ntre nodul curent s, i nodul
parinte.

Caz 3: unchiul nodului inserat este negru s, i nodul inserat este fiul
stang al unui fiu stang
Se aplica o rotat, ie simpla la dreapta ntre nodul parinte s, i nodul
bunic + se recoloreaza nodurile parinte (n negru) s, i bunic (n
ros, u).

Obs.: Operat, ii similare se aplica pentru cazul simetric.


FII, UAIC ()

Curs 10

SD 2015/2016

9 / 31

Operat, ia de inserare - Caz 1

FII, UAIC ()

Curs 10

SD 2015/2016

10 / 31

Operat, ia de inserare - Caz 2 s, i 3

FII, UAIC ()

Curs 10

SD 2015/2016

11 / 31

Inserare exemplu: nodul 12

20
10

35

3
14

FII, UAIC ()

50

15
17

Curs 10

SD 2015/2016

12 / 31

Inserare CAZUL 1: recolorare


20
10

35

50

15
14

17

12

FII, UAIC ()

Curs 10

SD 2015/2016

13 / 31

Inserare CAZUL 2: rotat, ie la stanga


20
10

35
15

3
14

50

17

12

FII, UAIC ()

Curs 10

SD 2015/2016

14 / 31

Inserare CAZUL 3: rotat, ie la dreapta + recolorare


20
15
10

35
50

17
14

12

FII, UAIC ()

Curs 10

SD 2015/2016

15 / 31

Inserare Arborele ros, u-negru valid

15
10

20

14

17

12

FII, UAIC ()

35
50

Curs 10

SD 2015/2016

16 / 31

Operat, ia de inserare: algoritm

Se considera ca fiecare nod a arborelui este o structura cu urmatoarele


campuri:
I

cheie: informat, ia utila a nodului;

culoare: ros, u / negru;

pred: adresa nodului parinte (null pentru radacina);

stg: adresa fiului stang;

drp: adresa fiului drept.

FII, UAIC ()

Curs 10

SD 2015/2016

17 / 31

Operat, ia de inserare: algoritm


Procedure inserare(t, x)
begin
insArbBinCautare(t, x)
x culoare rosu
while (x! = t and x pred culoare == rosu) do
if (x pred == x pred pred stg ) then
y x pred pred drp
if (y culoare == rosu) then
Caz 1
else
if (x == x pred drp) then
Caz 2
Caz 3
else
similar cu ramura then, doar ca interschimbam stg cu drp
t culoare negru
end
FII, UAIC ()

Curs 10

SD 2015/2016

18 / 31

Operat, ia de inserare: Caz 1

x
y
x
x

pred culoare negru


culoare negru
pred pred culoare ros, u
x pred pred

FII, UAIC ()

Curs 10

SD 2015/2016

19 / 31

Operat, ia de inserare: Caz 2

x x pred
rotatie-stanga(t, x)

FII, UAIC ()

Curs 10

SD 2015/2016

20 / 31

Operat, ia de inserare: Caz 3

x pred culoare negru


x pred pred culoare ros, u
rotatie-dreapta(t, x pred pred)

FII, UAIC ()

Curs 10

SD 2015/2016

21 / 31

Operat, ia de inserare - exemplul 2

FII, UAIC ()

Curs 10

SD 2015/2016

22 / 31

Operat, ia de inserare - exemplul 3

FII, UAIC ()

Curs 10

SD 2015/2016

23 / 31

Operat, ia de inserare - exemplul 3

FII, UAIC ()

Curs 10

SD 2015/2016

24 / 31

Operat, ia de s, tergere

Similara cu operat, ia de s, tergere de la arborii binari de cautare


obis, nuit, i.

Se va t, ine cont ca nodurile null fac parte din structura.

In urma s, tergerii este posibil ca proprietatea 4 sa nu mai fie


respectata.

Se restaureaza proprietat, ile de arbore bicolor prin recolorare de noduri


s, i aplicare de rotat, ii simple.

FII, UAIC ()

Curs 10

SD 2015/2016

25 / 31

Operat, ia de s, tergere: restaurarea proprietat, ii 4

Caz 1: Se transforma ntr-unul din cazurile 2), 3), 4) printr-o rotat, ie.

Caz 2: Nodul pentru care nu este satisfacuta proprietatea este


deplasat spre radacina cu un nivel prin recolorarea unui nod.

Caz 3: Se transforma n cazul 4) printr-o interschimbare de culori s, i o


rotat, ie.

Caz 4: In acest caz se restabiles, te proprietatea de arbore bicolor


pentru ntreg arborele.

FII, UAIC ()

Curs 10

SD 2015/2016

26 / 31

S, tergere CAZUL 1

Caz 1: Se transforma ntr-unul din cazurile 2), 3), 4) printr-o rotat, ie.

B
C

FII, UAIC ()

D E

Curs 10

B C

SD 2015/2016

27 / 31

S, tergere CAZUL 2
Caz 2: Nodul pentru care nu este satisfacuta proprietatea este deplasat
spre radacina cu un nivel prin recolorarea unui nod.

u
7

B
C

FII, UAIC ()

D E

A
F

B
C

Curs 10

D E

SD 2015/2016

28 / 31

S, tergere CAZUL 3
Caz 3: Se transforma n cazul 4) printr-o interschimbare de culori s, i o
rotat, ie.
v
v

u
u

y
7 A

z
z

D
C

D E

F
E

FII, UAIC ()

Curs 10

SD 2015/2016

F
29 / 31

S, tergere CAZUL 4
Caz 4: In acest caz se restabiles, te proprietatea de arbore bicolor pentru
ntreg arborele.

FII, UAIC ()

D E

Curs 10

B C

SD 2015/2016

30 / 31

Arbori bicolori

Complexitatea algoritmilor de inserare / s, tergere: O(log n).

Corolar:
Clasa arborilor bicolori este O(log n)stabila.

FII, UAIC ()

Curs 10

SD 2015/2016

31 / 31

Arbori bicolori

Complexitatea algoritmilor de inserare / s, tergere: O(log n).

Corolar:
Clasa arborilor bicolori este O(log n)stabila.

Utilizari:
I

System symbol tables.

Kernel Linux (Completely Fair Scheduler).

FII, UAIC ()

Curs 10

SD 2015/2016

31 / 31

S-ar putea să vă placă și