Vous êtes sur la page 1sur 11

Arboles B

Los arboles B 14 constituyen una categora muy importante de estructuras de datos,


Que permiten una implementacin eficiente de conjuntos y diccionarios, para
operaciones
De consulta y acceso secuencial. Existe una gran variedad de arboles B: los arboles
B,
B+ y B*; pero todas ellas estn basadas en la misma idea, la utilizacin de arboles de
Bsqueda no binarios y con condicin de balanceo.
En concreto, los arboles B+ son ampliamente utilizados en la representacin de
ndices en bases de datos. De hecho, este tipo de arboles estn diseados
especficamente
Para aplicaciones de bases de datos, donde la caracterstica fundamental es la
predominancia
Del tiempo de las operaciones de entrada/salida de disco en el tiempo de ejecucin
Total. En consecuencia, se busca minimizar el nmero de operaciones de lectura o
escritura
De bloques de datos del disco duro o soporte fsico.
DEFINICIN.
El B-rbol son rboles cuyos nodos pueden tener un nmero mltiple de hijos tal como
muestra el esquema de uno de ellos en la figura 1.




Como se puede observar en la figura 1, un B-rbol se dice que es de orden m si sus
nodos pueden contener hasta un mximo de m hijos. En la literatura tambin aparece
que si un rbol es de orden m significa que el mnimo nmero de hijos que puede tener
es m+1(m claves).Nosotros no la usaremos para diferenciar el caso de un nmero
mximo par e impar de claves en un nodo.
El conjunto de claves que se sitan en un nodo cumplen la condicin:

De forma que los elementos que cuelgan del primer hijo tienen una clave con valor menor
que K
1
, los que cuelgan del segundo tienen una clave con valor mayor que K
1
y menor
que K
2
, etc...Obviamente, los que cuelgan del ltimo hijo tienen una clave con valor
mayor que la ltima clave (hay que tener en cuenta que el nodo puede tener menos
de m hijos y por consiguiente menos de m-1 claves).
Para que un rbol sea B-rbol adems deber cumplir lo siguiente:
Todos los nodos excepto la raz tienen al menos E ((m-1)/2) claves.
Lgicamente para los nodos interiores eso implica que tienen al menos E
((m+1)/2) hijos.
Todas las hojas estn en el mismo nivel.
El hecho de que la raz pueda tener menos descendientes se debe a que si el
crecimiento del rbol hace que la raz se divida en dos hay que permitir dicha situacin
para que los nuevos nodos mantengan esa propiedad. En el caso de que eso ocurra en
un nodo interior distinto a la raz se soluciona propagando hacia arriba; lgicamente
esta operacin no se puede realizar en el caso de raz.
Por otro lado, con el hecho de que los nodos interiores tengan un nmero mnimo de
descendientes aseguramos que en el nivel n(nivel 1 corresponde a la raz)haya un mnimo
de 2E
n-1
((m+1)/2)(el 2 es el mnimo de hijos de la raz y E((m+1)/2) el mnimo para los
dems)y teniendo en cuenta que un rbol con N claves tiene N+1 descendientes en el
nivel de las hojas, podemos establecer la siguiente desigualdad:

Resolviendo:

Que nos da una cota superior del nmero de nodos a recorrer para localizar un
elemento en el rbol.
BSQUEDA EN UN B-RBOL.
Localizar una clave en un B-rbol es una operacin simple pues consiste en situarse en
el nodo raz del rbol, si la clave se encuentra ah hemos terminado y si no es as
seleccionamos de entre los hijos el que se encuentra entre dos valores de clave que son
menor y mayor que la buscada respectivamente y repetimos el proceso hasta que la
encontremos. En caso de que se llegue a una hoja y no podamos proseguir la bsqueda
la clave no se encuentra en el rbol. En definitiva, los pasos a seguir son los siguientes:
1. Seleccionar como nodo actual la raz del rbol.
2. Comprobar si la clave se encuentra en el nodo actual:
1. Si la clave est, fin.
2. Si la clave no est:
Si estamos en una hoja, no se encuentra la clave. Fin.
Si no estamos en una hoja, hacer nodo actual igual al hijo que
corresponde segn el valor de la clave a buscar y los valores de las
claves del nodo actual (i buscamos la clave K en un nodo
con n claves: el hijo izquierdo si K<K
1
, el hijo derecho si K>K
n
y el
hijo i-simo si K
i
<K<K
i+1
) y volver al segundo paso.




INSERCIN EN UN B-RBOL.
Para insertar una nueva clave usaremos un algoritmo que consiste en dos pasos
recursivos:
1. Buscamos la hoja donde debiramos encontrar el valor de la clave de una forma
totalmente paralela a la bsqueda de sta tal como comentbamos en la seccin
anterior (si en esta bsqueda encontramos en algn lugar del rbol la clave a
insertar, el algoritmo no debe hacer nada ms).Si la clave no se encuentra en el
rbol habremos llegado a una hoja que es justamente el lugar donde debemos
realizar esa insercin.
2. Situados en un nodo donde realizar la insercin si no est completo, es decir, si
el nmero de claves que existen es menor que el orden menos 1 del rbol, el
elemento puede ser insertado y el algoritmo termina. En caso de que el nodo
est completo insertamos la clave en su posicin y puesto que no caben en un
nico nodo dividimos en dos nuevos nodos conteniendo cada uno de ellos la
mitad de las claves y tomando una de stas para insertarla en el padre (se usar
la mediana).Si el padre est tambin completo, habr que repetir el proceso
hasta llegar a la raz. En caso de que la raz est completa, la altura del rbol
aumenta en uno creando un nuevo nodo raz con una nica clave.
En la figura 2 podemos observar el efecto de insertar una nueva clave en un nodo que
est lleno.


Podemos realizar una modificacin al algoritmo de forma que se retrase al mximo el
momento de romper un nodo en dos. Con ello podramos vernos beneficiados por dos
razones fundamentalmente:
1. La razn ms importante para modificar as el algoritmo es que los nodos en el
rbol estn ms llenos con lo cual el gasto en memoria para mantener la
estructura es mucho menor.
2. Retrasamos el momento en que la raz llega a dividirse y por consiguiente
retrasamos el momento en que la altura del rbol aumenta.
La forma ms sencilla de realizar esta modificacin es que en el caso de que tengamos
que realizar esa divisin, antes de llevarla a cabo, comprobemos si los hermanos
adyacentes tienen espacio libre de forma que si alguno de ellos lo tiene se redistribuyen
las claves que se encuentran en el nodo actual ms las de ese hermano ms la clave que
los separa(que se encuentra en el padre)ms la clave a insertar de forma que en el padre
se queda la mediana y las dems quedan distribuidas entre los dos nodos.
En la figura 3 podemos observar el efecto de insertar una nueva clave en un nodo que
est lleno pero con redistribucin.


BORRADO EN UN B-RBOL.
La idea para realizar el borrado de una clave es similar a la insercin teniendo en cuenta
que ahora, en lugar de divisiones, realizamos uniones. Existe un problema aadido, las
claves a borrar pueden aparecer en cualquier lugar del rbol y por consiguiente no
coincide con el caso de la insercin en la que siempre comenzamos desde una hoja y
propagamos hacia arriba. La solucin a esto es inmediata pues cuando borramos una
clave que est en un nodo interior, lo primero que realizamos es un intercambio de este
valor con el inmediato sucesor en el rbol, es decir, el hijo ms a la izquierda del hijo
derecho de esa clave.
Las operaciones a realizar para poder llevar a cabo el borrado son por tanto:
1. Redistribucin: la utilizaremos en el caso en que al borrar una clave el nodo se
queda con un nmero menor que el mnimo y uno de los hermanos adyacentes
tiene al menos uno ms que ese mnimo, es decir, redistribuyendo podemos
solucionar el problema.
2. Unin: la utilizaremos en el caso de que no sea posible la redistribucin y por
tanto slo ser posible unir los nodos junto con la clave que los separa y se
encuentra en el padre.
En definitiva, el algoritmo nos queda como sigue:
1. Localizar el nodo donde se encuentra la clave.
2. Si el nodo localizado no es una hoja, intercambiar el valor de la clave localizada
con el valor de la clave ms a la izquierda del hijo a la derecha. En definitiva
colocar la clave a borrar en una hoja. Hacemos nodo actual igual a esa hoja.
3. Borrar la clave.
4. Si el nodo actual contiene al menos el mnimo de claves como para seguir siendo
un B-rbol, fin.
5. Si el nodo actual tiene un nmero menor que el mnimo:
1. Si un hermano tiene ms del mnimo de claves, redistribucin y fin.
2. Si ninguno de los hermanos tiene ms del mnimo, unin de dos nodos
junto con la clave del padre y vuelta al paso 4 para propagar el borrado
de dicha clave (ahora en el padre).
RBOLES B+

1. INTRODUCCIN
Los rboles B+ constituyen otra mejora sobre los rboles B, pues conservan la
propiedad de acceso aleatorio rpido y permiten adems un recorrido secuencial
rpido. En un rbol B+ todas las claves se encuentran en hojas, duplicndose en la raz
y nodos interiores aquellos que resulten necesarias para definir los caminos de
bsqueda. Para facilitar el recorrido secuencial rpido las hojas se pueden vincular, se,
de esta forma, una trayectoria secuencial para recorrer las claves del rbol.
Su principal caracterstica es que todas las claves se encuentran en las hojas. Los
rboles B+ ocupan algo ms de espacio que los rboles B, pues existe duplicidad en
algunas claves. En los rboles B+ las claves de las pginas raz e interiores se utilizan
nicamente como ndices.

El orden de insercin de los diversos elementos fue: p v d e b c s a r f t q
2. BUSQUEDA EN UN RBOL B+
En este caso, la bsqueda no debe detenerse cuando se encuentre la clave en la
pgina raz o en una pgina interior, sino que debe proseguir en la pgina apuntada por
la rama derecha de dicha clave.
3. INSERCIN EN UN RBOL B+
Su diferencia con el proceso de insercin en rboles B consiste en que cuando se
inserta una nueva clave en una pgina llena, sta se divide tambin en otras dos, pero
ahora la primera contendr con m/2 claves y la segunda 1+m/2, y lo que subir a la
pgina antecesora ser una copia de la clave central.
Insertar las siguientes claves a un rbol de orden 5: 10-27-29-17-25-21-15-31-13-51-
20-24-48-19-60-35-66

4. Eliminacin:
La operacin de eliminacin en rboles-B+ es ms simple que en rboles-B. Esto
ocurre porque las claves a eliminar siempre se encuentran en las pginas hojas. En
general deben distinguirse los siguientes casos:
1. Si al eliminar una clave, la cantidad de llaves queda mayor o igual que [m/2]
entonces termina la operacin. Las claves de los nodos raz o internos no se
modifican por ms que sean una copia de la clave eliminada en las hojas.
2. Si al eliminar una clave, la cantidad de llaves queda menor que [m/2] entonces
debe realizarse una redistribucin de claves, tanto en el ndice como en las
pginas hojas.
Ejemplo del caso 1:



Ejemplo del caso 2:

RBOLES B
*


1. INTRODUCCIN.
En 1973, Knuth propone nuevas reglas para realizar el mantenimiento de los B-
rboles de forma que no se realiza una divisin de un nodo en dos ya que eso hace que
los nodos resultantes tengan la mitad de claves, sino que se realizan divisiones de dos
nodos completos a tres de forma que los nodos resultantes tienen dos tercios del total.
Por consiguiente, este tipo de rboles son muy similares a los anteriores pero teniendo
en cuenta:
1. Cada nodo tiene un mximo de m descendientes.
2. Cada nodo excepto el raz tiene al menos (2m-1)/3 hijos.
3. La raz tiene al menos dos descendientes (a menos de que sea hoja).
4. Una hoja contiene al menos E [(2m-1)/3] claves.
5. Todas las hojas aparecen en el mismo nivel.
6. Un nodo que no sea hoja con k descendientes contiene k-1 llaves.
7. Un nodo hoja contiene por lo menos E [(2m-1)/3] llaves, y no ms de m-1.
Existe un problema aadido a este tipo de rboles pues cuando la divisin de nodos se
propaga hasta la raz dividirla segn hemos visto implicara que junto a uno de sus
hermanos que estuvieran completos se crearn tres nuevos nodos llenos en dos terceras
partes. Esto no es posible pues la raz no tiene hermanos. La solucin al problema
puede ser permitir que la raz tenga un nmero superior de claves de forma que si se
divide se puedan producir 3 nodos cumpliendo las caractersticas de los rboles B
*
.
Los cambios crticos entre el anterior conjunto de propiedades y el conjunto que se
define para un rbol B convencional estn en las reglas 2 y 6: un rbol B
*
tiene nodos
que contienen un mnimo de (2m-1)/3 llaves. Por supuesto, esta nueva propiedad afecta
los procedimientos de eliminacin y redistribucin.
Para realizar los procedimientos de rboles B
*
tambin se debe abordar la cuestin de
dividir la raz, la cual, por definicin, nunca tiene hermanos. Si no existen hermanos, no
es posible la divisin de dos a tres. Knuth sugiere permitir que la raz crezca hasta un
tamao mayor que los dems nodos, de tal forma que, cuando se divida, pueda producir
dos nodos cada uno lleno casi a las dos terceras partes. Esta sugerencia tiene la
ventaja de asegurar que todos los nodos por debajo del nivel de la raz se adhieren a las
caractersticas de los rboles B
*
. Sin embargo, tiene la desventaja de requerir que los
procedimientos sean capaces de manejar un nodo que sea de mayor tamao que todos
los dems. Otra solucin es realizar la divisin de la raz como una divisin convencional
de uno a dos. Esta segunda solucin evita cualquier lgica especial de manejo de
nodos. Por otro lado, complica la eliminacin, la redistribucin y otros procedimientos
que deben ser sensibles al nmero mnimo de llaves permitidas en un nodo. Tales
procedimientos tendran que ser capaces de reconocer que los nodos descendientes de
la raz legalmente pueden estar solo llenos.

Vous aimerez peut-être aussi