You are on page 1of 13

ARBOLES B+

En ciencias de la computacin, un rbol B+ es un tipo de estructura de


datos de rbol, representa una coleccin de datos ordenados de manera
que se permite una insercin y borrado eficientes de elementos. Es un
ndice, multinivel, dinmico, con un lmite mximo y mnimo en el
nmero de claves por nodo. Un rbol B+ es una variacin de un rbol B.
En un rbol B+, toda la informacin se guarda en las hojas. Los nodos
internos slo contienen claves y punteros. Todas las hojas se encuentran
en el mismo nivel, que corresponde al ms bajo. Los nodos hoja se
encuentran unidos entre s como una lista enlazada para permitir
principalmente recuperacin en rango mediante bsqueda secuencial.
+ Caractersticas:
Las estructuras de rbol B+ renen las siguientes caractersticas:
-

El nmero mximo de claves en un registro es llamado el orden


del rbol B+.
El mnimo nmero de claves por registro es la mitad del mximo
nmero de claves. Por ejemplo, si el orden de un rbol B+ es n,
cada nodo (exceptuando la raz) debe tener entre n/2 y n claves.
El nmero de claves que pueden ser indexadas usando un rbol
B+ est en funcin del orden del rbol y su altura.

+ Propiedades:
-

Cada pgina, excepto la raz, contiene entre n y 2n elementos.


Cada pgina, excepto la raz, tiene entre n + 1 y 2n + 1
descendientes. Se utiliza m para expresar el nmero de elementos
por pgina.
La pgina raz tiene al menos dos descendientes.
Las paginas hojas estn todas al mismo nivel.
Todas las claves se encuentran en las pginas hojas.
Las claves de las pginas raz e interiores se utilizan como ndices.

En el mejor de los casos la altura de un rbol B+ es:


En el peor de los casos la altura de un rbol es:
+ Insertar

log

log M n

M
)
2

Se quiere insertar un nuevo registro en el archivo de datos. Para insertar


un nuevo registro en un rbol B+, hay que localizar, a partir de su clave,
el bloque en el que debe almacenarse, de modo similar a una operacin
de bsqueda, recorriendo el rbol desde la pgina raz hasta la pgina
hoja adecuada. Una vez encontrada la pgina indica, si an no se ha
ocupado su mximo nmero de registros, se inserta el elemento de
forma
ordenada
en
la
pgina
hoja.
Si el bloque est completo, se produce desbordamiento, se resolverse
"rompiendo" la pgina y repartiendo equitativamente los registros entre
dos
nuevas
pginas
hojas.
Por tanto, una vez obtenido
Si hay espacio en la pgina:
-

la

pgina,

las

estrategias

son:

Se almacena el registro en la pgina de forma ordenada.


Se reescribe nuevamente la pgina en disco.

Si no hay espacio en la pgina:


-

Se crea una nueva pgina en la estructura y se reparten los datos


de la pgina entre ambas, insertando el dato en la posicin
adecuada.
Se actualiza el ndice: al tener una pgina ms de registros, hay
que insertar, en el rbol B+ el ndice, una clave separadora que
diferencie los datos de estas dos pginas consecutivas; por
convenio sta se obtiene a partir de la primera clave del segundo
bloque.

Se busca un registro con clave 86 en el rbol B+ de orden 4.


Empezamos comparando con la clave almacenada en el nodo raz. Como
es mayor, seguimos la bsqueda por su hijo derecho; comparramos
con78, como 78<86 continuamos con la hoja que contiene las claves
{80, 84}. Comparando, 80 < 84 < 86, seleccionamos el tercer
apuntador de esta hoja, que nos lleva al ltimo bloque del conjunto
secuencia. En color verde se indica la secuencia de apuntadores que se
ha seguido. Una vez obtenida la posicin del bloque de datos se lleva a
memoria donde se realiza la bsqueda del registro.

+ Eliminar
Para eliminar un dato de un rbol B+, hay que recorrer el rbol hasta
llegar a la hoja que contiene la direccin del bloque en el que se
encuentra. Los bloques del conjunto secuencia tambin deben tener un
nmero mnimo de registros almacenados, por lo que pueden crearse
situaciones de insuficiencia dentro de la pginas, similares a las de los
nodos del conjunto ndice. En ese caso, se resuelven, mediante
redistribucin de registros entre bloques adyacentes, y si no es posible,
concatenando los registros de los dos bloques. En consecuencia, tras la
eliminacin:
-

Si el bloque queda con al menos la mitad de los registros:


* No habr que hacer ningn cambio; slo se reescribir a el bloque
en disco.
* Se comprueba si la clave separadora de este bloque y el
siguiente sigue siendo vlida. En caso de no serlo, habr que
cambiarla dentro del ndice.
Si el bloque queda ocupado con menos de la mitad de su
capacidad:
* Como en una situacin de insuficiencia en un nodo de un rbol
B+, primero se intenta redistribuir los registros entre ese bloque y
un bloque adyacente, y si no es posible, entonces se concatena en
las dos pginas.
* Actualizar el ndice: en caso de haber hecho redistribucin, hay
que cambiar la clave separadora entre las pginas. Si se ha hecho
concatenacin tendremos una pgina menos, y por tanto, hay que
eliminar la clave separadora del ndice, resolviendo las posibles
situaciones de insuficiencia en las pginas.

ARBOLES B

Es un rbol de bsqueda que puede estar vaco o aquel cuyos nodos


pueden tener varios hijos, existiendo una relacin de orden entre ellos.
Los nodos que conforman el rbol B son denominados pginas.
Son estructuras de datos de rbol que se encuentran comnmente en
las implementaciones de bases de datos y sistemas de archivos.
+ Caractersticas:
-

Son arboles balanceados de bsqueda.


Cada nodo puede poseer ms de dos hijos.
Mantienen los datos ordenados.
Las inserciones y eliminaciones se realizan en tiempo logartmico
amortizado.

+ Propiedades:
-

Cada nodo tiene como mximo M hijos.


Cada nodo (excepto raz y hojas) tiene como mnimo M/2 hijos.
La raz tiene al menos 2 hijos si no es un nodo hoja.
Todos los nodos hoja aparecen al mismo nivel
Un nodo no hoja con K hijos contiene K-1 elementos almacenados.
Los hijos que cuelgan de la raz (r1,, rm) tienen que cumplir
ciertas condiciones.
* El primero tiene valor menor que r1.
* El segundo tiene valor mayor que r1 y mejor que r2.
* El ltimo hijo tiene valor mayor que rm.
log M n

En el mejor de los casos, la altura de un rbol B es:

donde, (M es

el nmero mximo de hijos que puede tener un nodo).


En el peor de los casos la altura, de un rbol B es:

+ Insertar
-

Realizando una bsqueda en el rbol, se halla el nodo hoja en el


cual debera ubicarse el nuevo elemento.
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.
De otra forma, el nodo debe ser dividido en dos nodos. La divisin
se realiza de la siguiente manera:
* Se escoge el valor medio entre los elementos del nodo y el
nuevo elemento. * 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.
* El valor separador se debe colocar en el nodo padre, lo que
puede provocar
que el padre sea dividido en dos, y as sucesivamente.
+ Eliminar
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:
-

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.
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:
* Localizar el nodo donde se encuentra la clave.
* 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.
* Borrar la clave.
* Si el nodo actual contiene al menos el mnimo de claves como
para seguir siendo un B-rbol, fin.
* Si el nodo actual tiene un nmero menor que el mnimo:
* Si un hermano tiene ms del mnimo de claves, redistribucin y
fin.
* 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).

+ Diferencias entre arboles B y B+


-

Su diferencia en el proceso de insercin en arboles B consiste en


que cuando se inserta una nueva clave en una pgina llena, esta
se divide tambin en otras dos y lo que subir a la pgina
antecesora ser una copia.
La diferencia consiste en que las llaves se almacenan en los nodos
del ltimo nivel del rbol y esos nodos se enlazan unos con otros
formando una lista ligada que puede ser ligada en forma sencilla o
doblemente ligada.
Las llaves se repiten en los nodos intermedios y en el nodo raz
para facilitar la bsqueda.

+ Referencias Bibliogrficas
-

http://ingsistemas.ufps.edu.co/SEED/arbolb+.html
https://sites.google.com/site/clasearbolesb/arboles-b
http://es.slideshare.net/neltherdaza/arboles-b-y-arboles-b

http://ingsistemas.ufps.edu.co/SEED/arbolb.html
http://ingsistemas.ufps.edu.co/SEED/arbolavl.html

ANALISIS DE ALGORITMOS

TRABAJO DE: ARBOLES B Y B+


ARBOL AVL

TRABAJO PRESENTADO POR:


OSMAN ORTEGA PARADA
COD: 1119185031

PRESENTADO A:
ING. OMAR PORTILLA

UNIVERSIDAD DE PAMPLONA
FACULTAD DE INGENIERIAS Y ARQUITECTURA

GRUPO: A
FECHA: 20/06/2016

PAMPLONA COLOMBIA

ARBOL AVL
El nombre AVL son las iniciales de los hombres que idearon este tipo de
rbol
Adelson-Velskii
y
Landis
en
1962.
Bsicamente un rbol AVL es un rbol binario de bsqueda al que se le
aade una condicin de equilibrio. Esta condicin es que para todo nodo
la altura de sus subrboles izquierdo y derecho puede diferir a lo sumo
en 1.
+ Caractersticas:
-

Un AVL es un ABB
La diferencia entre las alturas de los subrboles derecho e
izquierdo no debe excederse en ms de 1.
Cada nodo tiene asignado un peso de acuerdo a las alturas de sus
subrboles.
Un nodo tiene un peso de 1 si su subrbol derecho es ms alto, -1
si su subrbol izquierdo es ms alto y 0 si las alturas son las
mismas.
La insercin y eliminacin en AVLs es la misma que en los ABBs.

+ Equilibrio
-

Equilibrio (n) = altura-der (n) altura-izq. (n) describe


relatividad entre subrbol der y subrbol izq.

(Positivo) -> der ms alto (profundo)

(negativo) -> izq mas alto (profundo)

Un rbol binario es un AVL si y slo si cada uno de sus nodos tiene un


equilibrio de 1, 0, + 1. Si alguno de los pesos de los nodos se modifica
en un valor no vlido (2 o -2) debe seguirse un esquema de rotacin.
+ Insertar un dato
-

Usamos la misma tcnica para insertar un nodo en un ABB


ordenado.
Trazamos una ruta desde el nodo raz hasta un nodo hoja (donde
hacemos la insercin).
Insertamos el nodo nuevo.
Volvemos a trazar la ruta de regreso al nodo raz, ajustando el
equilibrio a lo largo de ella.
Si el equilibrio de un nodo llega a ser + - 2, volvemos a ajustar los
subrboles de los nodos para que su equilibrio se mantenga
acorde con los lineamientos AVL (que son +- 1).

+ Balancear el rbol
-

Caso
1:
Rotacin
simple
izquierda
RSI
Si esta desequilibrado a la izquierda y su hijo derecho tiene el
mismo signo (+) hacemos rotacin sencilla izquierda.

Luego de la rotacin:

Caso 2: Rotacin simple derecha RSD

Luego de la rotacin:

Hay varios puntos que cabe sealar aqu:


- Se conserva el orden apropiado del rbol.
- Restablece todos los nodos a equilibrios apropiados AVL
- Conserva el recorrido en orden que el rbol anterior.
- Slo necesitamos modificar 3 apuntadores para lograr el nuevo
equilibrio (con
la de la raz).

Caso
3:
Rotacin
doble
izquierda
RDI
Si est desequilibrado a la izquierda (FE < 1), y su hijo derecho tiene
distinto signo (+) hacemos rotacin doble izquierda-derecha.

Otro ejemplo de esta rotacin:

Caso
4:
Rotacin
doble
derecha
RDD
Si esta desequilibrado a la derecha y su hijo izquierdo tiene distinto
signo () hacemos rotacin doble derecha-izquierda.

+ Eliminar un dato
Al eliminar un nodo en un rbol AVL puede afectar el equilibrio de sus
nodos. Entonces hay que hacer rotaciones simples o dobles.
Eliminas un nodo como lo hacemos en un rbol binario ordenado. Al
localizar el nodo que queremos eliminar seguimos este procedimiento:
- Si el nodo es un nodo hoja, simplemente lo eliminamos.
- Si el nodo solo tiene un hijo, lo sustituimos con su hijo.
- Si el nodo eliminado tiene dos hijos, lo sustituimos por el hijo derecho y
colocamos el hijo izquierdo en el subrbol izquierdo del hijo derecho.
Ahora que hemos eliminado el nodo, tenemos que volver a equilibrar el
rbol:
- Si el equilibrio del padre del nodo eliminado cambia de 0 a +-1 el
algoritmo
concluye.

- Si el padre del nodo eliminado cambio de +-1 a 0, la altura del rbol ha


cambiado
y
se
afecte
el
equilibrio
de
su
abuelo.
- Si el equilibrio del padre del nodo eliminado cambia de +- 1 a +- 2 hay
que
hacer
una
rotacin.
- Despus de concluirla, el equilibrio del padre podra cambiar, lo que, a
su vez, podra forzarnos a hacer otros cambios (y probables rotaciones)
en toda la ruta hacia arriba a medida que ascendemos hacia la raz. Si
encontramos en la ruta un nodo que cambie de 0 a +- 1 entonces
terminamos.
+ Mtodos (Buscar, Insertar, Eliminar) Implementados en java