Estructura de Datos Árboles B Árboles B* Árboles B+

Anuncio
Universidad Técnica Federico Santa María - Departamento de Informática
Estructura de Datos
Árboles B
Árboles B* Árboles B+
Prof.: Mauricio Solar
Prof.: Lorna Figueroa
Primer Semestre,
2010
1
Universidad Técnica Federico Santa María - Departamento de Informática
Introducción
• 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 información muy alta
organizada de forma que el acceso a una clave sea lo más
rápido posible.
• La letra B no significa "binario":
• Los árboles-B nunca son binarios.
• Tampoco es porque sean árboles de búsqueda, ya que en
inglés se denominan B-trees.
• Tampoco es porque sean balanceados, ya que suelen no
serlo.
2
Universidad Técnica Federico Santa María - Departamento de Informática
Introducción
• Normalmente se usan árboles binarios de búsqueda para ordenar
listas de valores, minimizando el número de lecturas, y evitando
tener que ordenar dichas listas.
• Desventajas ABB:
• Es difícil construir un ABB perfectamente equilibrado.
• El número de consultas en el árbol no equilibrado es
impredecible.
• El número de consultas aumenta rápidamente con el
número de registros a ordenar.
• Para evitar estos inconvenientes se usan árboles-B, sobre todo
cuando se ordenan archivos, convertido en el sistema de
indexación más utilizado.
3
Universidad Técnica Federico Santa María - Departamento de Informática
Introducción
• Problema de los ABB al usar almacenamiento secundario:
• la búsqueda de un elemento requiere muchos accesos a disco
(extremadamente lento comparado con un acceso a memoria)
• Ej.: para un millón de elementos
⇒ Nº accesos a disco = O(h) = O(log2 1.000.000) ≈ 20
• Solución: conseguir mayor grado de ramificación para tener
menor altura en el árbol.
4
Universidad Técnica Federico Santa María - Departamento de Informática
Introducción
• Particionar el ABB en páginas
• Mantener en memoria una de las páginas
• Con páginas de 100 nodos en un árbol de 106 nodos:
Nºmedio accesos = (log100 106) = 3 << 20
5
Universidad Técnica Federico Santa María - Departamento de Informática
Introducción
• Problemas de los AVL:
• Tienen una eficiencia F(n) = log n
• Su altura depende de la cantidad de nodos.
• En el nivel k , tendrá 2k+1 –1 nodos.
• Cuando se tienen un conjunto masivo de datos,
• Ej.; millón de registros de clientes de un banco equivalen
a k ≅ 19 niveles,
• Los datos estarán 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
6
Universidad Técnica Federico Santa María - Departamento de Informática
Introducción
Solución: Árboles de búsqueda m–arios.
• Cada nodo puede tener hasta m subárboles.
• Las claves se organizan en AVL.
• Objetivo: Que la altura del árbol sea pequeña, dado que las
iteraciones y los acceso a disco dependen de ello.
• La altura de un árbol m-ario (multicamino) completo es:
O(logm N)
• Ej.: para un millón de elementos y m = 10
⇒ Nº accesos a disco = O(h) = O(log10 1.000.000) = 6
7
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B
El Árbol B es una solución particular de esta tecnología
8
Universidad Técnica Federico Santa María - Departamento de Informática
Arboles B (Bayer y McCreight)
• Son árboles multicamino con una construcción especial en
forma ascendente,
• Permite mantener el árbol balanceado a bajo costo.
• Los archivos dedicados a usuarios, a sistemas de BD, y a
métodos de acceso de propósito general, han sido propuestos e
implementados usando árboles-B.
El árbol-B es, de hecho, la organización
estándar para índices en un sistema de BD.
9
Universidad Técnica Federico Santa María - Departamento de Informática
Arboles B – Definición
• Los B-árboles son árboles cuyos nodos pueden tener un número
múltiple de hijos:
Árbo B de orden m
10
Universidad Técnica Federico Santa María - Departamento de Informática
Arboles B
• Tienen por objetivo agrupar en cada nodo más de un elemento
de manera que el acceso a un elemento cualquiera tenga lugar
visitando un número 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 físico con el
tamaño de un nodo, de manera que si un elemento ocupa e
bytes y un sector físico tiene un tamaño f, en cada nodo se
almacenarán e elementos.
f
==> Aprovecha al máximo el acceso al disco.
⎣⎦
11
Universidad Técnica Federico Santa María - Departamento de Informática
Arboles B
• Generalización 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 métodos 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.
12
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B – características
• Un parámetro muy importante en los árboles-B es el orden(m).
• El orden de un árbol-B es el número máximo de ramas que
pueden partir de un nodo.
• Si k es el número de ramas que parten de un nodo de un árbol-B,
el nodo contendrá k-1 claves.
• El árbol está ordenado.
• Todos los nodos terminales, (nodos hoja), están en el mismo
nivel.
• Todos los nodos intermedios, excepto el raíz, deben tener entre
m/2 y m ramas no nulas.
13
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B – características
• Todos los nodos intermedios, excepto el nodo raíz, deben tener
entre m/2 y m ramas no nulas.
• El máximo número de claves por nodo es m-1.
• El mínimo número de claves por nodo es (m/2)-1.
• La profundidad (h) es el número máximo de consultas para
encontrar una clave.
• Perfectamente equilibrado.
• Disminuye la profundidad del árbol.
14
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B – características
• Página: nombre de los nodos.
• Se les accede en bloque.
• Como máximo: m ramas y m–1 claves
• Como mínimo: (m/2)+1 ramas y (m/2) claves
• La raíz puede estar vacía o incluso tener 1 clave, con 2 ramas.
15
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B – Propiedades
• Cada nodo en árbol-B de orden d contiene a lo más 2d claves
y 2d+1 punteros:
• El número 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 mínimo de d elementos y máximo de 2d elementos,
excepto la raíz, que puede tener un mínimo de un elemento.
16
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B
• Árbol B de orden 5:
17
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B – Propiedades
• Si k1, k2, ..., km denotan los elementos del nodo y P0, P1, .., Pm
los hijos, entonces:
• P0 contiene los elementos menores que k1
• Pi contiene los elementos mayores que ki y menores que ki+1
• Pm contiene todos los elementos mayores que km
• Todas las ramas tienen la misma longitud.
18
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B – Propiedades
• Si se recorre en profundidad: lista ordenada ↑
• Ejemplo: árbol B de orden d=2: (mín. 2 y máx. 4)
19
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo: árbol B de orden 2
20
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo: árbol B de orden 2
66
29 55
15 19 22 26 35 41 58 62
1.
2.
3.
4.
5.
75 87 94
69 73 77 81
89 93
96 98 99
Orden del árbol: 2
Altura del árbol: 3
Todas las páginas contienen: 2(d),3(d+1) o 4(2d+1) elementos;
excepto la raíz (1)
Los elementos dentro del árbol se encuentran ordenados
en forma creciente (izq. a der.)
Todas las hojas están al mismo nivel
21
Universidad Técnica Federico Santa María - Departamento de Informática
TAD arbolB: ArbolB.h
/*Definición de los Datos del TAD*/
#define m 5 // Orden del BTree como máximo: m ramas y
m–1 claves
typedef int tipoClave;
typedef struct pagina {
tipoClave claves[m];
// m{0..4} Numero de claves será for (k=1; k ≤ m;
k++)
struct pagina* ramas[m];
int cuenta;
//Numero de claves de la pagina
} Pagina;
22
Universidad Técnica Federico Santa María - Departamento de Informática
TAD arbolB: ArbolB.h
// Definición de las operaciones del TAD
• void escribeNodo(Pagina* actual);
• int nodoLLeno(Pagina* actual);
// Devuelve verdadero si el numero de claves es m–1
• int nodoSemiVacio(Pagina* actual);
// Devuelve .V. si el numero de claves es menor a m/2
• void crearArbolB(Pagina **raiz);
• Pagina *buscar (Pagina *actual, tipoClave cl, int * indice);
• Pagina *buscarNodo(Pagina *actual, tipoClave cl, int * k);
• void insertar (Pagina **raiz, tipoClave cl);
23
Universidad Técnica Federico Santa María - Departamento de Informática
TAD arbolB: ArbolB.c
int nodoLLeno(Pagina* actual) {
return (actual->cuenta == m – 1);
}
int nodoSemiVacio(Pagina* actual) {
return (actual->cuenta < m/2);
}
void escribeNodo(Pagina* actual) {
int k;
printf("\n Nodo: ");
for (k = 1; k <= actual>cuenta; k++)
printf(" %d ",actual>claves[k]);
printf("\n");
}
24
Universidad Técnica Federico Santa María - Departamento de Informática
TAD Árbol B: búsqueda
Nota: el diagrama sólo muestra el
criterio de búsqueda en una
página, falta el ciclo de búsqueda
tras actualizar el puntero a la
página hija
25
Universidad Técnica Federico Santa María - Departamento de Informática
TAD Árbol B: búsqueda
• Situarse en el nodo raíz 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
búsqueda, la clave no se encuentra en el árbol.
26
Universidad Técnica Federico Santa María - Departamento de Informática
TAD Árbol B: Algoritmo de búsqueda
1. Seleccionar como nodo actual la raíz 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
según 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 < K1, el hijo
derecho si K > Kn y el hijo i-ésimo si Ki < K < Ki+1) y
volver al segundo paso.
27
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: inserción
•
Crecen “Hacia Arriba”, hacia la raíz
•
•
•
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.
28
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: algoritmo de inserción
1. Se busca la clave a insertar en el árbol.
• Se desciende por el camino de búsqueda hasta una hoja.
2. ¿Está llena la página? (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 página en 2 paginas al mismo nivel que todas
las demás, extrayendo la clave mediana ( para m = 5 es la
clave[3] )
• Con esta mediana, se sube por el camino de búsqueda y se
comienza el proceso desde el paso 1 nuevamente.
• Esta proceso de ascensión de la clave mediana puede llegar hasta
el nodo raíz, que también se partirá y su mediana, subiendo, será
la nueva raíz de todo el árbol B.
29
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo de inserción
Insertar el 9 causa división en dos
sigue
30
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo de inserción
Se propaga hacia arriba,
causando otra división
31
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo de Inserción en Árbol B m=5
• Secuencia de Inserción: 6,11,5,4,8,9,12,21
32
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo de Inserción en Árbol B m=5
• Secuencia de Inserción: 6,11,5,4,8,9,12,21
33
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo de Inserción en Árbol B m=5
• Secuencia de Inserción: 6,11,5,4,8,9,12,21
34
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo de Inserción en Árbol B m=5
• Secuencia de Inserción: 6,11,5,4,8,9,12,21
• Continuar insertando:14, 10, 19, 28, 3, 17, 32, 15, 16, 26, 27.
35
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado
• Similar a la inserción 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.
• Solución: 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 más a la izquierda del hijo derecho de esa
clave. (o el hijo más a la derecha del hijo izquierdo)
36
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado
Las operaciones a realizar son:
1. Redistribución: se utiliza en el caso en que al borrar una
clave el nodo se queda con un número menor que el mínimo y
uno de los hermanos adyacentes tiene al menos uno más que
ese mínimo.
2. Unión: se utiliza en el caso de que no sea posible la
redistribución y por tanto sólo será posible unir los nodos
junto con la clave que los separa que se encuentra en el padre.
37
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado
1. Redestribución (equilibrar página)
38
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo de redistribución
La página izquierda no puede prestar nodos;
La derecha sí Î EQUILIBRADO
se añaden elementos de la página
derecha, redistribuyendo de forma
equitativa los elementos de ambas.
39
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo de redistribución
•
La redistribución:
(a) Parte de un árbol-B antes, y (b) después de la redistribución de nodos
entre dos vecinos.
• Nótese la posición final de la clave intermedia, “50”.
• La redistribución en nodos de igual tamaño ayuda a evitar ‘underflow’
en sucesivos borrados.
40
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado
2. Unión de páginas (fusionar, encadenar)
41
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo de unión de páginas
las páginas vecinas no tienen
elementos de sobra, entonces se une
con la página vecina izquierda,
utilizando como elemento intermedio
una clave del padre (la clave 10), que
las enlaza en la página del nivel
superior.
42
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo de unión
• Ejemplo de fusión de páginas y la situación final de la clave
separadora.
Borrado que origina una
fusión de páginas
el árbol re-balanceado
43
Universidad Técnica Federico Santa María - Departamento de Informática
TAD Árbol B: borrado
• Diagrama de flujo del
borrado
Nota: el diagrama sólo muestra el
caso de subocupación de una página,
no el caso completo en que se puede
producir subocupación en el padre
(falta ciclo)
44
Universidad Técnica Federico Santa María - Departamento de Informática
TAD Árbol 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 más 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 mínimo de claves como
para seguir siendo un B-árbol, fin.
5. Si el nodo actual tiene un número menor que el mínimo:
1. Si un hermano tiene más del mínimo de claves,
redistribución y fin.
2. Si ninguno de los hermanos tiene más del mínimo, unión 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).
45
Universidad Técnica Federico Santa María - Departamento de Informática
Arboles B - Borrado
•
•
El borrado de la clave “17” requiere
encontrar la siguiente clave en secuencia,
“21”, e intercambiarla con la posición
vacante.
La siguiente clave siempre está en la hoja
más a la izquierda del subárbol apuntado
por el puntero derecho de la posición vacía.
46
Universidad Técnica Federico Santa María - Departamento de Informática
Á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
47
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
48
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
49
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
50
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
51
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
52
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
53
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
54
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
55
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
56
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
57
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
58
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
59
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
60
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
61
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
62
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
63
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B: borrado – ejemplo
25 – 45 – 24 – 38 – 32 – 8 – 27 – 46 – 13 – 42 – 5 – 22 – 18 – 26 – 7 – 35 – 15
64
Universidad Técnica Federico Santa María - Departamento de Informática
Variantes: Árboles B* (Knuth)
• Proporciona mejor utilización del almacenamiento que los
árboles B.
• Propone nuevas reglas para el mantenimiento.
• Los nodos deben estar 2/3 llenos siempre, (en vez de sólo la
mitad).
• La nueva construcción logra una búsqueda más rápida que el
B+ pero una inserción más costosa.
65
Universidad Técnica Federico Santa María - Departamento de Informática
Variantes: Árboles B* (Knuth)
• Si cada nodo tiene un máximo de m descendientes.
• Cada nodo, excepto la raíz, tiene al menos (2m-1)/3 hijos.
• Si es de orden m=5
• Numero máximo por nodo: 4 claves y 5 ramas
• Numero mínimo por nodo: 3 claves y 4 ramas
66
Universidad Técnica Federico Santa María - Departamento de Informática
Variantes: Árboles B* (Knuth)
• Recordar que en un Arbol B
• Cada nodo, excepto la raíz, tiene al menos (m/2)+1 hijos.
• Numero máximo por nodo: 4 claves y 5 ramas
• Numero mínimo por nodo: 2 claves y 3 ramas
67
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B* (Knuth)
• Propiedades de un B* de orden m:
• Cada página tiene un máximo de m descendientes.
• Todas las páginas, excepto la raíz y las hojas, tiene al menos
(2m-1)/3) descendientes.
• La raíz tiene al menos dos descendientes, a menos que sea
hoja.
• Todas las hojas se encuentran al mismo nivel.
• Una página que no sea hoja, con K descendientes contiene
K – 1 claves.
• Una página-hoja contiene al menos (2m – 1)/3 – 1 claves, y no
más de m – 1 claves.
68
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B*
• Características
• Mejoran la eficiencia del acceso directo y la sobrecarga de
reorganizar el árbol en la inserción y el borrado
• Aseguran ocupación de páginas ≥ 66,6% (2/3).
• Cambia la división y fusión de páginas
• División por superocupación
• Pasar elementos al vecino
• Cuando el vecino también esté lleno, convertir las dos
páginas en tres.
• Fusión por subocupación
• Tres páginas se convirtien en dos.
69
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B* (Knuth)
• La inserción del árbol-B* emplea un esquema de redistribución
local para retrasar la división hasta que dos nodos hermanos están
llenos.
• Entonces los dos nodos se dividen en tres cada uno lleno en
2/3 partes.
• Este esquema garantiza que la utilización del almacenamiento
es al menos del 66%, mientras que solamente requieren una
moderada modificación de los algoritmos de mantenimiento.
• Esto debe ser señalado ya que el incremento en la utilización
del almacenamiento tiene el efecto lateral de acelerar la
búsqueda ya que la altura del árbol resultante es más pequeña.
70
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B*
• Inserción con redistribución
• Dejar la mitad a cada lado
71
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B*
• Inserción con división
• Cada página recibirá 2N/3 claves y suben dos claves a la
página superior
72
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B*
• Inserción con redistribución: ejemplo
73
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B*
• Inserción con división: ejemplo
74
Universidad Técnica Federico Santa María - Departamento de Informática
TAD Árbol B: recorrido / Árboles B+
•
•
Algoritmo:
1. Bajar hacia el primer hijo hasta que se alcance una página
hoja
2. Recorrer secuencialmente la página 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+
75
Universidad Técnica Federico Santa María - Departamento de Informática
Variantes: Árboles B+
•
Permiten un recorrido secuencial mas rápido que el B:
• Las claves se encuentran en el índice y en las hojas
• Existe un puntero a la próxima página.
76
Universidad Técnica Federico Santa María - Departamento de Informática
Variantes: Árboles B+
77
Universidad Técnica Federico Santa María - Departamento de Informática
Variantes: Árboles B+
Ejemplo: Arbol B + de orden 2
55 77
37 48
55 61 73
77 80 87 92
78
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
• En un árbol-B+, todas las claves están en las hojas.
• Los niveles más altos, que están organizados como un árbol-B,
constan sólo de un índice, un mapa para permitir una rápida
localización de las bifurcaciones de índices y claves.
• Mismas características que árboles B, pero...
• Formados por dos partes:
• Índice: nodos interiores
• Secuencia: páginas hoja enlazadas secuencialmente en las
que se repiten las claves interiores
• Recorrido más fácil: basta con recorrer la secuencia
79
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
• Separación lógica en un árbol-B+ de las bifurcaciones de
índices y claves.
• Las operaciones empiezan en la raíz como en un árbol-B.
• El proceso secuencial empieza en la hoja más a la izquierda.
80
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
• Los nodos índices y nodos hoja pueden tener diferentes formatos
o incluso diferentes tamaños.
• En particular, los nodos hoja están unidos de izquierda a
derecha como se muestra en la figura anterior.
• La lista de uniones de hojas esta relacionada como un conjunto
sucesión.
• Las uniones del conjunto sucesión permiten un procesamiento
secuencial fácil.
• En general, el índice del árbol se almacena en un árbol B
separado, que permite encontrar la información, que se encuentra
en los registros de un archivo secuencial indexado.
81
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
Propiedades:
• Cada página tiene a lo más m descendientes.
• Cada página, excepto la raíz y las hojas, tienen entre m/2 y m
hijos.
• La raíz tiene al menos 2 descendientes (o ninguno).
• Todas las hojas están al mismo nivel.
• Una página que no sea hoja, si tiene k descendientes contiene
k – 1 claves.
• Los nodos terminales representan un conjunto de datos y son
linkeados juntos.
• Los nodos no terminales no tienen datos, sino punteros a los
datos.
82
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
• Las operaciones de inserción y búsqueda en un árbol-B+ son
procesadas casi idénticamente a las operaciones de inserción y
de búsqueda 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 búsqueda difieren de las que se realizan en
los árboles-B en que la búsqueda 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 más a la derecha, y se
procede de esta forma todo el camino hasta la hoja.
83
Universidad Técnica Federico Santa María - Departamento de Informática
Á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 eliminación 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.
84
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
• Ejemplo de cómo la copia de una clave borrada puede todavía
dirigir búsquedas a la hoja correcta.
• Por supuesto, si surge una condición de no desequilibrio, la
redistribución o procedimientos de concatenación pueden
requerir valores ajustados en el índice y también en las hojas.
(a) Un árbol-B+ y (b) un árbol-B+ después de borrar la clave “20”. Incluso después de
borrar, la clave “20” sirve todavía como valor separador en la parte índice.
85
Universidad Técnica Federico Santa María - Departamento de Informática
Á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 orden 2 con raíz R que se obtiene.
86
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
87
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
88
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
89
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
90
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
91
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
92
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
93
Universidad Técnica Federico Santa María - Departamento de Informática
Árboles B+
7, 25, 27, 15, 23, 19, 14, 29, 10, 50, 18, 22, 46, 17, 70, 33, 58
94
Universidad Técnica Federico Santa María - Departamento de Informática
ejemplo: borrar la clave 178
• La hoja a la que pertenece sólo tiene 2 claves. 3 son el mínimo
número de claves que una hoja puede tener cuando m = 5.
Eliminar
95
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo – borrar la clave 178
• Primero el algoritmo intenta adoptar un valor de la hoja del
hermano, sin embargo esa hoja tiene el mínimo # de claves.
• Por consiguiente, el algoritmo debe unir las dos hojas:
Unir...
96
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo – borrar la clave 178
• Ahora el nodo del padre sólo tiene una hoja que está debajo del
mínimo # 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 adopción tiene
éxito.
Adoptar
97
Universidad Técnica Federico Santa María - Departamento de Informática
Ejemplo – borrar la clave 178
• Árbol resultante:
98
Universidad Técnica Federico Santa María - Departamento de Informática
Aplicaciones
• Construcción y mantenimiento de ABB extremadamente grandes
• BD: No caben completos en memoria principal
• Inserción 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 búsqueda en ABB ~ O(log N)
Para un árbol de 106 ≈ 220 nodos ⇒ 20 accesos a disco
99
Universidad Técnica Federico Santa María - Departamento de Informática
Bibliografía - Webgrafía
• Algoritmos en C++ Robert Sedgewick, Fernando Davara
Rodríguez, Miguel Katrib Mora, Sergio Ríos Aguilar, Luis
Joyanes Aguilar – 2000 Addison-Wesley/Díaz de Santos.
• Introduction to Algorithms, 2nd edition. Cormen, T.,
Leiserson, Ch., Rivest, R. and Stein, 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 Martínez.
Unidad 16
100
Universidad Técnica Federico Santa María - Departamento de Informática
Bibliografía - Webgrafía
•
•
•
•
•
cupi2.uniandes.edu.co
Apuntes de la UNLP – Facultad de Informática.
Apuntes de Jesús 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
101
Descargar