You are on page 1of 18

Arboles B

Estructuras de Datos II 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 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.

Hay 2 casos a considerar al momento de eliminar:

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.seanster.com/BplusTree/BplusTree.html

http://www.cosc.canterbury.ac.nz/mukundan/dsal/TwoT

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

You might also like