Está en la página 1de 34

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

1
Estructura de Datos
rboles B rboles B* rboles B
+
Prof.: Mauricio Solar Prof.: Lorna Figueroa
Primer Semestre,
2010
2
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Introduccin
Necesidad de mantener ndices en almacenamiento externo para
acceso a bases de datos,
Problema: grave problema de la lentitud de estos dispositivos
se pretende aprovechar la gran capacidad de almacenamiento
para mantener una cantidad de informacin muy alta
organizada de forma que el acceso a una clave sea lo ms
rpido posible.
La letra B no significa "binario":
Los rboles-B nunca son binarios.
Tampoco es porque sean rboles de bsqueda, ya que en
ingls se denominan B-trees.
Tampoco es porque sean balanceados, ya que suelen no
serlo.
3
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Introduccin
Normalmente se usan rboles binarios de bsqueda para ordenar
listas de valores, minimizando el nmero de lecturas, y evitando
tener que ordenar dichas listas.
Desventajas ABB:
Es difcil construir un ABB perfectamente equilibrado.
El nmero de consultas en el rbol no equilibrado es
impredecible.
El nmero de consultas aumenta rpidamente con el
nmero de registros a ordenar.
Para evitar estos inconvenientes se usan rboles-B, sobre todo
cuando se ordenan archivos, convertido en el sistema de
indexacin ms utilizado.
4
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Introduccin
Problema de los ABB al usar almacenamiento secundario:
la bsqueda de un elemento requiere muchos accesos a disco
(extremadamente lento comparado con un acceso a memoria)
Ej.: para un milln de elementos
Naccesosa disco =O(h) =O(log
2
1.000.000) 20
Solucin: conseguir mayor grado de ramificacin para tener
menor altura en el rbol.
5
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Introduccin
Particionar el ABB en pginas
Mantener en memoria una de las pginas
Con pginas de 100 nodos en un rbol de 10
6
nodos:
Nmedioaccesos =(log
100
10
6
) =3 <<20
6
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Introduccin
Problemas de los AVL:
Tienen una eficiencia F(n) =logn
Su altura depende de la cantidad de nodos.
En el nivel k , tendr2
k+1
1nodos.
Cuando se tienen un conjunto masivo de datos,
Ej.; milln de registros de clientes de un banco equivalen
a k 19 niveles,
Los datos estarn ubicados en discos.
El tiempo de acceso a disco es notablemente superior que el de
acceso a RAM.
Minimizar estos accesos al disco y maximizar el uso de
RAM
7
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Introduccin
Solucin: rboles de bsqueda marios.
Cada nodo puede tener hasta msubrboles.
Las claves se organizan en AVL.
Objetivo: Que la altura del rbol sea pequea, dado que las
iteraciones y los acceso a disco dependen de ello.
La altura de un rbol m-ario (multicamino) completo es:
O(log
m
N)
Ej.: para un milln de elementos y m=10
Naccesosa disco =O(h) =O(log
10
1.000.000) =6
8
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B
El rbol B es una solucin particular de esta tecnologa
9
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Arboles B (Bayer y McCreight)
Son rboles multicamino con una construccin especial en
forma ascendente,
Permite mantener el rbol balanceado a bajo costo.
Los archivos dedicados a usuarios, a sistemas de BD, y a
mtodos de acceso de propsito general, han sido propuestos e
implementados usando rboles-B.
El rbol-B es, de hecho, la organizacin
estndar para ndices en un sistema de BD.
10
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Arboles B Definicin
Los B-rboles son rboles cuyos nodos pueden tener un nmero
mltiple de hijos:
rbo B de orden m
11
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Arboles B
Tienen por objetivo agrupar en cada nodo ms de un elemento
de manera que el acceso a un elemento cualquiera tenga lugar
visitando un nmero de nodos inferior al caso del ABB.
Esto es til cuando el rbol se halla almacenado en un
dispositivo de acceso lento, como disco duro, y acceder a un
nodo implica acceder a un sector distinto del disco.
En estos casos se hace coincidir un sector fsico con el
tamao de un nodo, de manera que si un elemento ocupa e
bytes y un sector fsico tiene un tamao f, en cada nodo se
almacenarn elementos.
==> Aprovecha al mximo el acceso al disco.
f
e
12
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Arboles B
Generalizacin de un rbol 2-3,
Un rbol 2-3 es un rbol B de orden 3
La ventaja de los rboles-B reside en los mtodos para insertar
y borrar registros, que dejan siempre el rbol balanceado.
Al igual que en el caso de los ABB, inserciones aleatorias de
registros dentro de un archivo pueden dejar el rbol sin
balancear.
13
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B caractersticas
Un parmetro muy importante en los rboles-B es el orden(m).
El orden de un rbol-B es el nmero mximo de ramas que
pueden partir de un nodo.
Si k es el nmero de ramas que parten de un nodo de un rbol-B,
el nodo contendrk-1 claves.
El rbol estordenado.
Todos los nodos terminales, (nodos hoja), estn en el mismo
nivel.
Todos los nodos intermedios, excepto el raz, deben tener entre
m/2 y m ramas no nulas.
14
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B caractersticas
Todos los nodos intermedios, excepto el nodo raz, deben tener
entre m/2 y m ramas no nulas.
El mximo nmero de claves por nodo es m-1.
El mnimo nmero de claves por nodo es (m/2)-1.
La profundidad (h) es el nmero mximo de consultas para
encontrar una clave.
Perfectamente equilibrado.
Disminuye la profundidad del rbol.
15
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B caractersticas
Pgina: nombre de los nodos.
Se les accede en bloque.
Como mximo: m ramas y m1claves
Como mnimo: (m/2)+1 ramas y (m/2) claves
La raz puede estar vaca o incluso tener 1 clave, con 2 ramas.
16
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Cada nodo en rbol-B de orden d contiene a lo ms 2d claves
y 2d+1 punteros:
rboles B Propiedades
El nmero de claves puede variar de un nodo a otro, pero cada
uno debe tener al menos d claves y d+1 punteros.
Como consecuencia, cada nodo est completo al menos a la
mitad de su capacidad.
Nodo: un mnimo de d elementos y mximo de 2d elementos,
excepto la raz, que puede tener un mnimo de un elemento.
17
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B
rbol B de orden 5:
18
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Si k
1
, k
2
, ..., k
m
denotan los elementos del nodo y P
0
, P
1
, .., P
m
los hijos, entonces:
P
0
contiene los elementos menores que k
1
P
i
contiene los elementos mayores que k
i
y menores que k
i+1
P
m
contiene todos los elementos mayores que k
m
Todas las ramas tienen la misma longitud.
rboles B Propiedades
19
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Si se recorre en profundidad: lista ordenada
Ejemplo: rbol B de orden d=2: (mn. 2 y mx. 4)
rboles B Propiedades
20
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo: rbol B de orden 2
21
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo: rbol B de orden 2
66
29 55 75 87 94
15 19 22 26 35 41 58 62 69 73 77 81 89 93
96 98 99
1. Orden del rbol: 2
2. Alturadel rbol: 3
3. Todas las pginas contienen: 2(d),3(d+1) o 4(2d+1) elementos;
excepto laraz (1)
4. Los elementos dentro del rbol seencuentran ordenados
en formacreciente(izq. ader.)
5. Todas las hojas estn al mismo nivel
22
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
TADarbolB: ArbolB.h
/*Definicin de los Datos del TAD*/
#definem5 // Orden del BTreecomo mximo: mramas y
m1claves
typedef int tipoClave
typedef struct pagina {
tipoClaveclaves[m]
// m{0..4} Numero de claves serfor (k=1 k m
k++)
struct pagina* ramas[m]
int cuenta //Numero de claves de la pagina
} Pagina
23
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
TADarbolB: ArbolB.h
// Definicin de las operaciones del TAD
voidescribeNodo(Pagina* actual)
int nodoLLeno(Pagina* actual)
// Devuelve verdadero si el numero de claves es m1
int nodoSemiVacio(Pagina* actual)
// Devuelve .V. si el numero de claves es menor a m/2
voidcrearArbolB(Pagina**raiz)
Pagina *buscar (Pagina *actual, tipoClavecl, int * indice)
Pagina *buscarNodo(Pagina*actual, tipoClavecl, int * k)
voidinsertar (Pagina **raiz, tipoClavecl)
24
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
TADarbolB: ArbolB.c
int nodoLLeno(Pagina* actual) {
return(actual->cuenta ==m 1)
}
voidescribeNodo(Pagina* actual) {
int k printf("\nNodo: ")
for (k =1 k <=actual>cuenta k++)
printf(" %d",actual>claves[k])
printf("\n")
}
int nodoSemiVacio(Pagina* actual) {
return(actual->cuenta <m/2)
}
25
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
TADrbol B: bsqueda
Nota: el diagrama slo muestra el
criterio de bsqueda en una
pgina, falta el ciclo de bsqueda
tras actualizar el puntero a la
pgina hija
26
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
TADrbol B: bsqueda
Situarse en el nodo raz del rbol,
si la clave se encuentra ah, terminar;
si no, seleccionar de entre los hijos el que se encuentra entre
dos valores de clave que son menor y mayor que la buscada
respectivamente,
repetir el proceso hasta encontrar la clave.
En caso de que se llegue a una hoja y no se pueda proseguir la
bsqueda, la clave no se encuentra en el rbol.
27
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
TADrbol B: Algoritmo de bsqueda
1. Seleccionar como nodo actual la raz del rbol.
2. Comprobar si la clave se encuentra en el nodo actual:
1. 1. Si la clave est, fin.
2. 2. Si la clave no est:
Si es en una hoja, no se encuentra la clave. Fin.
Si no, 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 (buscar 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-simosi K
i
<K <K
i+1
) y
volver al segundo paso.
28
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: insercin
Crecen Hacia Arriba, hacia la raz
Las claves que se insertan, siempre van en un nodo hoja.
Por ser perfectamente equilibrado, toda hoja est al mismo
nivel.
No hay elementos repetidos.
29
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: algoritmo de insercin
1. Se busca la clave a insertar en el rbol.
Se desciende por el camino de bsqueda hasta una hoja.
2. Estllena la pgina? (actual->cuenta ==m 1)
Hay lugar (cuenta <m 1 ):
Inserta en ese nodo. Actualiza cuenta. Fin proceso
Se llen: No se puede insertar all:
Se divide la pgina en 2 paginas al mismo nivel que todas
las dems, extrayendo la clave mediana ( para m=5 es la
clave[3] )
Con esta mediana, se sube por el camino de bsqueda y se
comienza el proceso desde el paso 1 nuevamente.
Esta proceso de ascensin de la clave mediana puede llegar hasta
el nodo raz, que tambin se partiry su mediana, subiendo, ser
la nueva raz de todo el rbol B.
30
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo de insercin
Insertar el 9 causa divisin en dos
sigue
31
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo de insercin
Se propaga hacia arriba,
causando otra divisin
32
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo de Insercin en rbol B m=5
Secuencia de Insercin: 6,11,5,4,8,9,12,21
33
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo de Insercin en rbol B m=5
Secuencia de Insercin: 6,11,5,4,8,9,12,21
34
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo de Insercin en rbol B m=5
Secuencia de Insercin: 6,11,5,4,8,9,12,21
35
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo de Insercin en rbol B m=5
Secuencia de Insercin: 6,11,5,4,8,9,12,21
Continuar insertando:14, 10, 19, 28, 3, 17, 32, 15, 16, 26, 27.
36
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado
Similar a la insercin teniendo en cuenta que ahora, en lugar de
divisiones, se realizan uniones.
Existe un problema adicional: las claves a borrar pueden
aparecer en cualquier lugar del rbol.
Solucin: cuando se borra una clave que est en un nodo
interior, primero hacer un intercambio de este valor con el
inmediato sucesor en el rbol, (o con antecesor inmediato)
es decir, el hijo ms a la izquierda del hijo derecho de esa
clave. (o el hijo ms a la derecha del hijo izquierdo)
37
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado
Las operaciones a realizar son:
1. Redistribucin: se utiliza 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.
2. Unin: se utiliza 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 que se encuentra en el padre.
38
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
1. Redestribucin (equilibrar pgina)
rboles B: borrado
39
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo de redistribucin
se aaden elementos de la pgina
derecha, redistribuyendo de forma
equitativa los elementos de ambas.
Lapginaizquierdanopuedeprestar nodos;
Laderechas EQUILIBRADO
40
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
La redistribucin:
Ejemplo de redistribucin
(a) Partedeun rbol-B antes, y (b) despus dela redistribucin denodos
entredos vecinos.
Ntese la posicin final de la claveintermedia, 50.
La redistribucin en nodos de igual tamao ayuda a evitar underflow
en sucesivos borrados.
41
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
2. Unin de pginas (fusionar, encadenar)
rboles B: borrado
42
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo de unin de pginas
las pginas vecinas no tienen
elementos de sobra, entonces se une
con la pgina vecina izquierda,
utilizando como elemento intermedio
unaclavedel padre(la clave10), que
las enlaza en la pgina del nivel
superior.
43
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo de fusin de pginas y la situacin final de la clave
separadora.
Ejemplo de unin
Borrado que origina una
fusin de pginas
el rbol re-balanceado
44
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
TADrbol B: borrado
Diagrama de flujo del
borrado
Nota: el diagrama slo muestra el
caso de subocupacin de una pgina,
no el caso completo en que se puede
producir subocupacin en el padre
(faltaciclo)
45
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
TADrbol B: Algoritmo borrado
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. Hacer 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).
46
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Arboles B - Borrado
El borrado de la clave 17 requiere
encontrar la siguiente clave en secuencia,
21, e intercambiarla con la posicin
vacante.
La siguiente clave siempre est en la hoja
ms a la izquierda del subrbol apuntado
por el puntero derecho de la posicin vaca.
47
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
Secuencia de claves a borrar:
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
48
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
rboles B: borrado ejemplo
49
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
rboles B: borrado ejemplo
50
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
51
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
rboles B: borrado ejemplo
52
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
53
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
54
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
55
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
56
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
57
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
58
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
59
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
60
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
61
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
62
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
63
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
64
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B: borrado ejemplo
25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15
65
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Variantes: rboles B* (Knuth)
Proporciona mejor utilizacin del almacenamiento que los
rboles B.
Propone nuevas reglas para el mantenimiento.
Los nodos deben estar 2/3 llenos siempre, (en vez de slo la
mitad).
La nueva construccin logra una bsqueda ms rpida que el
B+pero una insercin ms costosa.
66
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Variantes: rboles B* (Knuth)
Si cada nodo tiene un mximo de mdescendientes.
Cada nodo, excepto la raz, tiene al menos (2m-1)/3 hijos.
Si es de orden m=5
Numero mximo por nodo: 4 claves y 5 ramas
Numero mnimo por nodo: 3 claves y 4 ramas
67
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Variantes: rboles B* (Knuth)
Recordar que en un Arbol B
Cada nodo, excepto la raz, tiene al menos (m/2)+1 hijos.
Numero mximo por nodo: 4 claves y 5 ramas
Numero mnimo por nodo: 2 claves y 3 ramas
68
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Propiedades de un B* de orden m:
Cada pgina tiene un mximo de mdescendientes.
Todas las pginas, excepto la raz y las hojas, tiene al menos
(2m-1)/3) descendientes.
La raz tiene al menos dos descendientes, a menos que sea
hoja.
Todas las hojas se encuentran al mismo nivel.
Una pgina que no sea hoja, con K descendientes contiene
K 1claves.
Una pgina-hoja contiene al menos (2m 1)/3 1claves, y no
ms de m 1 claves.
rboles B* (Knuth)
69
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B*
Caractersticas
Mejoran la eficiencia del acceso directo y la sobrecarga de
reorganizar el rbol en la insercin y el borrado
Aseguran ocupacin de pginas 66,6% (2/3).
Cambia la divisin y fusin de pginas
Divisin por superocupacin
Pasar elementos al vecino
Cuando el vecino tambin est lleno, convertir las dos
pginas en tres.
Fusin por subocupacin
Tres pginas se convirtienen dos.
70
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
La insercin del rbol-B* emplea un esquema de redistribucin
local para retrasar la divisin hasta que dos nodos hermanos estn
llenos.
Entonces los dos nodos se dividen en tres cada uno lleno en
2/3 partes.
Este esquema garantiza que la utilizacin del almacenamiento
es al menos del 66%, mientras que solamente requieren una
moderada modificacin de los algoritmos de mantenimiento.
Esto debe ser sealado ya que el incremento en la utilizacin
del almacenamiento tiene el efecto lateral de acelerar la
bsqueda ya que la altura del rbol resultante es ms pequea.
rboles B* (Knuth)
71
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B*
Insercin con redistribucin
Dejar la mitad a cada lado
72
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B*
Insercin con divisin
Cada pgina recibir 2N/3 claves y suben dos claves a la
pgina superior
73
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B*
Insercin con redistribucin: ejemplo
74
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B*
Insercin con divisin: ejemplo
75
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
TADrbol B: recorrido / rboles B+
Algoritmo:
1. Bajar hacia el primer hijo hasta que se alcance una pgina
hoja
2. Recorrer secuencialmente la pgina hoja
3. Procesar la clave del padre y bajar por su hijo aplicando el
paso 1
Recorrido no es eficiente
Se suelen optimizar usando rboles B+
76
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Variantes: rboles B
+
Permiten un recorrido secuencial mas rpido que el B:
Las claves se encuentran en el ndice y en las hojas
Existe un puntero a la prxima pgina.
77
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Variantes: rboles B
+
78
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Variantes: rboles B
+
55 77
37 48 55 61 73 77 80 87 92
Ejemplo: Arbol B + de orden 2
79
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
En un rbol-B+, todas las claves estn en las hojas.
Los niveles ms altos, que estn organizados como un rbol-B,
constan slo de un ndice, un mapa para permitir una rpida
localizacin de las bifurcaciones de ndices y claves.
Mismas caractersticas que rboles B, pero...
Formados por dos partes:
ndice: nodos interiores
Secuencia: pginas hoja enlazadas secuencialmente en las
que se repiten las claves interiores
Recorrido ms fcil: basta con recorrer la secuencia
80
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
Separacin lgica en un rbol-B+ de las bifurcaciones de
ndices y claves.
Las operaciones empiezan en la raz como en un rbol-B.
El proceso secuencial empieza en la hoja ms a la izquierda.
81
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
Los nodos ndices y nodos hoja pueden tener diferentes formatos
o incluso diferentes tamaos.
En particular, los nodos hoja estn unidos de izquierda a
derecha como se muestra en la figura anterior.
La lista de uniones de hojas esta relacionada como un conjunto
sucesin.
Las uniones del conjunto sucesin permiten un procesamiento
secuencial fcil.
En general, el ndice del rbol se almacena en un rbol B
separado, que permite encontrar la informacin, que se encuentra
en los registros de un archivo secuencial indexado.
82
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
Propiedades:
Cada pgina tiene a lo ms mdescendientes.
Cada pgina, excepto la raz y las hojas, tienen entre m/2 y m
hijos.
La raz tiene al menos 2 descendientes (o ninguno).
Todas las hojas estn al mismo nivel.
Una pgina que no sea hoja, si tiene k descendientes contiene
k 1 claves.
Los nodos terminales representan un conjunto de datos y son
linkeadosjuntos.
Los nodos no terminales no tienen datos, sino punteros a los
datos.
83
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
Las operaciones de insercin y bsqueda en un rbol-B+son
procesadas casi idnticamente a las operaciones deinsercin y
de bsqueda en un rbol-B.
Cuando una hoja se divide en dos en vez de ascender la clave
intermedia, el algoritmo asciende una copia de la clave,
reteniendo la clave real en la hoja derecha.
Las operaciones de bsqueda difieren de las que se realizan en
los rboles-B en que la bsqueda no se detiene si una clave en
el ndice es igual al valor por el que se pregunta.
En cambio, se sigue el puntero situado ms a la derecha, y se
procede de esta forma todo el camino hasta la hoja.
84
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
Durante el borrado en un rbol-B+, la habilidad para dejar los
valores sin clave en la parte de ndices como separadores
simplifica el proceso.
La clave a eliminar debe estar siempre en una hoja de tal modo
que su eliminacin sea simple.
Mientras la hoja se quede al menos medio llena, el ndice no
necesita cambiarse, incluso si una copia de la clave ha sido
propagada en l.
85
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
Ejemplo de cmo la copia de una clave borrada puede todava
dirigir bsquedas a la hoja correcta.
Por supuesto, si surge una condicin de no desequilibrio, la
redistribucin o procedimientos de concatenacin pueden
requerir valores ajustados en el ndice y tambin en las hojas.
(a) Un rbol-B+ y (b) un rbol-B+despus deborrar laclave20. Incluso despus de
borrar, laclave20 sirvetodavacomo valor separador en lapartendice.
86
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
Dada la siguiente secuencia de claves:
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
dibuje el rbol B+de orden2 con raz R que se obtiene.
87
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
88
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
89
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
90
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
91
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
92
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
93
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
94
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
95
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
ejemplo: borrar la clave 178
La hoja a la que pertenece slo tiene 2 claves. 3 son el mnimo
nmero de claves que una hoja puede tener cuando m=5.
Eliminar
96
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo borrar la clave 178
Primero el algoritmo intenta adoptar un valor de la hoja del
hermano, sin embargo esa hoja tiene el mnimo #de claves.
Por consiguiente, el algoritmo debe unir las dos hojas:
Unir...
97
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Ejemplo borrar la clave 178
Ahora el nodo del padre slo tiene una hoja que estdebajo del
mnimo #de nodos que el rbol puede tener (2 en este caso).
El algoritmo intenta adoptar un valor del nodo del hermano.
Puesto que el hermano tiene tres hijos, la adopcin tiene
xito.
Adoptar
98
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
rbol resultante:
Ejemplo borrar la clave 178
99
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Aplicaciones
Construccin y mantenimiento de ABB extremadamente grandes
BD: No caben completos en memoria principal
Insercin y borrado constantes
Ejemplo: el ndice de un sistema de archivos
Los nodos se almacenan en memoria secundaria
No es eficiente acceder a disco cada vez que sea necesario
acceder a un nodo del ndice
Si bsqueda en ABB ~O(logN)
Para un rbol de 10
6
2
20
nodos 20 accesos a disco
100
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Bibliografa - Webgrafa
Algoritmos en C++ Robert Sedgewick, Fernando Davara
Rodrguez, Miguel Katrib Mora, Sergio Ros Aguilar, Luis
J oyanesAguilar 2000 Addison-Wesley/Daz de Santos.
Introduction to Algorithms, 2nd edition. Cormen, T.,
Leiserson, Ch., Rivest, R. andStein, C. MIT Press. 2001.
Data Structures and Algorithms. A. Aho, J . Hopcroft, and J .
Ullman. Addison-Wesley, 1983. Traducido al castellano, 1988.
Brassard, Gilles & Bratley, Paul. Fundamentos de Algoritmia.
Prentice-Hall. 1997.
Algoritmos y Estructuras de datos de Aguilar y Martnez.
Unidad 16
101
Universidad Tcnica Federico Santa Mara - Departamento de Informtica
Bibliografa - Webgrafa
cupi2.uniandes.edu.co
Apuntes de la UNLP Facultad de Informtica.
Apuntes de J ess Alonso S. Dpt. OEI
http://lml.ls.fi.upm.es/ed2
El Omnipresente rbol-B. DOUGLAS COMER.
Departamento de Ciencia Computacional, Universidad de
Purdue, West Lafayette, Indiana 47907

También podría gustarte