Sunteți pe pagina 1din 32

Curs 11. Arbori de c autare echilibrat i.

Ianuarie, 2014

Cont inut

Arbori bicolori

Arbori splay

Treaps

Alte exemple de arbori echilibrat i

Structuri de date

Curs 11

Ianuarie, 2014

2 / 32

Arbori bicolori (red-black trees )

Symmetric binary B-tree, Bayer 1972 Echilibrarea este ment inut a cu ajutorul unei color ari a nodurilor Arborii ro su-negru sunt arbori binari de c autare care satisfac urm atoarele propriet a ti:
1. 2. 3. 4. un nod are culoarea ro su sau negru r ad acina si nodurile frunz a (nil ) sunt colorate cu negru dac a un nod este ro su, atunci ii s ai sunt negri drumurile de la un nod la nodurile de pe frontier a au acela si num ar de noduri negre

Structuri de date

Curs 11

Ianuarie, 2014

3 / 32

Arbori bicolori - exemplu

Structuri de date

Curs 11

Ianuarie, 2014

4 / 32

Arbori bicolori

Teorem a: Un arbore bicolor cu n noduri interne are n alt imea h 2log2 (n + 1) Demonstrat ie:
Orice subarbore al unui arbore bicolor are cel put in 2bh(v ) 1 noduri interne, unde:
v r ad acina subarborelui, bh(v ) num arul de noduri negre aate pe un drum de la v la un nod de pe frontier a

Conform propriet a tii 4, n 2h/2 1 h/2 log2 (n + 1) h 2log2 (n + 1)

Structuri de date

Curs 11

Ianuarie, 2014

5 / 32

Operat ii

Corolar: Operat iile de c autare, min, max, succesor, predecesor au complexitatea timp O (lgn), ntr-un arbore bicolor cu n noduri. Operat iile de inserare si stergere modic a arborele ro su-negru.

Structuri de date

Curs 11

Ianuarie, 2014

6 / 32

Operat ia de inserare

se caut a pozit ia si se insereaz a valoarea similar operat iei de inserare de la arbori binari de c autare se coloreaz a nodul cu ro su se restaureaz a propriet a tile (prin recolorare de noduri si aplicare de rotat ii simple)

Structuri de date

Curs 11

Ianuarie, 2014

7 / 32

Operat ia de inserare

Proprietatea 1: satisf acut a Proprietatea 2 satisf acut a (ambii i ai nodului inserat sunt nil ) dac a nodul este r ad acina recolorare Proprietatea 4 satisf acut a (noul nod ro su nlocuie ste o frunz a) Poate violata proprietatea 3 - dac a p arintele nodului este ro su
muta mai sus aceasta situatie prin recolorarea nodurilor pana cand poate xata prin operatii de rotat ie si recolorare

Structuri de date

Curs 11

Ianuarie, 2014

8 / 32

Operat ia de inserare: algoritm


Procedure inserare(t , x ) begin insArbBinCautare(t , x ) culoare [x ] rosu while (x ! = t and culoare [pred [x ]] = rosu ) do if (pred [x ] = pred [pred [x ]] stg ) then y pred [pred [x ]] drp if (culoare [y ] = rosu ) then Caz 1 else if (x = pred [x ] drp ) then Caz 2 Caz 3 else similar cu ramura then, doar c a interschimb am stg cu drp culoare [t ] negru end
Structuri de date Curs 11 Ianuarie, 2014 9 / 32

Operat ia de inserare - Caz 1

Structuri de date

Curs 11

Ianuarie, 2014

10 / 32

Operat ia de inserare - Caz 2 si 3

Structuri de date

Curs 11

Ianuarie, 2014

11 / 32

Operat ia de inserare - exemplul 1

Structuri de date

Curs 11

Ianuarie, 2014

12 / 32

Operat ia de inserare - exemplul 2

Structuri de date

Curs 11

Ianuarie, 2014

13 / 32

Operat ia de inserare - exemplul 2

Structuri de date

Curs 11

Ianuarie, 2014

14 / 32

Arbori bicolori

Algoritmul de stergere: similar algoritmului de stergere de la arbori binari de c autare; se realizeaz a n plus recolor ari si rotat ii pentru restabilirea propriet a tilor Complexitatea algoritmului de inserare/ stergere: O (logn) Utiliz ari: system symbol tables
Java: TreeMap, TreeSet; C++ STL: map, multimap, multiset

kernel Linux

Structuri de date

Curs 11

Ianuarie, 2014

15 / 32

Cont inut

Arbori bicolori

Arbori splay

Treaps

Alte exemple de arbori echilibrat i

Structuri de date

Curs 11

Ianuarie, 2014

16 / 32

Arbori Splay (Sleator and Tarjan, 1985)

Nu utilizeaz a spat iu de memorie suplimentar Mut a valorile accesate frecvent sus ( n r ad acin a) Cost amortizat pentru operat ii: O (logn) Costul pentru o singur a operat ie, n cazul cel mai nefavorabil: (n)

Structuri de date

Curs 11

Ianuarie, 2014

17 / 32

Arbori Splay

Operat ia splay (t , k ): mut ak n r ad acin a, utiliz and rotat ii


dac a k nu se g ase ste n arbore, atunci mut a succesorul sau predecesorul lui k pa si: caut a k , apoi urc a-l c atre r ad acin a utilizeaz a rotat ii st anga/dreapta simple/duble pentru a muta nodul c atre r ad acin a

Structuri de date

Curs 11

Ianuarie, 2014

18 / 32

Operat ia splay - Caz 1

Nodul curent nu are bunici

Structuri de date

Curs 11

Ianuarie, 2014

19 / 32

Operatia splay - Caz 2: zigzag(dreapta, st anga)


Nodul curent este u st ang, iar p arintele este u drept.

Structuri de date

Curs 11

Ianuarie, 2014

20 / 32

Operatia splay - Caz 3: zigzig(st anga, st anga)


Nodul curent este u st ang, iar parintele este u st ang.

Structuri de date

Curs 11

Ianuarie, 2014

21 / 32

Arbori splay
Operat iile de c autare/inserare/ stergere utilizeaz a operat ia splay cauta(t , k ): apeleaz a splay (t , k ); dac a k este r ad acina, atunci ntoarce k , altfel false insereaza(t , k ): insereaz a noua valoare ca n cazul arborilor binari de c autare, apoi apeleaz a splay (t , k ); sterge (t , k ): utilizeaz a metoda de stergere de la arbori binari de c autare, apoi apleleaz a operat ia splay pentru p arintele nodului sters Complexitatea medie a unei operat ii: O (logn), consider and o secvent a de operat ii (presupunem c a pornim cu un arbore vid, n este dimensiunea maxim a a arborelui)
Structuri de date Curs 11 Ianuarie, 2014 22 / 32

Arbori Splay

Implement arile mai rapide utilizeaz a versiunea top-down splay trees Utiliz ari: Windows NT (memorie virtual a, ret ea), compilatorul gcc, libr aria GNU C++, implementarea funct iei Unix malloc, etc.

Structuri de date

Curs 11

Ianuarie, 2014

23 / 32

Cont inut

Arbori bicolori

Arbori splay

Treaps

Alte exemple de arbori echilibrat i

Structuri de date

Curs 11

Ianuarie, 2014

24 / 32

Treaps

Seidel and Aragon, 1996 Arborii binari de c autare se comport a bine pe valori aleatoare, si nu la fel de bine pe cele particulare Treaps : structuri de date aleatoare
n loc s a permut am valorile aleator (nu putem!), permut am structura de date

Treaps : implementarea implicit a a unui dictionar n LEDA http://www.algorithmic-solutions.com/leda/

Structuri de date

Curs 11

Ianuarie, 2014

25 / 32

Treaps

Are structura unui arbore binar de c autare Proprietatea de ordine de la heap-uri


priorit a tile sunt asignate aleator

Structuri de date

Curs 11

Ianuarie, 2014

26 / 32

Treaps

Prin parcurgerea n inordine a arborelui vom obt ine cheile sortate Prioritatea ec arui nod este mai mare dec at a ilor Cheile si priorit a tile asociate determin a n mod unic forma unui treap
treap -ul este arborele binar obt inut prin inserarea cheilor n ordine descresc atoare a priorit a tilor

Ad ancimea medie a steptat a a oric arui nod este O (logn) Rotat iile st anga/dreapta simple p astreaz a invariantul arborilor de c autare si invariantul heap

Structuri de date

Curs 11

Ianuarie, 2014

27 / 32

Operat ia de inserare
Alege pentru prioritate o valoare aleatoare Insereaz a ca ntr-un arbore binar de c autare Aplic a rotat ii p an a se restabile ste ordinea heap

Complexitate: O (logn)
Structuri de date Curs 11 Ianuarie, 2014 28 / 32

Operat ia de stergere

Inversul operat iei de inserare Se aduce nodul n pozit ia unei frunze pentru a sters, utiliz and rotat ii
se alege ul cu prioritatea mai mic a si se rote ste

Complexitate: O (logn)

Structuri de date

Curs 11

Ianuarie, 2014

29 / 32

Alte operat ii
split : se mparte arborele n doi arbori treap, unul care s a cont in a cheile mai mici dec at o cheie dat a key , si cel alalt care s a cont in a cheile mai mari
se insereaz a un nod ajut ator x cu cheia key si prioritatea -innit dup a inserare, x va r ad acina arborelui (subarborii st ang si drept vor arborii c autat i) sterge x complexitate: O (logn)

join: se unesc doi arbori treap, unul care cont ine chei mai mici dec at o cheie dat a key , si cel alalt care cont ine chei mai mari
se creeaz a un arbore cu r ad acina key si prioritate aleatoare, care cont ine cei doi subarbori se sterge r ad acina complexitate: O (logn)

Structuri de date

Curs 11

Ianuarie, 2014

30 / 32

Cont inut

Arbori bicolori

Arbori splay

Treaps

Alte exemple de arbori echilibrat i

Structuri de date

Curs 11

Ianuarie, 2014

31 / 32

Alte exemple de arbori echilibrat i


arbori B (B-trees, Bayer and McCreight, 1972))
permit mai multe chei utilizat i n sisteme de siere si baze de date (ex: indexarea unei colect ii de date)
Windows: HPFS, Mac: HFS, Linux: XFS, JFS; baze de date: ORACLE, DB2, SQL, PostgresSQL;

2-3 arbori (Hopcroft, 1970)


o specializare a arborilor B ecare nod intern este de aritate 2 sau 3; un nod de aritate 2 memoreaz a o singur a valoare, iar un nod de aritate 3 memoreaz a dou a valori

2-3-4 arbori
ecare nod intern este de aritate 2, 3 sau 4

liste cu acces direct (skip lists, Pugh 1989)


permit c aut ari rapide pentru o list a ordonat a de elemente
Structuri de date Curs 11 Ianuarie, 2014 32 / 32

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