Documente Academic
Documente Profesional
Documente Cultură
Arbori Bicolori
Arbori Bicolori
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