Sunteți pe pagina 1din 96

ARBORI BICOLORI

l. Dr. Ing. erban Radu


Departamentul de Calculatoare
Facultatea de Automatic i Calculatoare
Introducere


Arborii binari de cutare obinuii prezint
un dezavantaj major


Performanele lor sunt bune dac datele
sunt inserate n ordine aleatoare


Dac ns datele sunt inserate n ordine
cresctoare sau descresctoare, aceste
performane se degradeaz
Introducere


Atunci cnd valorile inserate sunt deja
ordonate (sau aproape ordonate), arborele
rezultat este neechilibrat


Arborii neechilibrai i pierd capabilitatea
de cutare (sau inserare sau tergere)
rapid a unui element
Arbori bicolori


Arborii bicolori sunt arbori binari de
cutare cu anumite proprieti n plus


Utilizarea arborilor bicolori reprezint, n
majoritatea cazurilor, cea mai eficient
soluie de echilibrare, cel puin n cazul n
care datele sunt pstrate n memorie
Operaii cu arbori bicolori


Cutarea ntr-un arbore bicolor
funcioneaz la fel ca ntr-un arbore binar


Inserarea i tergerea se modific
semnificativ
Inserarea de sus n jos


Inserarea n arborii bicolori se numete
inserare de sus n jos (top-down)


Arborele va suferi modificri structurale
atunci cnd algoritmul l parcurge de sus
n jos, pentru a gasi locul n care va insera
un nod
Inserarea de jos n sus


O alt posibilitate este inserarea de jos n
sus (bottom-up)


Aceasta presupune gsirea locului n care
se va insera nodul i efectuarea ulterioar
a unor modificri structurale n arbore


Inserarea de jos n sus este mai puin
eficient, deoarece presupune dou
parcurgeri ale arborelui
Observaii


Un arbore fr ramuri degenereaz ntr-o
list nlanuit


Ca i n cazul unei liste nlnuite, trebuie
s parcurgem, in medie, jumtate din
numrul total de elemente, pentru a gasi
un anume element
Observaii


Cutarea printr-un astfel de arbore, cu
10.000 de elemente, va necesita 5.000 de
comparaii, n timp ce, pentru un arbore
echilibrat, numrul de comparaii este cel
mult 14


Pentru date deja sortate, este indiferent
dac folosim un arbore binar de cutare
sau o list nlnuit
Observaii


Datele parial sortate vor genera arbori
parial dezechilibrai


Dei nu au performane att de sczute ca
arborii cu grad maxim de dezechilibru,
arborii parial dezechilibrai nu reprezint o
soluie optim n ceea ce privete
cutarea
Echilibrarea arborilor


Fiecare nod din arbore trebuie s aib un
numr aproximativ egal de descendeni,
att n partea stng, ct i n partea
dreapt


ntr-un arbore bicolor, echilibrarea este
asigurat prin implementarea operaiei de
inserare
Operaia de inserare


La inserarea unui element, funcia care
efectueaz operaia verific dac se
menin anumite caracteristici ale arborelui


n caz contrar, funcia modific structura
arborelui


Prin meninerea acestor caracteristici, se
pstreaz starea de echilibrare a arborelui
Caracteristicile arborilor bicolori


1. Nodurile sunt colorate, fiecare nod este
fie negru, fie rou


2. Pe parcursul inserrii i tergerii, se
asigur pstrarea unor aranjamente
prestabilite ale acestor culori
Reguli de colorare


La inserarea (sau la tergerea) unui nod,
trebuie respectate anumite reguli, numite
reguli de colorare


Respectarea acestor reguli asigur
echilibrarea arborelui
Reguli de colorare


1. Fiecare nod este rou sau negru


2. Rdcina are ntotdeauna culoarea
neagr


3. Dac un nod este rou, fiii si trebuie s
fie negri (reciproca nu este neaprat
adevrat)


4. Toate cile de la rdcin spre frunze,
sau spre fiii inexisteni, trebuie s conin
un numr egal de noduri negre
Observaii


Fiul inexistent din ultima regul este de
fapt un loc n care se poate ataa un fiu
unui nod care nu este frunz


Acesta este un potenial fiu stng al unui
nod cu un fiu drept, sau invers, un
potenial fiu drept al unui nod cu un fiu
stng
Observaii


Numrul nodurilor negre de pe calea
dintre rdcin i o anumit frunz se
numete nlime neagr


Ultima regul mai poate fi enunat astfel:


4. Inlimea neagr trebuie s fie
constant pentru toate cile de la rdcin
spre frunze
Fii inexisteni


Un fiu inexistent este un posibil fiu al unui
nod care nu este frunz


Acest fiu nu exist ns n arbore
Observaii


Calea de la rdcin pn la fiul drept al
lui 25 (inexistent) are numai un singur nod
negru, spre deosebire de cile spre
nodurile 6 sau 75, care au dou astfel de
noduri


Acest arbore nu respect regula 4, dei
ambele ci spre nodurile frunz au acelai
numr de noduri negre
Rotaii


Pentru a echilibra un arbore, este necesar
s efectum o rearanjare fizic a nodurilor


Dac toate nodurile sunt la stnga
rdcinii, trebuie s deplasm unele dintre
ele n partea dreapt


Aceast deplasare se efectueaz utiliznd
rotaii
Rotaii


Rotaiile reprezint modaliti de rearanjare a
nodurilor


Acestea se folosesc pentru a rezolva dou
probleme:


1. Ridicarea unora dintre noduri i coborrea
altora, pentru a echilibra arborele


2. Asigurarea respectrii ordinii caracteristice
arborilor binari de cutare
Observaii


Regulile de colorare i modificrile
culorilor se utilizeaz pentru a se putea
decide cnd se execut o rotaie


ntr-o rotaie, nodurile nu efectueaz rotaii
propriu-zise, ci doar relaiile dintre ele se
modific
Observaii


Unul dintre noduri este ales ca vrf

al
rotaiei


Dac efectum o rotaie spre dreapta,
acest vrf

se va deplasa n jos i spre
dreapta, n poziia fiului su drept


Fiul stng al nodului din vrf se va deplasa
n sus, lund locul printelui su
Observaii


Nodul din vrf nu reprezint centrul

rotaiei


Orice nod poate fi vrful unei rotaii, dac
dispune de fiul necesar


Dac se efectueaz o rotaie spre dreapta,
nodul din vrf trebuie s aib un fiu stng


Dac se efectueaz o rotaie spre stnga,
nodul din vrf trebuie s aib un fiu drept
Un nod care traverseaz


n urma rotaiei la dreapta, toate nodurile
se vor deplasa


Nodul 12 urmeaz deplasarea lui 25 n
sus, iar fosta rdcin 50 urmeaz
deplasarea lui 75 in jos


Nodul 37 s-a desprins de 25, al carui fiu
drept era, devenind fiul stng al lui 50
Observaii


Unele dintre noduri se deplaseaz n sus,
altele n jos, dar 37 a traversat arborele


Rotaia a produs o nclcare a regulii 4,
care va fi rezolvat mai trziu


n poziia iniial, 37 se numete un nepot
interior

al nodului din vrf, 50, iar 12 este
un nepot exterior
Observaii


Nepotul interior, dac este fiul nodului care
s-a deplasat n sus (fiul stng al nodului
din vrf, n cazul unui rotaii la dreapta), va
fi ntotdeauna deconectat de la printele
su i reconectat cu fostul su bunic
Subarbori n micare


n urma unei rotaii, anumite noduri i
modific poziia


Se pot deplasa ns sub arbori ntregi
Exemplu


ntr-o rotaie la dreapta, avnd ca vrf
rdcina 50, se observ c mai multe
noduri s-au deplasat simultan


Nodul din vrf (50) i va nlocui fiul drept


Fiul stng (25) al nodului din vrf i
nlocuiete fostul printe


ntregul subarbore cu rdcina 12 se
deplaseaz n sus
Exemplu


ntregul subarbore cu rdcina 37
traverseaz arborele, devenind fiul stng al
lui 50


Subarborele cu rdcina 75 se deplaseaz
n jos


Poziiile relative ale nodurilor din acelai
subarbore nu sunt afectate de rotaie


ntregul subarbore se deplaseaz solidar
Notaii


Utilizm literele X, P i G pentru a nota o
secven de noduri nrudite


X reprezint un nod care a produs o
nclcare a regulilor de colorare


Uneori, X se refer la un nod nou inserat,
iar alteori la un fiu, n cazul n care att
printele, ct i fiul sunt de culoare roie
Notaii


X este un anumit nod


P este printele lui X


G este bunicul lui X (adic printele lui P)


Cnd se parcurge arborele n jos pentru a
gsi locul de inserare, se efectueaz o
inversare a culorilor, oriunde se ntlnete
un printe negru cu doi fii roii (ceea ce
ncalc regula 2)
Observaii


Aceast inversare provoac uneori un
conflict rou-rou (se ncalc regula 2)


Dac X este fiul rou i P printele rou,
conflictul se poare rezolva apelnd la o
rotaie simpl sau dubl, dup cum X este
nepotul exterior sau interior al lui G


Efectund inversri de culoare i rotaii, se
ajunge la punctul de inserare i se
insereaz nodul
Observaii


Dup inserarea noului nod X, dac P este
negru, pur i simplu i atam un fiu rou


Dac P este rou, avem dou posibiliti,
dup cum X este nepotul exterior sau
interior al lui G


Se efectueaz dou schimbri de culoare
Observaii


Dac X este nepot exterior, se efectueaz
o singur rotaie


Dac X este nepot interior, se efectueaz
dou rotaii


n urma acestor operaii, arborele se va
reechilibra
Inversri de culoare la parcurgerea
descendent a arborelui


Metoda de inserare ntr-un arbore bicolor
ncepe prin a efectua ceea ce se face i n
cazul unui arbore de cutare
parcurgerea drumului de la rdcin pn
la locul n care trebuie inserat nodul,
deplasdu-se la stnga sau la dreapta, n
funcie de comparaia dintre valoarea
inserat i cheia nodului curent
Inversri de culoare


ntr-un arbore bicolor, gsirea locului de
inserare se complic cu efectuarea unor
inversiuni de culoare i a unor rotaii


La fiecare ntnire a unui nod negru cu doi fii
roii, culoarea fiilor trebuie s devin neagr,
iar a printelui roie (exceptnd cazul n care
printele este nodul rdcin, care rmne
ntotdeauna negru)
Notaii


Se noteaz nodul din vrful triunghiului,
care este negru, nainte de inversiune cu P


Fie X1 i X2 fiul stng, respectiv fiul drept
al lui P


Inversiunea nu modific numrul de noduri
negre de pe cile de la rdcin spre
frunze (sau fii inexisteni) i care trec prin P
Observaii


Toate aceste ci trec prin P i apoi prin X1
i X2


nainte de inversarea culorilor, doar P este
negru, deci triunghiul (constnd din
nodurile P, X1 i X2) adaug un singur
nod negru acestor ci
Observaii


Dup inversarea culorilor, P nu mai este
negru, dar ambii si fii sunt, deci triunghiul
contribuie tot cu un singur nod negru la
fiecare din cile care l parcurg


Prin urmare, inversarea culorilor nu
conduce la nclcarea regulii 4
Observaii


Inversarea culorilor este util, deoarece
poate transforma frunzele roii n frunze
negre


Astfel, va fi mai uor s atam noi noduri
roii, fr a nclca regula 3
Observaii


Dei nu ncalc regula 4, inversarea culorilor
poate duce la eludarea regulii 3


Dac printele lui P este negru, nu se
ntmpl nimic atunci cnd P va deveni rou


Dac ns printele lui P este rou, dup
inversarea culorilor vor aprea dou noduri
roii adiacente
Noduri roii adiacente


Situaia trebuie rezolvat nainte de a
continua parcurgerea arborelui, pentru a
determina locul de inserare


Soluia este efectuarea unei rotaii


Dup ce s-a gsit locul potrivit din arbore,
efectund (dac este cazul) inversri de
culori i rotaii pe parcurs, se poate insera
noul nod la fel ca ntr-un arbore de cutare
Rotaii dup inserarea nodului


Inserarea unui nod poate conduce la
nclcarea regulilor de colorare


Dup inserare, trebuie s verificm apariia
unor abateri de la reguli, pe care (dac
exist) s le corectm


Noul nod inserat, X, este ntotdeauna rou


X poate fi poziionat n mai multe moduri, n
raport cu P i G
Observaii


X este un nepot exterior, dac este situat fa
de printele su P n aceeai parte n care
acesta este situat n raport cu printele su G


X este nepot exterior pentru G, dac:
X este fiu stng al lui P i P este fiu stng al lui G
X este fiu drept al lui P i P este fiu drept al lui G


X este nepot interior al lui G, dac este situat
de partea opus a lui P, fa de cum este P
situat n raport cu printele su G
Observaii


Dac X este un nepot exterior, poate fi fiul
stng sau drept al lui P, dup cum P este
la rndul su fiu stng sau drept al lui G


Exist dou situaii similare n care X este
nepot interior al lui G
3 moduri de dispunere a nodurilor


Situaiile posibile dup inserare:


1. P este negru


2. P este rou i X este un nepot exterior
al lui G


3. P este rou i X este un nepot interior al
lui G
Cazul 1

P este negru


Nodul nou inserat este ntotdeauna rou


Dac printele este negru, nu apare un
conflict de culoare (regula 3) i nicio
cretere unilateral a numrului de noduri
negre (regula 4)


Regulile de colorare sunt respectate


Inserarea este efectuat cu succes
Cazul 2

P este rou i X este
exterior


Sunt suficiente o rotaie i cteva
modificri ale culorilor


Se poate reface corectitudinea de colorare
(echilibrul arborelui) n 3 pai
3 pai


1. Se modific culoarea bunicului G (25) al
lui X (6)


2. Se modific culoarea printelui P (12) al
lui X (6)


3. Se efectueaz o rotaie cu nodul G (25)
n vrf, n direcia care asigur ridicarea lui
X (6) n arbore


n exemplu, rotaia se va efectua spre
dreapta
Cazul 3

P este rou i X este
interior


Avem nevoie de dou rotaii i o

modificare

a culorii

unui

nod
Pai pentru echilibrarea arborelui


1. Se efectueaz o rotaie cu printele P
(12) situat n vrf, n direcia care asigur
ridicarea lui X (spre stnga, n acest caz)


2. Se efectueaz nc o rotaie, cu bunicul
G (25) situat n vrf, in direcia care
asigur ridicarea lui X (18) (spre dreapta)


3. Se modific culoarea lui P (12)

care
este rou i devine negru
Observaii


Secvena de operaii aduce arborele ntr-o
configuraie n care respect regulile de
colorare i l reechilibreaz


Exist un caz simetric n care P este fiul
drept al lui G
Observaii


Utilizarea inversrii culorilor, la parcurgerea
descendent, elimin situaiile n care o
rotaie poate propaga nclcri ale regulilor
de colorare mai sus n arbore


Operaia asigur c una sau dou rotaii sunt
suficiente pentru a restabili corectitudinea
ntregului arbore
Observaii


Datorit inversrii culorilor, inserrile n
arborii bicolori sunt mult mai eficiente
dect n alte tipuri de arbori echilibrai,
cum sunt arborii AVL


Inversrile asigur suficiena unei singure
parcurgeri descendente a arborelui
Rotaii la parcurgerea descendent


Inversarea culorilor poate produce o
nclcare a regulii 3 (un nod fiu i printele
su nu pot fi amndoi de culoare roie)


Aceast problem se poate rezolva prin
efectuarea unei rotaii


Exist dou posibiliti

nodul implicat
poate fi un nepot exterior sau interior
Nepot exterior


Nod implicat fiul din perechea printe
fiu, care a provocat conflictul de colorare


Metoda utilizat pentru a rezolva aceast
situaie este similar cu operaia efectuat
dup inserarea unui nepot exterior


Trebuie s efectum dou modificri de
culori i o rotaie
Observaii


Printele lui X (12) este nodul P (25), iar
bunicul lui X este G (50)


1. Se modific culoarea bunicului G


2. Se modific culoarea printelui P


3. Se rotete arborele, cu bunicul lui X n
vrf, n direcia care asigur ridicarea lui X
(spre dreapta)
Observaii


Nodul cu valoarea 3 poate fi inserat acum
n mod obinuit


Din cauz c printele su, 6, este negru,
inserarea se efectueaz imediat
Nepot interior


Dac nodul X, care produce un conflict de
culoare la parcurgerea descendent a
arborelui, este un nepot interior, vor fi
necesare dou rotaii pentru restabilirea
regulilor n arbore


Situaia este asemntoare cu operaia
efectuat dup inserarea unui nepot
interior
Rezolvarea conflictului de culoare


1. Se modific culoarea lui G (50)


2. Se modific culoarea lui X (37)


3. Se rotete subarborele cu P (25) n vrf,
n direcia care asigur ridicarea lui X n
arbore (spre stnga)


4. Se rotete arborele cu G n vrf, n
direcia care asigur ridicarea lui X (spre
dreapta)
Observaii


Acum se poate insera nodul 28


Culorile nodurilor 25 i 50 se vor inversa,
cele dou noduri devenind negre
Eficiena arborilor bicolori


Ca i arborii binari de cutare, arborii
bicolori permit efectuarea operaiilor de
cutare, inserare i tergere, ntr-un timp
de O(log
2

N)


Pentru fiecare nod, este necesar mai
mult memorie, pentru a memora i
culoarea
Eficiena arborilor bicolori


Timpii necesari pentru inserare i tergere
cresc cu o valoare constant, necesar
efecturii inversrii culorilor i rotaiilor la
parcurgere i la locul inserrii (tergerii)


n medie, inserarea presupune efectuarea
unei rotaii


Inserarea se efectueaz ntr-un timp de
O(log
2

N), dar este puin mai lent dect
pentru un arbore binar de cutare
Implementarea inserrii


Se adaug un cmp care s descrie
culoarea


Pe calea descendent ctre locul de
inserare, se verific dac nodul curent este
negru, iar cei doi fii ai si sunt amndoi roii


Dac este astfel, se modific culorile celor
trei noduri (cu excepia cazului n care
printele este chiar rdcina, care trebuie
meninut neagr)
Implementarea inserrii


Dup o inversare a culorilor, se verific
dac nu se ncalc regula 3


n acest caz, se execut rotaiile
corespunztoare: una pentru un nepot
exterior, dou pentru un nepot interior


Cnd se ajunge la un nod frunz, se
insereaz nodul nou, cu meniunea c
acesta trebuie s fie rou
Implementarea inserrii


Se verific nc o dat prezena
conflictelor de culoare, executnd rotaiile
necesare


Dac se execut corect inversrile de
culori i rotaiile, nlimile negre ale
nodurilor se vor conserva, iar arborele va
rmne echilibrat
Arbori AVL


Arborii AVL

(Adelson-Velskii i Landis)
reprezint primul tip de arbori echilibrai,
descoperii n 1962


ntr-un arbore AVL, fiecare nod
memoreaz o alt informaie suplimentar:
diferena dintre nlimea subarborelui su
stng i cea a subarborelui drept


Diferena nu trebuie s depeasc 1
Arbori AVL


Dup inserare, se verific rdcina
subarborelui aflat cel mai jos i n care s-a
inserat noul nod


Dac diferena dintre nlimile celor doi fii
este mai mare dect 1, se execut o
rotaie simpl sau dubl, pentru a egaliza
cele dou nlimi
Arbori AVL


Algoritmul se deplaseaz apoi cu un nivel
mai sus n arbore, egaliznd din nou
nlimile subarborilor, dac este cazul


Acest proces continu pn la atingerea
rdcinii arborelui
Arbori AVL


Timpul de cutare este de ordinul O(log
2

N),
deoarece echilibrarea arborelui este garantat


Pentru inserare sau tergere, este necesar
efectuarea a dou parcurgeri: una
descendent, pentru determinarea locului de
inserare, i una ascendent, pentru
reechilibrare


De aceea, arborii AVL sunt mai puin eficieni
dect arborii bicolori
Arbori multici


Un arbore multici este un arbore
echilibrat, n care fiecare nod poate avea
mai mult de doi fii


Un dezavantaj al acestor arbori este c
fiecare nod ocup mai mult memorie
dect la arborii binari, deoarece trebuie s
memoreze cte un pointer ctre fiecare
din fiii si
Concluzii


Meninerea echilibrrii unui arbore binar
asigur efectuarea operaiei de cutare a
unui nod din arbore ntr-un timp minim


Inserarea unor date deja sortate va genera
un arbore cu un grad de dezechilibru
maxim, n care cutarea se va efectua
ntr-un timp O(N)
Concluzii


Modurile permise, n care pot fi dispuse
nodurile dintr-un arbore bicolor, sunt
specificate prin reguli de colorare


Aceste reguli se aplic pentru operaiile de
inserare i tergere a unui nod


O inversare de culori schimb un nod
negru cu doi fii roii, ntr-un nod rou, cu
doi fii negri
Concluzii


ntr-o rotaie, un nod este desemnat ca nod
din vrf


O rotaie spre dreapta deplaseaz nodul din
vrf n locul fiului su drept, iar fiul stng al
nodului din vrf, n locul printelui su


O rotaie spre stnga deplaseaz nodul din
vrf n locul fiului su stng, iar fiul drept al
nodului din vrf, n locul printelui su
Concluzii


Inversrile de culori i, n unele cazuri,
rotaiile, se utilizeaz la parcurgerea
descendent a arborelui, pentru cutarea
locului de inserare


Aceste inversri simplific restabilirea
corectitudinii la colorare a arborelui, dup
efectuarea inserrii
Concluzii


Dup inserarea unui nod, se verific din
nou conflictele de culoare


Dac se detecteaz o nclcare, se
execut rotaiile corespunztoare pentru
asigurarea corectitudinii arborelui


n urma acestor operaii, arborele devine
echilibrat, sau cel puin aproape echilibrat
Concluzii


Adugarea informaiei necesare echilibrrii
ntr-un arbore are un impact negativ minor
asupra performanelor medii, evitnd n
schimb degradarea acestora, n cazul
defavorabil n care datele sunt iniial
sortate

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