Está en la página 1de 34

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Estructura de Datos
rboles B

rboles B* rboles B+

Prof.: Mauricio Solar

Prof.: Lorna Figueroa

Primer Semestre,
2010
1

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.
2

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.
3

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
N accesos a disco = O(h) = O(log2 1.000.000) 20
Solucin: conseguir mayor grado de ramificacin para tener
menor altura en el rbol.

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 106 nodos:
Nmedio accesos = (log100 106) = 3 << 20

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Introduccin

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.; 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
6

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Introduccin

Solucin: rboles de bsqueda marios.


Cada nodo puede tener hasta m subrboles.
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(logm N)
Ej.: para un milln de elementos y m = 10
N accesos a disco = O(h) = O(log10 1.000.000) = 6

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles B

El rbol B es una solucin particular de esta tecnologa

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.

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

10

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 e elementos.
f
==> Aprovecha al mximo el acceso al disco.

11

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.

12

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 contendr k-1 claves.
El rbol est ordenado.
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.

13

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.

14

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 m1 claves
Como mnimo: (m/2)+1 ramas y (m/2) claves
La raz puede estar vaca o incluso tener 1 clave, con 2 ramas.

15

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles B Propiedades
Cada nodo en rbol-B de orden d contiene a lo ms 2d claves
y 2d+1 punteros:

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.
16

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles B

rbol B de orden 5:

17

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

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 Tcnica Federico Santa Mara - Departamento de Informtica

rboles B Propiedades
Si se recorre en profundidad: lista ordenada
Ejemplo: rbol B de orden d=2: (mn. 2 y mx. 4)

19

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo: rbol B de orden 2

20

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

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 pginas contienen: 2(d),3(d+1) o 4(2d+1) elementos;
excepto la raz (1)
Los elementos dentro del rbol se encuentran ordenados
en forma creciente (izq. a der.)
Todas las hojas estn al mismo nivel
21

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

TAD arbolB: ArbolB.h

/*Definicin de los Datos del TAD*/


#define m 5 // Orden del BTree como mximo: m ramas y
m1 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 Tcnica Federico Santa Mara - Departamento de Informtica

TAD arbolB: ArbolB.h

// Definicin de las operaciones del TAD


void escribeNodo(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
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 Tcnica Federico Santa Mara - Departamento de Informtica

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 Tcnica Federico Santa Mara - Departamento de Informtica

TAD rbol 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

25

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

TAD rbol 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.

26

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

TAD rbol 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 < K1, el hijo
derecho si K > Kn y el hijo i-simo si Ki < K < Ki+1) y
volver al segundo paso.
27

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.

28

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. Est llena 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 partir y su mediana, subiendo, ser
la nueva raz de todo el rbol B.
29

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de insercin

Insertar el 9 causa divisin en dos

sigue
30

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de insercin

Se propaga hacia arriba,


causando otra divisin

31

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

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

Continuar insertando:14, 10, 19, 28, 3, 17, 32, 15, 16, 26, 27.
35

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)

36

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.

37

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles B: borrado

1. Redestribucin (equilibrar pgina)

38

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de redistribucin

La pgina izquierda no puede prestar nodos;


La derecha s EQUILIBRADO

se aaden elementos de la pgina


derecha, redistribuyendo de forma
equitativa los elementos de ambas.

39

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de redistribucin

La redistribucin:

(a) Parte de un rbol-B antes, y (b) despus de la redistribucin de nodos


entre dos vecinos.
Ntese la posicin final de la clave intermedia, 50.
La redistribucin en nodos de igual tamao ayuda a evitar underflow
en sucesivos borrados.
40

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles B: borrado

2. Unin de pginas (fusionar, encadenar)

41

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
una clave del padre (la clave 10), que
las enlaza en la pgina del nivel
superior.
42

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo de unin
Ejemplo de fusin de pginas y la situacin final de la clave
separadora.

Borrado que origina una


fusin de pginas

el rbol re-balanceado

43

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

TAD rbol 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
(falta ciclo)

44

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

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 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).
45

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.

46

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

47

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

48

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

49

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

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

rboles B: borrado ejemplo


25 45 24 38 32 8 27 46 13 42 5 22 18 26 7 35 15

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

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.

65

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Variantes: rboles B* (Knuth)


Si cada nodo tiene un mximo de m descendientes.
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

66

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

67

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles B* (Knuth)

Propiedades de un B* de orden m:
Cada pgina tiene un mximo de m descendientes.
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 1 claves.
Una pgina-hoja contiene al menos (2m 1)/3 1 claves, y no
ms de m 1 claves.
68

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 convirtien en dos.
69

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles B* (Knuth)

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.

70

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles B*

Insercin con redistribucin


Dejar la mitad a cada lado

71

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

72

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles B*

Insercin con redistribucin: ejemplo

73

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles B*

Insercin con divisin: ejemplo

74

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

TAD rbol 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+

75

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.

76

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Variantes: rboles B+

77

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Variantes: rboles B+
Ejemplo: Arbol B + de orden 2

55 77
37 48

55 61 73

77 80 87 92

78

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

79

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.
80

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.
81

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

rboles B+

Propiedades:
Cada pgina tiene a lo ms m descendientes.
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
linkeados juntos.
Los nodos no terminales no tienen datos, sino punteros a los
datos.
82

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 de insercin 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.

83

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.

84

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 de borrar la clave 20. Incluso despus de
borrar, la clave 20 sirve todava como valor separador en la parte ndice.
85

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 orden 2 con raz R que se obtiene.

86

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

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

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

95

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...

96

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo borrar la clave 178


Ahora el nodo del padre slo tiene una hoja que est debajo 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

97

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Ejemplo borrar la clave 178


rbol resultante:

98

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(log N)
Para un rbol de 106 220 nodos 20 accesos a disco

99

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
Joyanes Aguilar 2000 Addison-Wesley/Daz 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 Martnez.
Unidad 16

100

Universidad Tcnica Federico Santa Mara - Departamento de Informtica

Bibliografa - Webgrafa

cupi2.uniandes.edu.co
Apuntes de la UNLP Facultad de Informtica.
Apuntes de Jess 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

También podría gustarte