Sunteți pe pagina 1din 36

rboles Equilibrados

Estructuras de Datos

MC Beatriz Beltrn Martnez


Primavera 2016
rboles y equilibrio

Primavera 2016
Objetivo:
Conseguir que la altura del rbol sea mnima.

FCC-BUAP
Estrategias:
rboles binarios equilibrados:

MC Beatriz Beltrn Martnez


Ej: rboles AVL
Estructuras autoajustables:
Despus de cada operacin se aplican reglas para
reestructurar el rbol.
Ej: Splay tree (rboles que se "separan").

114
rboles AVL

Primavera 2016
Es un rbol binario de bsqueda equilibrado.

FCC-BUAP
AVL: Adelson-Velskii & Landis (1962).
ABB + condiciones adicionales de equilibrio.

MC Beatriz Beltrn Martnez


La condicin debera de ser fcil de mantener.
Una primera aproximacin:
Exigir a los subrboles izquierdo y derecho la misma
altura.
Aplicar la condicin a todos los nodos.

115
rboles AVL

Primavera 2016
Primera aproximacin.
Pero es una condicin demasiado restrictiva:

FCC-BUAP
Difcil insertar elementos y mantener la condicin.
Otra aproximacin menos "exigente":

MC Beatriz Beltrn Martnez


rbol AVL: rbol binario de bsqueda con la
condicin adicional de que para cualquier nodo del
rbol, la diferencia izq/der es como mximo 1.
Definimos la altura del subrbol vaco como 1.

116
rboles AVL

Primavera 2016
Inconveniente: Modificaciones (insertar/borrar).
Pueden destruir el equilibrio de algunos nodos.

FCC-BUAP
Dificultad para mantener la condicin de equilibrio.

MC Beatriz Beltrn Martnez


Arbol 12 insertar(1) 12 insertar(13) 12
AVL

8 16 8 16 8 16

4 10 14 4 10 14 4 10 14

2 6 2 6 2 6 13

1 117
Insercin

Primavera 2016
Nodos a los que afecta la insercin:

FCC-BUAP
Nodos el camino entre la raz y el punto de insercin.
El resto no se ven afectados.

MC Beatriz Beltrn Martnez


Recorrer ese camino y garantizar el equilibrio.
Se reequilibra el ms profundo de los afectados.
Esta operacin reequilibra el rbol AVL.

118
Insercin

Primavera 2016
4 posibles situaciones que causan desequilibrio.
Desequilibrio causado por insercin en:

FCC-BUAP
...subrbol izquierdo del hijo izquierdo de A
...subrbol derecho del hijo izquierdo de A

MC Beatriz Beltrn Martnez


...subrbol izquierdo del hijo derecho de A
...subrbol derecho del hijo derecho de A
El equilibrio se restaura con una operacin:
Rotacin.

119
Insercin

Primavera 2016
1.- 2.- 3.- 4.-
A A A A

FCC-BUAP
MC Beatriz Beltrn Martnez
Casos 1 y 4: Desequilibrio "por el exterior"
Rotacin simple.
Casos 2 y 3: Desequilibrio "por el interior"
Rotacin doble.
120
Rotacin simple

Primavera 2016
Se consiguen subrboles con la misma altura.
ABB, AVL con diferencia de alturas = 0.

FCC-BUAP
El nuevo rbol tiene la altura del original.
Se ha reequilibrado completamente el rbol.

MC Beatriz Beltrn Martnez


NA NB

NB NA

H H

121
Rotacin doble

Primavera 2016
Rotacin simple: No funciona en los casos 2 y 3.
Q es demasiado profundo.

FCC-BUAP
Q al menos tiene una raz.
...y dos subrboles, vacos o con elementos.

MC Beatriz Beltrn Martnez


Rotacin simple aplicada al "caso 2"

NA NB

NB NA

122
Q Q
Rotacin doble

Primavera 2016
Se "eleva" el nodo Q como nueva raz.
El rbol vuelve a tener la altura original.

FCC-BUAP
Como antes de insertar.
Se reequilibra el rbol por completo.

MC Beatriz Beltrn Martnez


NA NA Q

NB NB NB NA

Q 123
Rotacin doble

Primavera 2016
Rotacin doble: Son dos rotaciones simples.
Rotar Q y NB.

FCC-BUAP
Rotar Q y NA.

MC Beatriz Beltrn Martnez


NA NA Q

NB NB NA
Q

Q NB

124
Algoritmo

Primavera 2016
Los nodos tienen un Factor de Balance (FB) que est
entre 1 y 1.

FCC-BUAP
FB = 0 alturas de subrboles iguales.
FB =1 subrbol derecho ms grande que izquierdo.

MC Beatriz Beltrn Martnez


FB = -1 subrbol izquierdo ms grande que derecho
Para realizar la insercin, se realiza igual que en un rbol
binario y despus se verifica el balanceo.

125
Algoritmo

Primavera 2016
El mejor de los casos es que la insercin no realiza un

FCC-BUAP
desbalanceo, slo hay que actualizar los FB de todos los
ancestros.

MC Beatriz Beltrn Martnez


El otro caso es cuando hay que rebalancear, y se basa en
un nodo pivote que es aquel que tiene un FB distinto de
cero y es el ms cercano de los ancestros del nodo recin
insertado.

126
Algoritmo

Primavera 2016
1. Inserte el nodo.
2. Busque el nodo pivote. Coloque los apuntadores P1,
P2, P3 y P4 donde:

FCC-BUAP
P1 = apuntador al nodo padre del nodo pivote.
P2 = apuntador al nodo pivote.

MC Beatriz Beltrn Martnez


P3 = apuntador al nodo hijo del nodo pivote, que
es la raz del subrbol ms grande.
P4 = apuntador al nodo hijo del nodo apuntado
por P3, que sigue en la ruta de bsqueda del
nuevo nodo.
3. Si no existe el nodo pivote, entonces modificar FB de
todos los ancestros.
127
Algoritmo

Primavera 2016
Si el nuevo nodo se insert en el subrbol ms
pequeo, modificar los FB desde el pivote hasta el

FCC-BUAP
nuevo.
Si no, verificar el tipo de rotacin.

MC Beatriz Beltrn Martnez


Si es rotacin simple: Modificar apuntadores y FB
(rutina rotacin simple)
Si no, modificar apuntadores y FB (rutina rotacin
doble)
4. Fin

128
Algoritmo

Primavera 2016
Rotacin Simple.
1. Si P1 no apunta a vaco

FCC-BUAP
Si la informacin del nuevo nodo es menor que la
informacin apuntada por P1.

MC Beatriz Beltrn Martnez


Hijo izquierdo de P1 = P3
Si no
Hijo derecho de P1 = P3
Si no
P3 es la nueva raz del rbol.
129
Algoritmo

Primavera 2016
2. Si la informacin del nuevo nodo es menor que la
informacin apuntada por P2
Hijo izquierdo de P2 = hijo derecho de P3

FCC-BUAP
Hijo derecho de P3 = P2
Modificar el FB desde el hijo izquierdo de P3

MC Beatriz Beltrn Martnez


hasta el padre del nuevo nodo
Si no
Hijo derecho de P2 = hijo izquierdo de P3
Hijo izquierdo de P3 = P2
Modificar el FB desde el hijo derecho de P3 hasta
el padre del nuevo nodo
3. El FB del nodo sealado por P2 = 0
130
Algoritmo

Primavera 2016
Rotacin doble
1. Si P1 no apunta a vaco

FCC-BUAP
Si la informacin del nuevo nodo es menor que la
informacin apuntada por P1.

MC Beatriz Beltrn Martnez


Hijo izquierdo de P1 = P4
Si no
Hijo derecho de P1 = P4
Si no
P4 es la nueva raz del rbol.
131
Algoritmo

Primavera 2016
2. Si la informacin del nuevo nodo es menor que la
informacin apuntada por P2

FCC-BUAP
Hijo derecho de P3 = hijo izquierdo de P4
Hijo izquierdo de P2 = hijo derecho de P4

MC Beatriz Beltrn Martnez


Hijo izquierdo de P4 = P3
Hijo derecho de P4 = P2. Seguir en 3.
Si no
Hijo izquierdo de P3 = hijo derecho de P4
Hijo derecho de P2 = hijo izquierdo de P4
Hijo derecho de P4 = P3
Hijo izquierdo de P4 = P2. Seguir en 4.
132
Algoritmo

Primavera 2016
3. Si la informacin del nuevo nodo es menor que la
informacin de P4:

FCC-BUAP
Modificar FB desde el hijo derecho de P3 hasta le
padre del nuevo nodo.

MC Beatriz Beltrn Martnez


Modificar FB del nodo sealado por P2 (vale +1)
Si no
Si la informacin del nuevo nodo es mayor a la
informacin de P4:
Modificar FB desde el hijo izquierdo de P2 hasta
el padre del nuevo nodo.
Modificar FB del nodo sealado por P3 (vale -1)
Modificar FB del nodo sealado por P2 (vale 0).
133
Algoritmo

Primavera 2016
4. Si la informacin del nuevo nodo es mayor que la
informacin de P4:
Modificar FB desde el hijo izquierdo de P3 hasta le

FCC-BUAP
padre del nuevo nodo.
Modificar FB del nodo sealado por P2 (vale -1)

MC Beatriz Beltrn Martnez


Si no
Si la informacin del nuevo nodo es menor que la
informacin de P4:
Modificar FB desde el hijo derecho de P2 hasta el
padre del nuevo nodo.
Modificar FB del nodo sealado por P3 (vale +1)
Modificar FB del nodo sealado por P2 (vale 0)
134
Inconvenientes

Primavera 2016
Insercin de un elemento en rbol AVL

FCC-BUAP
Se inserta en un subrbol
Si no cambia la altura: OK

MC Beatriz Beltrn Martnez


Si aparece algn desequilibrio:
Solucionar con rotaciones
Problema:
Clculo de alturas. Recalcular cuando se necesitan?
Almacenar en los nodos y mantener actualizada?

135
Otros rboles equilibrados

Primavera 2016
Otros esquemas de rboles equilibrados:
Splay Trees

FCC-BUAP
Red-Black Trees
AA-Trees
B-Trees

MC Beatriz Beltrn Martnez


rboles-B (Bayer, 1970)
Interesantes para manejo de datos en disco.
Problema comn:
Reorganizacin del rbol tras insertar/eliminar

136
rboles B
Estructuras de Datos

MC Beatriz Beltrn Martnez


Primavera 2016
rboles-B

Primavera 2016
Optimizados para manejo de datos en disco
Objetivo:

FCC-BUAP
Minimizar el nmero de accesos a disco
rbol-B de orden N: rbol N-ario

MC Beatriz Beltrn Martnez


Es un rbol equilibrado
Con N claves en cada nodo
Coste de acceso (profundidad): logN N

138
Propiedades

Primavera 2016
Aunque hay muchas variantes:
Cada pgina contiene a lo sumo 2N elementos

FCC-BUAP
(llaves).
Cada pgina, excepto la de la raz, contiene N

MC Beatriz Beltrn Martnez


elementos por lo menos.
Cada pgina es una pgina de hoja, o sea que no
tiene descendientes o tiene M+1 descendientes,
donde M es el nmero de llaves en esa pgina.
Todas las pginas de hoja aparecen al mismo nivel.

139
rboles-B

Primavera 2016
Insercin:
Aadir el dato a su hoja. Reorganizar la hoja.
Si se llena la hoja:

FCC-BUAP
Dos hojas con L/2 elementos. Actualizar el
padre

MC Beatriz Beltrn Martnez


Si se llena el padre:
Partir en dos; actualizar nodo superior
Puede exigir una propagacin hasta la raz.
Borrado
Fusin de hojas si no alcanza el mnimo de
elementos.
El padre pierde hijos. Eliminacin de nodos... 140
Ejemplo

Primavera 2016
rbol de orden 2 con 3 niveles.

FCC-BUAP
MC Beatriz Beltrn Martnez
25

10 20 30 40

2 5 7 8 13 14 15 18 22 24 26 27 28 32 35 38 41 42 45 46

141
Insercin

Primavera 2016
La insercin en un rbol B es relativamente sencilla.

FCC-BUAP
Si hay que insertar un elemento en una pgina con
M<2N elementos, el proceso de insercin queda

MC Beatriz Beltrn Martnez


limitado a esa pgina.
En una pgina llena, se debe realizar la asignacin
de pginas nuevas.
En casos extremos, la propagacin se lleva a la raz,
por lo tanto es cuando el rbol B puede crecer.

142
Insercin

Primavera 2016
20 30

FCC-BUAP
20
Insertar llave 22

MC Beatriz Beltrn Martnez


7 10 15 18 26 30 35 40 7 10 15 18 22 26 35 40

20 30
Insertar llave 51

7 10 15 18 22 26 35 40 51 143
Insercin

Primavera 2016
Los rboles B:

FCC-BUAP
Crecen de las hojas hacia la raz.
Son recursivos.

MC Beatriz Beltrn Martnez


La bsqueda de elementos se realiza como en rboles
binario, solo hay que modificar la bsqueda sobre un
arreglo.
Son balanceados.
Cada pgina tiene entre N y 2N elementos.
144
Eliminacin

Primavera 2016
La eliminacin de elementos en un rbol B es en
teora sencilla, pero se complica en sus detalles. Se
pueden distinguir dos circunstancias:

FCC-BUAP
1. El elemento que debe suprimirse se halla en una
pgina de hoja, entonces el algoritmos de

MC Beatriz Beltrn Martnez


eliminacin es sencillo.
2. El elemento no se encuentra en una pgina de
hoja; hay que sustituirlo por uno de los dos
elementos lexicogrficamente contiguos, que
resultan estar en las pginas de hojas.

145
Eliminacin

Primavera 2016
25

FCC-BUAP
10 20 30 40

MC Beatriz Beltrn Martnez


5 7 8 13 15 18 21 22 24 26 27 32 35 38 42 45 46

Eliminar la llave 25
24

10 20 30 40

5 7 8 13 15 18 21 22 26 27 32 35 38 42 45 46 146
Eliminacin

Primavera 2016
Eliminar la llave 45
24

FCC-BUAP
10 20 30 40

MC Beatriz Beltrn Martnez


5 7 8 13 15 18 21 22 26 27 32 35 38 42 46

Eliminar la llave 24

10 20 30 40

5 7 8 13 15 18 21 22 26 27 32 35 38 42 46
147
Eliminacin

Primavera 2016
Eliminar las llaves 32 y 38

FCC-BUAP
10 20 30

MC Beatriz Beltrn Martnez


5 7 8 13 15 18 21 22 26 27 35 40 42 46

Eliminar las llaves 21, 8 y 46

10 20 30

5 7 13 15 18 22 26 27 35 40 42
148