Está en la página 1de 18

Arboles B

Estructuras de Datos y algoritmos


EPIS UNSA
M.Sc. Carlo Corrales

Concepto
! Estructura

que mantiene los datos


ordenados, permitiendo bsquedas,
accesos secuenciales, inserciones y
eliminaciones en tiempo logartmico
amortizado.
! Generalizacin del rbol binario por la cual
ms de 2 caminos divergen desde un nodo.
! Es optimizado para sistemas que leen y
escriben grandes bloques de datos
! Comnmente usado en bases de datos y
sistemas de archivos

Descripcin general
! Los

nodos internos (no hojas) pueden tener


un nro variable de hijos dentro de un rango
predefinido. Para mantener el rango, los
nodos internos pueden juntarse o dividirse.
No necesita rebalanceo tan frecuentemente
como otros.
! Estos nodos internos tienen un nro de
llaves entre d y 2d. Insertar un elemento a
un nodo interno con 2d elementos produce
una divisin en dos nodos de d y d cada
uno. Similarmente...

Descripcin general
! El

nro de nodos hijos de un nodo es 1 + nro


llaves
! Se mantiene balanceado obligando a que
todas las hojas estn a la misma
profundidad
! Una sustancial ventaja es cuando el tiempo
de acceso a los nodos excede al tiempo de
acceso dentro de un nodo. Esto pasa
cuando los nodos estn en
almacenamiento secundario.

Variaciones
! B+

tree: copias de la llave son


almacenadas en los nodos internos. Las
llaves y registros son almacenados en las
hojas. Adems un nodo hoja puede incluir
un puntero al siguiente nodo hoja para
acelerar el acceso.
! B* tree: balancea nodos internos vecinos
para mantener a los nodos internos ms
densamente empaquetados (retraza la
divisin y la junta) En un Btree un nodo
interno debe estar por lo menos 1/2 lleno,
en un B*tree estar 2/3 partes lleno.

Tiempo de bsquedas
! Un

rbol binario toma O(log2 N), osea en 1


milln de datos tomar max 20
comparaciones.
! Las grandes BD se mantienen en disco. El
tiempo para leer un registro domina sobre
el tiempo de comparacin entre llaves.
0-20 milisegs lectura y 8 milisegs rotacin
cabezales 0.2 seg: tiempo para ubicar
un registro.
! Una vez que la cabecera del disco est en
posicin, uno o ms bloques de disco
pueden ser ledos.

Tiempo de bsquedas
! Si

agregamos ndices de rboles B, el tiempo


cae en el O(logb N) donde b es el nro de
entradas por bloque. Si b=100, para 1 milln de
registros, se necesitan solo 3 lecturas.
! Inserciones y eliminaciones pueden causar
problemas
! Btrees usan todas estas ideas: mantienen los
regs ordenados para bsquedas secuenciales,
usa ndices jerrquicos para minimizar el nro de
lecturas en disco, usa bloques parcialmente
llenos para acelerar inserciones y eliminaciones
y minimiza desperdicio asegurando de cada
bloque lleno.

Definicin de Btrees
! Un

Btree de rden m (mx nro de hijos por


nodo) satisface:

!
!
!
!
!
!

Cada nodo tiene mximo m hijos


Cada nodo (excepto la raz) tiene por lo menos m/2
hijos
La raz tiene por lo menos 2 hijos si no es hoja
Todas las hojas estn en el mismo nivel y
contienen informacin
Un nodo no-hoja con k hijos contiene k-1 llaves
Cada elemento de los nodos internos acta como
valor de separacin, el cual divide sus subrboles.

Mejor y peor caso (altura)


! El

mejor caso:

logm n
! El

peor caso:

log m/2 n
! m

es el nro mximo de hijos por cada nodo.

Algoritmos: Bsqueda
!
!

Similar que rboles binarios.


Empezamos en la raz, el rbol es recursivo
de arriba hacia abajo. En cada nivel el
puntero al hijo cuyos valores de separacin
estn rodeando al valor buscado.
Bsqueda binaria es usada para datos dentro
de un nodo

Algoritmos: Insercin

!
!

Todas las inserciones se inician en un nodo


hoja.
Para insertar un nuevo elemento se busca un
nodo hoja donde el elemento debe ser aadido.
Se inserta el nuevo elemento siguiendo los
siguientes pasos
Si el nodo contiene menos del mximo nro de
elems, entonces la insercin se hace en la
posicin correcta
Si el nodo est lleno, entonces se divide en 2,
obteniendo el valor medio y separando los
valores menores hacia un nodo y mayores
hacia el otro; elevando el vm e insertndolo en
el nodo padre recursivamente. Si no tiene
padre, crear nueva raz.

Algoritmos: Eliminacin
!
!
!

!
!
!

Existen 2 estrategias:
Ubicar y eliminar el tem, luego reestructurar el rbol
Hacer un paso por el rbol pero antes de visitar un
nodo, reestructurar el rbol, as una vez que la llave
a eliminar es hallada, sta puede ser borrada sin la
necesidad de reestructurar el rbol

Hay 2 casos a considerar al momento de


eliminar:

El elemento est en un nodo interno y puede ser un


separador de sus hijos
Eliminar un elem puede colocar al nodo bajo el nro
mnimo de elementos por nodo.

Algoritmos: Eliminacin
!

La eliminacin en una hoja es ms simple.


Verificar nro mn y comprobar sus hermanos
para trasladar elementos o juntar nodos.
Si los nodos son los extremos, considerar su
nico hermano para trasladar la llave, si esto no
produce que el hermano se quede con menos
del nro mn de elementos.
Al eliminar de un nodo interno, considerar que
es un separador, verificar hermano derecho
(izq) para obtener el primer valor mayor
(menor) para que acte como nuevo
separador. Sino considerar junta.

Algoritmos: Eliminacin
!

Rebalanceo luego de la eliminacin: Si la


eliminacin del elem en una hoja ha producido
un valor menor al mn de cada nodo, algunos
elementos deben ser redistribuidos para que
los nodos vuelvan a estar sobre el mn.
En algunos casos el reordenamiento mueve el
problema hacia los padres y la redistribucin
debe ser aplicada iterativamente hacia arriba
del rbol, quizs hasta la raz. El algoritmo lo
veremos a continuacin

Algoritmos: Eliminacin
!

Si el hermano derecho tiene ms del nro mn


elems Aade el separador al final del nodo
deficiente, reemplaza el separador en el padre
con el 1er elem del hno derecho y aade al 1er
hijo del hermano derecho como ltimo hijo de
nodo deficiente
De otra forma, si el hermano izquierdo tiene
ms del nro mn de elementos Aade el
separador al inicio del nodo deficiente,
reemplaza el separador en el padre con el
ltimo elem del hno izquierdo e inserta al ltimo
hijo del hermano izquierdo como 1er hijo del
nodo deficiente

Algoritmos: Eliminacin
!

Si ambos hermanos tienen solo el nro min


elems Crea un nuevo nodo con todos los
elementos del nodo deficiente y con todos los
elems de uno de los hermanos, y el separador
en el padre entre la combinacin, elimina el
separador del padre y reemplaza los 2 hijos
que separa con el nodo combinado, y
finalmente si esto produce un nro de elems en
el padre menor que el mn, repite estos pasos
con el nodo deficiente a menos que sea la raz

Demos
!
!
!

http://slady.net/java/bt/view.php
http://www.cosc.canterbury.ac.nz/mukundan/
dsal/TwoThreeTree.html
http://www.seanster.com/BplusTree/
BplusTree.html

Ejercicio
Inserta en un rbol B de orden 5:
33, 44, 22, 88, 99, 110, 11, 8, 4, 6, 12, 16, 20,
10, 5, 7, 25, 26, 27, 28, 29, 30, 31, 32, 36, 34,
35, 37, 38, 39, 40, 41, 42, 43, 100, 98, 97, 96,
95, 94, 93, 92, 91, 90, 89, 87
! Elimina los siguientes valores del mismo
rbol:
87, 92, 93, 94, 95, 96, 97, 33, 32, 31, 30, 29
!

También podría gustarte