Está en la página 1de 7

Universidad Mariano Glvez de Guatemala Facultad de Ingeniera en sistemas Estructura de Datos Inga.

Gabriela Luna

Investigacin Arboles B

Miguel Angel Solis Pereira 1290-09-4268

La antigua Guatemala 31 de mayo de 2011

Arboles B
Los rboles-B B-rboles son estructuras de datos de rbol que se encuentran comnmente en las implementaciones de bases de datos y sistemas de archivos. Los rboles B mantienen los datos ordenados y las inserciones y eliminaciones se realizan en tiempo logartmico amortizado.

Ejemplo de rbol B.

La idea tras los rboles-B es que los nodos internos deben tener un nmero variable de nodos hijo dentro de un rango predefinido. Cuando se inserta o se elimina un dato de la estructura, la cantidad de nodos hijo vara dentro de un nodo. Para que siga mantenindose el nmero de nodos dentro del rango predefinido, los nodos internos se juntan o se parten. Dado que se permite un rango variable de nodos hijo, los rboles-B no necesitan rebalancearse tan frecuentemente como los rboles binarios de bsqueda auto-balanceables, pero por otro lado pueden desperdiciar memoria, porque los nodos no permanecen totalmente ocupados. Los lmites superior e inferior en el nmero de nodos hijo son definidos para cada implementacin en particular. Por ejemplo, en un rbol-B 2-3 (A menudo simplemente llamado rbol 2-3 ), cada nodo slo puede tener 2 3 nodos hijo. Un rbol-B se mantiene balanceado porque requiere que todos los nodos hoja se encuentren a la misma altura. Los rboles B tienen ventajas sustanciales sobre otras implementaciones cuando el tiempo de acceso a los nodos excede al tiempo de acceso entre nodos. Este caso se da usualmente cuando los nodos se encuentran en dispositivos de almacenamiento secundario como los discos. Al maximizar el nmero de nodos hijo de cada nodo interno, la altura del rbol decrece, las operaciones para balancearlo se reducen, y aumenta la eficiencia. Usualmente este valor se coloca de forma tal que cada nodo ocupe un bloque de disco, o un tamao anlogo en el dispositivo. Mientras que los rboles B 2-3 pueden ser tiles en la memoria principal, y adems ms fciles de explicar, si el tamao de los nodos se ajustan para caber en un bloque de disco, el resultado puede ser un rbol B 129-513.

Definicin tcnica
B-rbol es un rbol de bsqueda que puede estar vaco o aquel cuyos nodos pueden tener varios hijos, existiendo una relacin de orden entre ellos, tal como muestra el dibujo. Un rbol-B de orden M (el mximo nmero de hijos que puede tener cada nodo) es un rbol que satisface las siguientes propiedades: 1. Cada nodo tiene como mximo M hijos. 2. Cada nodo (excepto raz y hojas) tiene como mnimo M/2 hijos. 3. La raz tiene al menos 2 hijos si no es un nodo hoja. 4. Todos los nodos hoja aparecen al mismo nivel. 5. Un nodo no hoja con k hijos contiene k-1 elementos almacenados. 6. Los hijos que cuelgan de la raz (r1, , rm) tienen que cumplir ciertas condiciones: 1. El primero tiene valor menor que r1. 2. El segundo tiene valor mayor que r1 y menor que r2, etc. 3. El ltimo hijo tiene valor mayor que rm.

Altura
En el mejor de los casos, la altura de un rbol-B es: logMn En el peor de los casos, la altura de un rbol-B es: Donde M es el nmero mximo de hijos que puede tener un nodo.

Estructura de los nodos


Cada elemento de un nodo interno acta como un valor separador, que lo divide en subrboles. Por ejemplo, si un nodo interno tiene tres nodos hijo, debe tener dos valores separadores o elementos a1 y a2. Todos los valores del subrbol izquierdo deben ser menores a a1, todos los valores del subrbol del centro deben estar entre a1 y a2, y todos los valores del subrbol derecho deben ser mayores a a2. Los nodos internos de un rbol B, es decir los nodos que no son hoja, usualmente se representan como un conjunto ordenado de elementos y punteros a los hijos. Cada nodo interno contiene un mximo de U hijos y, con excepcin del nodo raz, un mnimo de L hijos. Para todos los nodos internos exceptuando la raz, el nmero de elementos es uno menos que el nmero de punteros a nodos. El nmero de elementos se encuentra entre L-1 y U-1. El nmero U debe ser 2L o 2L-1, es decir, cada nodo interno est por lo menos a medio llenar. Esta relacin entre U y L implica que dos nodos que estn a medio llenar pueden juntarse para formar un nodo legal, y un nodo lleno puede dividirse en dos nodos legales (si es que hay lugar para subir un elemento al nodo padre). Estas propiedades hacen posible que el rbol B se ajuste para preservar sus propiedades ante la insercin y eliminacin de elementos. Los nodos hoja tienen la misma restriccin sobre el nmero de elementos, pero no tienen hijos, y por tanto carecen de punteros. El nodo raz tiene lmite superior de nmero de hijos, pero no tiene lmite inferior. Por ejemplo, si hubiera menos de L-1 elementos en todo el rbol, la raz sera el nico nodo del rbol, y no tendra hijos. Un rbol B de altura n+1 puede contener U veces por elementos ms que un rbol B de profundidad n, pero el costo en la bsqueda, insercin y eliminacin crece con la altura del rbol. Como todo rbol balanceado, el crecimiento del costo es ms lento que el del nmero de elementos. Algunos rboles balanceados guardan valores slo en los nodos hoja, y por lo tanto sus nodos internos y nodos hoja son de diferente tipo. Los rboles B guardan valores en cada nodo, y pueden utilizar la misma estructura para todos los nodos. Sin embargo, como los nodos hoja no tienen hijos, una estructura especial para stos mejora el funcionamiento.

Bsqueda
La bsqueda es similar a la de los rboles binarios. Se empieza en la raz, y se recorre el rbol hacia abajo, escogiendo el sub-nodo de acuerdo a la posicin relativa del valor buscado respecto a los valores de cada nodo. Tpicamente se utiliza la bsqueda binaria para determinar esta posicin relativa.

Procedimiento
ejemplo2 insercin en rbol B.

1. Situarse en el nodo raz. 2. (*) Comprobar si contiene la clave a buscar. 1. Encontrada fin de procedimiento. 2. No encontrada:

1. Si es hoja no existe la clave. 2. En otro caso el nodo actual es el hijo que corresponde: 1.La clave a buscar k < k1: hijo izquierdo. 2.La clave a buscar k > ki y k < ki+1 hijo isimo. 3.Volver a paso 2(*)

Insercin
Todas las inserciones se hacen en los nodos hoja. 1. Realizando una bsqueda en el rbol, se halla el nodo hoja en el cual debera ubicarse el nuevo elemento. 2. Si el nodo hoja tiene menos elementos que el mximo nmero de elementos legales, entonces hay lugar para uno ms. Inserte el nuevo elemento en el nodo, respetando el orden de los elementos. 3. De otra forma, el nodo debe ser dividido en dos nodos. La divisin se realiza de la siguiente manera: 1. Se escoge el valor medio entre los elementos del nodo y el nuevo elemento. 2. Los valores menores que el valor medio se colocan en el nuevo nodo izquierdo, y los valores mayores que el valor medio se colocan en el nuevo nodo derecho; el valor medio acta como valor separador. 3. El valor separador se debe colocar en el nodo padre, lo que puede provocar que el padre sea dividido en dos, y as sucesivamente. Si las divisiones de nodos suben hasta la raz, se crea una nueva raz con un nico elemento como valor separador, y dos hijos. Es por esto por lo que la cota inferior del tamao de los nodos no se aplica a la raz. El mximo nmero de elementos por nodo es U-1. As que debe ser posible dividir el nmero mximo de elementos U-1 en dos nodos legales. Si este nmero fuera impar, entonces U=2L, y cada uno de los nuevos nodos tendran (U-2)/2 = L-1 elementos, y por lo tanto seran nodos legales. Si U-1 fuera par, U=2L-1, as que habra 2L-2 elementos en el nodo. La mitad de este nmero es L-1, que es el nmero mnimo de elementos permitidos por nodo. Un algoritmo mejorado admite una sola pasada por el rbol desde la raz, hasta el nodo donde la insercin tenga lugar, dividiendo todos los nodos que estn llenos encontrados a su paso. Esto evita la necesidad de volver a cargar en memoria los nodos padres, que pueden ser caros si los nodos se encuentran en una memoria secundaria. Sin embargo, para usar este algoritmo mejorado, debemos ser capaces de enviar un elemento al nodo padre y dividir el resto U-2 elementos en 2 nodos legales, sin aadir un nuevo elemento. Esto requiere que U=2Len lugar de U=L-1,lo que explica por qu algunos libros de texto imponen este requisito en la definicin de rboles-B.

Eliminacin
La eliminacin de un elemento es directa si no se requiere correccin para garantizar sus propiedades. Hay dos estrategias populares para eliminar un nodo de un rbol B. localizar y eliminar el elemento, y luego corregir, o hacer una nica pasada de arriba a abajo por el rbol, pero cada vez que se visita un nodo, reestructurar el rbol para que cuando se encuentre el elemento a ser borrado, pueda eliminarse sin necesidad de continuar reestructurando Se pueden dar dos problemas al eliminar elementos: primero, el elemento puede ser un separador de un nodo interno. Segundo, puede suceder que al borrar el elemento, el nmero de elementos del nodo quede debajo de la cota mnima. Estos problemas se tratan a continuacin en orden.

Eliminacin en un nodo hoja


Busque el valor a eliminar. Si el valor se encuentra en un nodo hoja, se elimina directamente la clave, posiblemente dejndolo con muy pocos elementos; por lo que se requerirn cambios adicionales en el rbol.

Eliminacin en un nodo interno


Cada elemento de un nodo interno acta como valor separador para dos subrboles, y cuando ese elemento es eliminado, pueden suceder dos casos. En el primero, tanto el hijo izquierdo como el derecho tienen el nmero mnimo de elementos, L-1. Pueden entonces fundirse en un nico nodo con 2L-2 elementos, que es un nmero que no excede U-1 y por lo tanto es un nodo legal. A menos que se sepa que este rbol B en particular no tiene datos duplicados, tambin se debe eliminar el elemento en cuestin (recursivamente) del nuevo nodillo. En el segundo caso, uno de los dos nodos hijos tienen un nmero de elementos mayor que el mnimo. Entonces se debe hallar un nuevo separador para estos dos subrboles. Note que el mayor elemento del rbol izquierdo es el mayor elemento que es menor que el separador. De la misma forma, el menor elemento del subrbol derecho es el menor elemento que es mayor que el separador. Ambos elementos se encuentran en nodos hoja, y cualquiera de los dos puede ser el nuevo separador. Si el valor se encuentra en un nodo interno, escoja un nuevo separador (puede ser el mayor elemento del subrbol izquierdo o el menor elemento del subrbol derecho), elimnelo del nodo hoja en que se encuentra, y reemplace el elemento a eliminar por el nuevo separador. Como se ha eliminado un elemento de un nodo hoja, se debe tratar este caso de manera equivalente.

eliminar clave 20 de un nodo interno.

Rebalanceo despus de la eliminacin


Si al eliminar un elemento de un nodo hoja el nodo se ha quedado con menos elementos que el mnimo permitido, algunos elementos se deben redistribuir. En algunos casos el cambio lleva la

deficiencia al nodo padre, y la redistribucin se debe aplicar iterativamente hacia arriba del rbol, quiz incluso hasta a la raz. Dado que la cota mnima en el nmero de elementos no se aplica a la raz, el problema desaparece cuando llega a sta. La estrategia consiste en hallar un hermano para el nodo deficiente que tenga ms del mnimo nmero de elementos y redistribuir los elementos entre los hermanos para que todos tengan ms del mnimo. Esto tambin cambia los separadores del nodo padre. Si el nodo hermano inmediato de la derecha del nodo deficiente tiene ms del mnimo nmero de elementos, escoja el valor medio entre el separador y ambos hermanos como nuevo separador y colquelo en el padre. Redistribuya los elementos restantes en los nodos hijo derecho e izquierdo. Redistribuya los subrboles de los dos nodos . Los subrboles son trasplantados por completo, y no se alteran si se mueven a un otro nodo padre, y esto puede hacerse mientras los elementos se redistribuyen. Si el nodo hermano inmediato de la derecha del nodo deficiente tiene el mnimo nmero de elementos, examine el nodo hermano inmediato de la izquierda. Si los dos nodos hermanos inmediatos tienen el mnimo nmero de elementos, cree un nuevo nodo con todos los elementos del nodo deficiente, todos los elementos de uno de sus hermanos, colocando el separador del padre entre los elementos de los dos nodos hermanos fundidos. Elimine el separador del padre, y reemplace los dos hijos que separaba por el nuevo nodo fundido. Si esa accin deja al nmero de elementos del padre por debajo del mnimo, repita estos pasos en el nuevo nodo deficiente, a menos que sea la raz, ya que no tiene cota mnima en el nmero de elementos.

Construccin Inicial
En aplicaciones, es frecuentemente til construir un rbol-B para representar un gran nmero de datos existentes y despus actualizarlo de forma creciente usando operaciones Standard de los rboles-B. En este caso, el modo ms eficiente para construir el rbol-B inicial no sera insertar todos los elementos en el conjunto inicial sucesivamente, si no construir el conjunto inicial de nodos hoja directamente desde la entrada, y despus construir los nodos internos a partir de este conjunto. Inicialmente, todas las hojas excepto la ltima tienen un elemento ms, el cual ser utilizado para construir los nodos internos. Por ejemplo, si los nodos hoja tienen un tamao mximo de 4 y el conjunto inicial es de enteros desde el 1 al 24, tenemos que construir inicialmente 5 nodos hoja conteniendo 5 valores cada uno (excepto el ltimo que contiene 4):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Construiremos el siguiente nivel hacia arriba desde las hojas tomando el ltimo elemento de cada hoja excepto el ltimo. De nuevo, cada nodo excepto el ltimo contendr un valor ms. En el ejemplo, es supuesto que los nodos internos contienen como mucho 2 valores (por lo que pueden tener 3 hijos). Luego el siguiente nivel de nodos internos nos quedara de la siguiente manera:
5 10 15 1 2 3 4 20 6 7 8 9 11 12 13 14 16 17 18 19 21 22 23 24

Este proceso se continuar hasta que alcancemos un nivel con un solo nodo y no est sobrecargado. En nuestro ejemplo solo nos quedara el nivel de la raz:
15 5 10 1 2 3 4 20 6 7 8 9 11 12 13 14 16 17 18 19 21 22 23 24

También podría gustarte