Documentos de Académico
Documentos de Profesional
Documentos de Cultura
on y Gesti
on de
Archivos
I.t.i.g. & I.t.i.s.
Indices Multinivel
con
Arboles B y B
+
.
Operaciones B
asicas
Irene Martnez Masegosa
Area de Ciencia de la Computaci on e Inteligencia Articial
Departamento de Lenguajes y Computaci on
Universidad de Almera
irene@ual.es
Indice
Contenidos Teoricos 1
1. Introduccion. Planteamiento del Problema 1
2. Indexando con
Arboles Binarios 4
2.1.
Arbol binario de b usqueda . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.
Arbol AVL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.
Arbol binario paginado . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.
Arboles B 11
3.1. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3. Operacion de b usqueda. Acceso directo a un registro. . . . . . . . . . . 14
3.4. Operacion de insercion . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.5. Operacion de eliminacion . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.6. Operacion de acceso secuencial . . . . . . . . . . . . . . . . . . . . . . . 28
3.7. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.
Arboles B
+
30
4.1. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.3. Operacion de b usqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.4. Operacion de insercion . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.5. Operacion de eliminacion . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6. Operacion de acceso secuencial . . . . . . . . . . . . . . . . . . . . . . . 42
4.7. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5. Conclusiones 43
Bibliografa 45
i
Introducci on. Planteamiento del Problema 1
1. Introduccion. Planteamiento del Problema
Un ndice sobre un chero es una estructura auxiliar dise nada para optimizar la
velocidad de acceso a registros cuando la organizacion basica de estos, dentro del chero,
no lo permite.
Un ndice puede denirse como un conjunto ordenado de entradas que incorporan
un metodo eciente para localizar todos los registros en base al valor de uno o varios
de sus campos. A este valor se le denomina clave de b usqueda. De este modo, cada
entrada del ndice puede considerarse como un par formado por un valor de clave, y
por un metodo de recuperacion del registro o registros, con ese valor de clave.
As pues, una entrada de un ndice contiene suciente informacion para recuperar
un registro en base a un predicado (el que se ha establecido como clave), y a su vez,
presenta la ventaja de que ocupa menos espacio que el registro al que se nala.
El caso mas sencillo de ndice es el de una tabla ordenada almacenada en memoria,
donde cada entrada es un par formado por el valor de clave asociado al registro, y una
funcion que identica su posicion dentro del chero. Este tipo de ndice puede asociarse
tanto a un archivo de registros desordenados, como a un archivo ordenado por la misma
clave que el ndice, obteniendose de esta manera:
un ndice denso para el archivo de registros desordenados, en una organizacion
indexada simple, o
un ndice disperso para el archivo de bloques de registros ordenados, en la orga-
nizacion secuencial indexada. Esta ultima organizacion facilita, por una parte, el
acceso ordenado en funcion de la clave (al encontrarse los registros en secuencia),
y por otra, el acceso directo a un determinado registro a traves del ndice.
Si el ndice contiene muchas entradas, el tama no del ndice puede ser tan grande
que no pueda almacenarse completamente en memoria, almacen andose entonces en
un archivo con organizacion secuencial. En este caso, la b usqueda de una entrada
sera mucho mas lenta pues habra que posicionarse repetidas veces en disco para realizar
las comparaciones.
La solucion a este problema es indexar este ndice, generandose un segundo nivel
Irene Martnez C. de la Computaci on e I.A. UAL
2 Introducci on. Planteamiento del Problema
de ndice (disperso) que se nale entradas del primero; este proceso se repite hasta que
se construya un ndice, en el ultimo nivel, cuyo tama no coincida con el de la unidad de
transferencia entre memoria y disco (bloque), obteniendose as un ndice multinivel.
Los ndices multinivel pueden ser estaticos o dinamicos. La diferencia entre ambos
es que los primeros no se modican cuando realizamos inserciones o eliminaciones de
registros de datos, y los segundos s.
En la gura 1 podemos ver la estructura general de la organizacion secuencial
indexada con unndice multinivel estatico. En la parte inferior se encuentran los bloques
de datos del area primaria, enlazados con los bloques de overow o desborde (que
contienen los nuevos registros insertados) para mantener la ordenacion global de todos
los registros.
Overow
Primarios
Figura 1: Organizacion secuencial indexada con un ndice multinivel.
El inconveniente principal de la organizacion de un archivo secuencial indexado
reside en que el rendimiento, tanto para buscar en el ndice como para buscar secuen-
cialmente a traves de los datos, se degrada seg un crece el archivo, debido fundamen-
talmente al ndice multinivel estatico asociado.
Por otro lado, la organizacion indexada simple es muy eciente si el ndice den-
so asociado puede almacenarse en memoria. En caso contrario, podemos asociarle, al
igual que en la organizacion anterior, un ndice multinivel; no obstante, debido a las
Irene Martnez C. de la Computaci on e I.A. UAL
Introducci on. Planteamiento del Problema 3
caractersticas basicas de esta organizacion (con registros desordenados), este ndice
solo puede ser dinamico ya que tiene que reestructurarse con las nuevas inserciones de
registros.
As, los problemas que se plantean en estas organizaciones indexadas son:
1. Los ndices son demasiado grandes, y no pueden almacenarse en memoria.
2. Perdida de eciencia en la organizacion secuencial indexada a medida que se
eliminan o insertan nuevos registros, y que da lugar a excesivos accesos a disco.
3. El uso de ndices multinivel estaticos conlleva la necesidad de reorganizar periodi-
camente toda la estructura para mantener su eciencia.
Concluimos entonces, que se requiere:
construir estructuras de ndices multinivel que minimicen el n umero de accesos a
disco, cuando el ndice no pueda almacenarse completo en memoria;
que dichas estructuras deben permitir realizar de forma eciente tanto el acceso
directo a un registro, como el acceso secuencial ordenado a los registros de datos.
En las siguientes secciones vamos a estudiar una serie de estructuras de tipo arbo-
rescente que intentan solucionar los problemas anteriores, y que permiten implementar
ndices multinivel dinamicos que se van adaptando y reorganizando a medida que se
insertan o eliminan nuevos registros. Se trata de:
Arboles AVL.
Arbol AVL 7
El mantenimiento del equilibrio se consigue aplicando al arbol, si es necesario,
una operacion de rotacion despues de cada insercion en la region del subarbol que ha
quedado desequilibrado.
Estos arboles garantizan por tanto, una eciencia mnima en el acceso a un nodo
del arbol. Sin embargo, en general no son aplicables a la mayora de las organizaciones
de archivos debido a que presentan una gran cantidad de niveles, cada uno de los
cuales supone un posicionamiento en disco, lo que hace muy ineciente el acceso a la
informacion.
Ejemplo 2:
A continuacion se muestran dos arboles balanceados, construidos para la misma
secuencia de claves de entrada. El primero, en la gura 4, est a completamente equili-
brado, y el segundo, en la gura 5, es un arbol construido con los metodos de rotacion
de claves de los arboles AVL. La secuencia de claves de los registros insertados es
{B,C,G,E,F,D,A}.
D
B F
A C E G
Figura 4:
Arbol de b usqueda completamente equilibrado.
E
C F
B D G
A
Figura 5:
Arbol de b usqueda construido empleando procedimientos AVL.
Irene Martnez C. de la Computaci on e I.A. UAL
8 Indexando con
Arboles Binarios
2.3.
Arbol binario paginado
Una posible solucion que intenta reducir el n umero de accesos a disco para obtener
un registro, es almacenar, dentro de un mismo bloque o pagina, un conjunto de nodos
del arbol o incluso, si es posible, subarboles completos. Esta organizacion recibe el
nombre de arbol binario paginado.
En la gura 6 se muestra un arbol binario paginado que almacena 7 nodos por
pagina o bloque.
Figura 6:
Arbol binario paginado.
Esta estrategia se basa en la lectura anticipada de nodos que posiblemente esten
relacionados, de manera que al leer un registro ya tengamos con el, en memoria, otros
a los que sera necesario acceder posteriormente, evitandose as costosas operaciones de
posicionamiento en disco.
Los problemas que presenta esta estructura, son similares a los de los arboles bi-
narios de b usqueda, y se derivan de las sucesivas operaciones de insercion de nuevos
registros en las paginas:
Por una parte, puede llegar a obtenerse una estructura desbalanceada consecuen-
Irene Martnez C. de la Computaci on e I.A. UAL
Arboles B. Propiedades 11
3.
Arboles B
Los problemas que presentan las estructuras de arboles binarios estudiadas en la
seccion anterior estan provocados por varios motivos:
El metodo de construccion de estos arboles, que es descendente: la primera clave
se guarda en el nodo raz, y las siguientes se agruparan en los subarboles izquierdo
o derecho.
Como consecuencia, una mala eleccion de la clave del nodo raz, provoca el des-
equilibrio del arbol tras sucesivas inserciones, lo que conlleva un aumento del
costo de las operaciones de acceso.
En el caso de agrupar varios registros en un mismo nodo, al no existir una buena
poltica de situacion de las claves, es muy costoso mantener el arbol equilibrado.
En este caso, ademas, puede ocurrir que los nodos no esten ocupados con la misma
cantidad de registros, encontrandose algunos completos mientras que otros esten
casi vacos, lo que provoca un desequilibrio del arbol al incrementarse la altura
de algunos subarboles.
Un arbol B es una estructura arborescente que organiza varios nodos en un mismo
bloque de disco, y que ademas se mantiene balanceada gracias a la organizacion de
claves dentro de cada nodo y a su metodo de construccion, que es ascendente.
Los arboles B fueron dise nados por Bayer y McCreight en 1972, no obstante vamos
a seguir la denicion y nomenclatura utilizada por D. Knuth [Knu97b].
3.1. Propiedades
Denimos un arbol B de orden n como un arbol que satisface las siguientes propie-
dades:
1. Cada nodo tiene como maximo n descendientes.
2. Cada nodo, excepto la raz y las hojas, tiene como mnimo n/2 descendientes.
Irene Martnez C. de la Computaci on e I.A. UAL
12
Arboles B
3. El nodo raz tiene un mnimo de 2 descendientes (salvo que el arbol tenga un solo
nodo).
4. Todos los nodos hoja se encuentran en el mismo nivel, es decir, a la misma
distancia de la raz.
5. Un nodo no hoja con k descendientes contiene k 1 claves.
6. Un nodo hoja contiene como mnimo n/2 1 claves y un maximo de n 1.
En consecuencia, cada nodo del arbol B esta compuesto por una secuencia ordenada
de claves y un conjunto de apuntadores a nodos descendientes, siendo el n umero de
claves una unidad menor que el n umero de apuntadores.
La gura 8 muestra un ejemplo de arbol B de orden 3. En este caso cada nodo
puede almacenar un maximo de 2 claves de registros y un mnimo de 1, el n umero
maximo de descendientes es 3, excepto los nodos hoja.
G R
B H K T V
Figura 8: Ejemplo: arbol B de orden 3.
3.2. Estructura
Vamos a tratar los arboles B como estructuras de ndices. Los registros de datos se
encuentran en un archivo con organizacion apilada. Para indexarlos, en los nodos del
arbol B se almacenan la clave de b usqueda y la posicion en el archivo de cada uno de
los registros.
Gracamente, la estructura de un nodo de un arbol B de orden n sera la siguiente:
P
1
K
1
( r
1
) P
2
K
2
( r
2
) P
3
........ P
n1
K
n1
( r
n1
) P
n
Irene Martnez C. de la Computaci on e I.A. UAL
Estructura 13
En esta estructura cada P
i
es un apuntador a nodos del nivel anterior (o valores
nulos si es un nodo hoja), y cada valor K
i
es el valor de clave asociada al registro r
i
;
la posicion del registro en el archivo se encuentra en el nodo junto a la clave.
El elemento basico en la construccion de este arbol es la ordenacion que existe en
los nodos:
Las claves se encuentran ordenadas de forma tal que
K
1
< K
2
< .. < K
i
< .. < K
n1
Para cualquier valor de clave K
i
, las claves con valores menores que el de K
i
se
encuentran en el subarbol al que apunta P
i
, mientras que las de valores mayores
se encuentran en el subarbol apuntado por P
i+1
.
Consideremos de nuevo el arbol B de orden 3 de la gura 8. Por claridad, (y en
adelante en el resto de las guras) solo se incluyen las claves de los registros K
i
, y
se representan sombreados los campos correspondientes a los apuntadores P
i
. En este
ejemplo las claves de los registros son letras.
G R
B H K T V
Construccion ascendente
Los arboles B se construyen realizando la evolucion del arbol de abajo hacia arri-
ba. Esta construccion ascendente permite, dados dos nodos, seleccionar la mejor raz
posible tras analizar las claves que contienen. La clave promocionada al siguiente nivel
sera aquella que divida en dos partes iguales la secuencia de claves que quede en el
nivel anterior. La raz, por tanto, emerge desde abajo siendo ya la mas adecuada, en
lugar de seleccionarla desde arriba, evitando as los posibles problemas de desequilibrio
del arbol inherentes a la construccion descendente.
Irene Martnez C. de la Computaci on e I.A. UAL
14
Arboles B
Nodos adyacentes
Se dice que dos nodos son adyacentes si tienen el mismo padre, y son apuntados
por apuntadores adyacentes en el nodo padre. Es decir, dada una clave K
i
, los nodos
apuntados por P
i
y P
i+1
son adyacentes (1 i < n).
En el arbol de la gura 8, los nodos con las claves {B} y {H, K} son adyacentes,
mientras que los nodos con las claves {B} y {T, V } no lo son.
Clave separadora
Dados dos nodos adyacentes apuntados por P
i
y P
i+1
, respectivamente, la clave K
i
es la clave separadora de ambos nodos.
En el arbol de la gura 8, la clave G es la clave separadora de los nodos con claves
{B} y {H, K}.
G R
B H K T V
3.3. Operacion de b usqueda. Acceso directo a un registro.
Supongamos que queremos recuperar del archivo de datos un registro con clave K.
Para poder acceder a el tenemos que buscar en el ndice (arbol B) esta clave ya que
junto a ella se almacenara en el nodo la posicion del registro en el archivo.
La b usqueda comienza examinando el nodo raz, comparando los valores de claves
que este contiene con el valor de la clave K que se busca.
Si no se encuentra en el nodo, si el valor de la clave buscada esta entre el de K
i1
y el de K
i
, hay que continuar la b usqueda por el subarbol al que apunta P
i
.
Si el apuntador seleccionado fuese nulo, se estara en el nivel mas bajo del arbol,
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de b usqueda. Acceso directo a un registro. 15
y la b usqueda terminara sin exito. En otro caso, se repite la operacion buscando en el
nuevo nodo, esto es, en la raz del subarbol apuntado por P
i
.
ALGORITMO de B
USQUEDA:
1. Examinar el nodo raz, comparando K con los valores de llaves que contiene
2. SI no se encuentra en el nodo
SI el valor de la llave esta entre K
i1
< K < K
i
Continuar la b usqueda a partir de P
i
SI P
i
es nulo
estamos en una hoja la b usqueda termina sin exito
OTRO CASO aplicar paso 1. a la raz del subarbol P
i
Ejemplo 4:
B usqueda de la clave M en el arbol de la gura 8.
En primer lugar se busca dentro del nodo raz:
p
1
G p
2
R p
3
Como la clave no se encuentra en este nodo, y es mayor que G y menor que
R, se contin ua buscando en el sub arbol al que apunta p
2
:
p
1
H p
2
K p
3
Puesto que la clave tampoco se encuentra en este nodo, al ser mayor que K, se
continuara buscando en el sub arbol al que apunta p
3
. Pero en este caso, el valor de p
3
es nulo, ya que est a en un nodo hoja, por lo que la b usqueda termina sin exito.
Irene Martnez C. de la Computaci on e I.A. UAL
16
Arboles B
Costo de una operacion de b usqueda
El costo de la operacion de b usqueda depende de la altura o n umero de niveles
del arbol B. Teniendo en cuenta las propiedades que denen estos arboles, es posible
calcular la altura maxima que podra tener un arbol B de orden n si tiene que almacenar
un determinado n umero de claves.
Puesto que vamos a calcular el costo de la b usqueda en el peor caso, esto es, cuando
el arbol tiene el maximo n umero de niveles posible, habra que considerar que los nodos
almacenan solo el mnimo n umero de claves permitido, n/21, y que tienen el n umero
mnimo de descendientes, n/2, (a excepcion del nodo raz y los nodos hoja). Sea n el
orden del arbol B y M el n umero de claves que contiene.
Para un arbol B de orden n, el n umero mnimo de descendientes a partir de la pagina
raz es dos, as que bajo nuestras hipotesis, el segundo nivel del arbol contendra solo
dos nodos. Cada uno de estos nodos tendra a su vez un mnimo de n/2 descendientes.
Por tanto, el tercer nivel contendra 2 n/2 nodos (cada uno de los cuales, con un
mnimo de n/2 descendientes). En general, puede armarse que para cualquier nivel
d de un arbol B, el mnimo n umero de descendientes que se extienden a partir de ese
nivel sera 2 n/2
d1
.
Profundidad
Num. mn. de
descendientes
1 (raz) 2
2 2 n/2
.
.
.
.
.
.
d (hojas) 2 n/2
d1
Puesto que un arbol B con M claves tiene M +1 descendientes desde su nivel hoja,
puede establecerse la siguiente relacion:
M + 1 2 n/2
d1
siendo d la altura del arbol (en el nivel hoja). Despejando d en la desigualdad anterior,
se obtiene que:
d 1 + log
n/2
(
M + 1
2
) .
Por tanto, la altura de un arbol B de orden n con M claves esta en O(log
n/2
(M)).
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de inserci on 17
En conclusion, el costo de un operacion de b usqueda en un arbol B de orden
n con M claves almacenadas sera, en el peor caso, del orden de
O(log
n/2
(M))
.
Ejemplo 5:
Para un arbol B de orden 512 que contenga 1 millon de claves:
d 1 + log
512/2
10
6
+ 1
2
= 3.3664
lo que signica que se necesitan a lo sumo 3 accesos para recuperar una clave (y uno
mas para recuperar el registro del archivo).
En un arbol binario de b usqueda, en el mejor caso (completamente equilibra-
do), seran necesarios log
2
M accesos, es decir, aproximadamente 20 accesos al ndice.
3.4. Operacion de insercion
Supongamos que insertamos un nuevo registro de datos en el archivo cuya clave es
K; necesitaremos en el arbol B la referencia a este nuevo registro. Por tanto tendremos
que buscar el nodo adecuado donde insertar la referencia al registro, esto es, su valor
de clave y su posicion en el archivo.
Veamos ahora el metodo por el cual los arboles B mantienen un control sobre la
evolucion del arbol durante la insercion, de forma que siempre este equilibrado.
Division o separacion de nodos
Seg un las propiedades de los arboles B, cuando un nodo de un arbol B de orden
n almacene n 1 claves estara completo, y no podra guardar ninguna clave mas. Si
el proceso de insercion conduce hasta el, se producira una situacion de overow o
saturacion del nodo, que se resuelve dividiendo en dos el nodo saturado.
Irene Martnez C. de la Computaci on e I.A. UAL
18
Arboles B
La division o separacion del nodo se realiza creando un nuevo nodo adyacente al
nodo saturado y dejando la mitad de las claves en cada uno. La clave central de la
secuencia que almacenan conjuntamente sera la clave separadora de estos dos nodos, y
promocionara al nodo padre en el nivel superior.
Ejemplo 6:
Consideremos el siguiente nodo de un arbol B de orden 5, que podra almacenar
como maximo 4 valores de clave:
M R T W
Si tenemos que insertar la clave V en este nodo, se satura, y por tanto, hay que
dividir el nodo y repartir las claves. La nueva secuencia de claves sera {M,R,T,V,W}.
La clave T sera la clave separadora de ambos nodos, y promocionara al nodo
padre:
M R
T
V W
En la operacion de insercion de una nueva clave en un arbol B de orden n hay que
tener en cuenta los siguientes aspectos:
1. Las inserciones de nuevos valores de clave se realizan siempre en los nodos ho-
ja; solo se insertaran en nodos interiores las claves que promocionen tras una
operacion de division en un nodo saturado.
2. Si hay espacio en el nodo hoja se inserta la nueva clave (junto con el puntero al
registro).
3. Si no lo hay, el nodo se satura, y es necesario dividirlo, promocionando la clave
central al nodo padre.
4. Si tras la promocion de una clave, se satura el nodo padre, habra que repetir
el proceso de division-promocion. Esto puede provocar la creacion de un nuevo
nodo raz.
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de inserci on 19
5. Si se ha creado una nueva raz para el arbol, esta guardar a inicialmente solo la
clave separadora, y los primeros apuntadores P
1
y P
2
direccionaran los dos nodos
resultantes de la division.
Un algoritmo general para la insercion de una clave en un arbol B podra ser de la
siguiente manera:
ALGORITMO de INSERCI
ON:
1. Recorrer el arbol como un ndice, comparando el valor de la nueva clave
a insertar, hasta localizar el nodo hoja apropiado donde debe insertarse de
forma que se mantenga el orden.
2. SI el nodo no esta completo, agregar la clave en la posicion adecuada en la
secuencia.
3. EN OTRO CASO (el nodo esta completo en el momento de la insercion),
REPETIR:
a) Dividir el nodo saturado, creando dos nodos adyacentes.
b) Ordenar todas las claves (incluida la nueva), y seleccionar la clave
central como clave separadora de los dos nuevos nodos.
c) Insertar la clave separadora en la posicion adecuada dentro del nodo
padre. Sea k esa posicion (1 k < n).
SI no existe nodo padre, crear una nueva raz (k = 1).
d) Guardar el resto de las claves en los dos nodos: las que son menores
que la clave separadora en el primer nodo, y el resto en el segundo.
e) Actualizar los apuntadores del nodo padre en la posicion donde se ha
insertado la clave separadora: P
k
apuntara al primer nodo, y P
k+1
al
segundo.
MIENTRAS al promocionar la clave se produzca overow.
Irene Martnez C. de la Computaci on e I.A. UAL
20
Arboles B
Construccion ascendente de un arbol B
A continuacion veremos con un ejemplo como se construye de forma ascendente un
arbol B de orden 3 realizando inserciones sucesivas de las claves {B,A,D,C,R,P,G}.
Ejemplo 7: Construccion de un arbol B.
Partiendo de un nodo hoja vaco de un arbol B de orden 3, se inserta la primera
clave B:
B
A continuacion, se inserta la clave A en el mismo nodo, reordenando las claves:
A B
La siguiente clave que ha de insertarse es la D. Esto provoca una situaci on de
overow (o saturaci on) en el nodo, ya que el maximo n umero de claves que puede
almacenar es 2. La secuencia de claves que se tiene es {A,B,D}. El nodo se divide en
dos y se crea una nueva raz que contiene la clave separadora B:
B
A D
Para buscar el lugar adecuado de insercion de la clave C, hay que recorrer el arbol
desde la raz, siguiendo un procedimiento similar al usado en los arboles binarios de
b usqueda; habra que comparar la clave sucesivamente con las que hay dentro del nodo, de
modo que si el valor es menor se sigue por la rama izquierda, y si es mayor, se contin ua
comparando con las restantes claves del nodo hasta encontrar la rama adecuada por la
que seguir el recorrido. Siguiendo este proceso, la clave C se insertar a en el mismo
nodo que D, quedando este completo:
B
A C D
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de inserci on 21
La clave siguiente es R, que debe insertarse en el nodo hoja con las claves C y
D. Se produce una nueva situaci on de saturaci on dentro del nodo, por lo que hay
dividirlo: la secuencia de claves es {C,D,R}, as que la clave D promociona al nodo
raz.
Este tiene espacio para esta clave, as que el arbol queda:
B D
A C R
La siguiente clave a insertar es P. Como es mayor que la clave B, se compara
con D que tambien es menor; al ser esta la ultima clave de la secuencia del nodo se
sigue comparando en el nodo al que apunta el ultimo apuntador, que es el que contiene
la claveR. Como hay espacio en el nodo, se inserta reordenando, con lo que el arbol
queda:
B D
A C P R
La ultima clave que se inserta es G. Le corresponde el nodo que contiene las claves
P y R, que est a completo, as que se divide en dos y la clave P promociona al
nodo raz. Pero el nodo raz tambien est a completo, as que hay que resolver esta nueva
situacion de saturaci on dividiendo el nodo raz en dos. En este caso, la secuencia de
claves sera {C,D,P}; por tanto, se promocionara la clave D, insertandose en una
nueva raz del arbol, que ahora tendra un nivel mas.
El arbol B resultante sera:
D
B P
A C G R
Irene Martnez C. de la Computaci on e I.A. UAL
22
Arboles B
3.5. Operacion de eliminacion
En este caso se ha eliminado un registro de clave K del archivo de datos y se quiere
eliminar su referencia (clave y posicion) del arbol B.
La operacion de eliminacion es la opuesta a la insercion, y deben mantenerse las
restricciones relativas al mnimo n umero de claves almacenadas por nodo.
Concatenacion y redistribucion
La operacion de eliminacion de una clave en un arbol B puede provocar que el
n umero de claves que queden en el nodo sea menor que la cantidad mnima determinada
por el orden del arbol, provocando una situacion de underow o insuciencia en dicho
nodo. Para resolver esta situacion tenemos dos estrategias:
Redistribuir o repartir las claves de un nodo adyacente entre ambos nodos,
quedando los dos con un n umero de claves mayor o igual que la cantidad mnima
requerida. En esta operacion tambien se vera afectada la clave separadora de los
dos nodos, que debera cambiar, y que sera la clave central de la secuencia que se
forme al unir el conjunto de claves del nodo en underow, la clave separadora y
las claves del nodo adyacente.
Se podra realizar la redistribucion de claves entre los dos nodos siempre que
el nodo adyacente almacene un n umero de claves mayor que el mnimo; as se
evitara una nueva situacion de underow en el segundo nodo.
Concatenar las claves que han quedado en el nodo con las de un nodo adyacente.
Es una operacion inversa a la division, y por tanto al unir dos nodos tendremos
que incluir en la posicion central de la nueva secuencia de claves, la clave
separadora de ambos nodos, que se encuentra en el nodo padre.
La concatenacion podra llevarse a cabo cuando el nodo adyacente solo almacene el
n umero mnimo de claves, ya que en este caso el nodo resultante tendra capacidad
suciente para todas las claves.
La situacion de insuciencia en un nodo se resuelve realizando, con un nodo ad-
yacente, una operacion de redistribucion, y si no es posible, una de concatenacion.
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de eliminaci on 23
Veamos con un ejemplo estas dos soluciones en un arbol B de orden 5. El n umero
mnimo de claves para un nodo hoja sera 2 (= 5/2 1).
Ejemplo 8:
Eliminaci on de la clave 55 del siguiente arbol: redistribuci on
65 80
55 60 70 72 79 85 90 92
Como el nodo adyacente tiene mas de 2 claves, se reparten las claves entre am-
bos nodos, incluida la clave separadora 65; las claves rotan hacia los nodos de la
izquierda:
70 80
60 65 72 79 85 90 92
La clave separadora de la nueva secuencia {60,65,70,72,79} sera 70.
Volvemos a eliminar la clave 55 : concatenaci on
65 80
55 60 70 75 85 90 92
Como no es posible hacer redistribuci on, se concatena con el nodo adyacente: se
unen las claves de ambos mas la clave 65 que los separaba:
80
60 65 70 75 85 90 92
En el arbol quedan 2 nodos hoja, y en el nodo raz, la clave separadora de ambos.
Irene Martnez C. de la Computaci on e I.A. UAL
24
Arboles B
En la operacion de eliminacion de una clave, ademas de controlar el n umero de
claves que quedan tras la eliminacion, tenemos que tener en cuenta dos aspectos:
1. Las eliminaciones han de realizarse siempre en nodos hoja. En el caso en que la
clave a eliminar este en un nodo interior, primero hay que intercambiarla con
su sucesora en la secuencia, que estara en un nodo hoja, y despues eliminarla de
ese nodo.
2. Tras una concatenacion, tambien hay que considerar la posible propagacion ha-
cia arriba de la situacion de insuciencia que puede dar lugar incluso a la
eliminacion del nodo raz, y por tanto, a que se reduzca la altura del arbol.
En consecuencia, un algoritmo general para la eliminacion de una clave en un arbol
B puede ser el siguiente:
ALGORITMO de ELIMINACI
ON:
1. Recorrer el arbol hasta localizar la clave a eliminar K < K
i
.
2. SI la clave no esta en un nodo hoja, intercambiarla con su sucesora inmediata,
que estara en el nodo hoja al que se llega recorriendo en inorden el subarbol al
que apunta P
i
.
3. Eliminar la clave del nodo hoja.
4. SI el n umero de claves que quedan en el nodo es menor que el mnimo permitido,
examinar los nodos adyacentes y:
a) SI uno de los nodos tiene mas del n umero mnimo de claves, realizar
redistribucion cambiar clave separadora de los nodos implicados
b) EN OTRO CASO, (los dos tienen solo el mnimo) realizar operacion de
concatenaci on la clave separadora del nodo padre se une al nuevo nodo.
b.1. SI se ha bajado la ultima clave del nodo raz, el arbol perdera un nivel.
b.2. EN OTRO CASO, aplicar el paso 4 al nodo padre.
A continuacion vamos a ver, con un ejemplo, las posibles situaciones que pueden
presentarse en una operacion de eliminacion.
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de eliminaci on 25
Ejemplo 9:
Partiremos de un arbol B de orden 4, por lo que el mnimo n umero de claves en
un nodo sera 1.
51
11 66 78
02 15 53 54 68 69 71 79 84
Caso 1: Eliminacion en un nodo hoja sin provocar insuciencia.
Para mostrar esta situaci on eliminamos la clave 68 del arbol anterior. Quedan
2 claves en el nodo hoja, y por tanto, no se produce insuciencia. El arbol queda:
51
11 66 78
02 15 53 54 69 71 79 84
Caso 2: Eliminacion de una clave situada en un nodo que no es hoja.
Eliminaci on de la clave 51 del nodo raz. Como las eliminaciones se realizan en
nodos hoja, hay que intercambiarla por su sucesora en inorden que es la clave 53.
86
< K
i
para ambos bloques
3. Si ha habido saturacion en el conjunto secuencia:
insertar nueva clave separadora K
.
Si se ha resuelto con concatenacion:
Eliminar la clave separadora en el arbol B del ndice que separaba
los dos bloques concatenados.
Resolver posibles situaciones de insucencia de nodos
Ejemplo 14:
Vamos a realizar dos eliminaciones consecutivas de registros del siguiente arbol B
+
de orden 3. El mnimo n umero de registros permitido en los bloques es 1:
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de eliminaci on 41
67 91
53 74 89 95
40 50 53 55 67 70 74 78 89 90 91 93 95
Eliminaci on el registro con clave 91. Se busca el bloque donde se encuentra
recorriendo el ndice: el sexto. El bloque queda con el mnimo n um. de registros que
puede contener, no tenemos que realizar ning un cambio mas. En el ndice dejamos la
clave 91 ya que sigue diferenciando los registros del bloque quinto y el sexto:
67 91
53 74 89 95
40 50 53 55 67 70 74 78 89 90 93 95
Eliminaci on del registro con clave 93 en el arbol resultante. Se busca el bloque
correspondiente, el sexto, quedara ahora por debajo del mnimo: insuciencia. Inten-
tamos hacer redistribucion con el bloque adyacente; como no es posible, concatenamos.
Despues hay que eliminar en el ndice la clave que los separaba, 95. El arbol queda
as:
67 89
53 74 91
40 50 53 55 67 70 74 78 89 90 95
La eliminacion de la clave separadora 95 da lugar a una situaci on de insucien-
cia en el nodo hoja, que resolvemos haciendo redistribuci on con su hermano izquierdo.
Irene Martnez C. de la Computaci on e I.A. UAL
42
Arboles B
+
4.6. Operacion de acceso secuencial
Una de las ventajas de las estructuras de arboles B
+
es la facilidad de realizar la
lectura ordenada de todos los registros de datos. Para ello, basta con localizar el primer
bloque del conjunto secuencia recorriendo en inorden el conjunto ndice hasta llegar a
la primera hoja, que es la que almacena la direccion de este bloque en el campo Pb
1
.
A partir de este bloque se van leyendo los demas siguiendo la lista enlazada de
bloques. Cada bloque mantiene los registros ordenados; solo hay que llevar los bloques
a memoria y leer sus registros.
Localizacion del primer bloque:
78
67 91
53 74 89 95
40 50 53 55 67 70 74 76 78 89 91 93 95 99
4.7. Resultados
Tras estudiar las operaciones basicas de mantenimiento de un arbol B
+
podemos
destacar los siguientes aspectos:
El arbol B
+
es una de las estructuras mas adecuadas para organizar datos, y
esta especialmente indicada en situaciones en las que los datos se procesan tanto
de modo directo como de modo secuencial.
La estructura de un arbol B
+
esta siempre equilibrada, y no se producen las largas
cadenas de registros de desborde que se generan en la organizacion secuencial
indexada (con ndices estaticos).
Irene Martnez C. de la Computaci on e I.A. UAL
43
Debido a lo anterior, tampoco es necesario realizar reorganizaciones periodicas
del archivo de datos.
Otra ventaja importante es que la eciencia de la insercion o de la recuperacion
no se ve afectada por el orden de insercion de los registros o la distribucion de
sus claves.
El inconveniente de los arboles B
+
es la necesidad de almacenamiento para el
ndice, y como consecuencia, el n umero de accesos necesarios si el arbol del ndice
no puede almacenarse completo en memoria principal.
5. Conclusiones
Los arboles B y B
+
poseen unas caractersticas muy interesantes que les hacen ser
muy utilizados en la organizacion de los ndices en la mayora de los sistemas. Las
principales son:
Ambos producen arboles balanceados, de forma que los arboles que generan no
evolucionan de forma desigual en unas ramas y en otras, ni dependen del orden
de insercion de los registros.
Los arboles crecen de abajo hacia arriba, por lo que en todo momento, la mejor
clave separadora se encuentra en la raz.
Permiten un acceso rapido a cualquier nodo del arbol, y por tanto a los registros
a los que apuntan.
Las operaciones de mantenimiento, tanto inserciones como eliminaciones, son
muy sencillas y no afectan al equilibrio del arbol.
Son estructuras paginadas de ndices, lo que signica que llevan bloques comple-
tos de informacion a memoria, y pueden implementarse como arboles virtuales
(dejando en memoria los bloques de uso mas reciente).
Para seleccionar una u otra estructura deben analizarse tanto las caractersticas
que los diferencian, como la aplicacion concreta para la que se necesitan. Veremos las
diferencias en el siguiente apartado.
Irene Martnez C. de la Computaci on e I.A. UAL
44 Conclusiones
Arbol B frente a arbol B
+
A continuacion vamos a contrastar las caractersticas que diferencian a las dos
estructuras:
Los arboles B contienen informacion en los nodos que se agrupa en forma de
parejas del tipo <clave,puntero al registro>. Estas parejas se distribuyen dentro
de los nodos del arbol B, por lo que puede encontrarse la posicion de un registro
en cualquier nivel del arbol, sin necesidad de llegar a un nodo hoja, como ocu-
rre siempre en los arboles B
+
, donde los registros de datos se encuentran en el
conjunto secuencia.
Debido a la estructura de los nodos del arbol B, para un mismo tama no de pagina
o nodo, se podran almacenar menos claves que en un nodo de arbol B
+
, que solo
almacena claves. Por tanto, el ndice en un arbol B puede ser de mayor tama no,
y el del arbol B
+
de menor altura (al ser de mayor orden).
En un arbol B, la lectura ordenada de todos los registros del archivo supone el
recorrido completo y ordenado (en inorden) del arbol, con sus correspondientes
accesos a disco.
Las principales caractersticas de los arboles B
+
que los diferencian de las es-
tructuras en arbol B, se derivan del papel del conjunto secuencia: manteniendo
enlazados todos los bloques de registros ordenados se permite un recorrido se-
cuencial muy eciente.
A pesar de que el inconveniente principal de los arboles B
+
es la necesidad de
alcanzar siempre un nodo hoja para obtener un registro, sin embargo la estructura
de los nodos del arbol es mas sencilla que la de los arboles B, y por tanto, las
operaciones de actualizacion del ndice son mas ecientes, debido, principalmente,
a que en la mayora de los casos solo se ven afectadas las entradas del primer nivel
del ndice.
Irene Martnez C. de la Computaci on e I.A. UAL
Bibliografa 45
Bibliografa
[Cor90] T. Cormen, C. Leiserson y R. Rivest. Introduction to Algorithms. The
MIT Press, 1990.
[Fol98] M.J. Folk y B. Zoellick. File Structures, third edition. Addison-Wesley,
1998.
[Hor93] E. Horowitz, S. Sahni y S. Anderson-Freed. Fundamentals of Data Struc-
tures in C. Computer Science Press, 1993.
[Knu97b] D. Knuth. The Art of Computer Programming: Sorting and Searching,
vol. 3, second edition. Addison-Wesley, 1997.
[Liv90] P. E. Livadas. File Structures. Theory and Practice. Prentice Hall, 1990.
[Luq98] I. Luque, J.A. Romero y M.A. Gomez-Nieto. Ficheros: Organizaciones
Clasicas para el Almacenamiento de la Informacion. Servicio de Publi-
caciones de la Universidad de Cordoba, 1998.
[Sal88] B. Salzberg. File Structures. An analytic approach. Prentice Hall, 1988.
[Smi87] P. Smith y M. Barnes. Files and Databases: An Introduction. Addison-
Wesley, 1987.
[Tha88] A. L. Tharp. File Organization and Processing. John Willey and Sons,
1998.
Irene Martnez C. de la Computaci on e I.A. UAL