Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2
Ing. Robert Alzamora Paredes
1. Introduccin
En el manejo de grandes volmenes de informacin, siempre ha estado presente la necesidad de hacer eficiente el proceso de bsqueda. A menudo se usan rboles binarios de bsqueda para ordenar listas de valores, minimizando el nmero de lecturas, y evitando tener que ordenar dichas listas. Pero este tipo de rboles tienen varias desventajas:
Es difcil construir un rbol binario de bsqueda perfectamente equilibrado. El nmero de consultas en el rbol no equilibrado es impredecible. Y adems el nmero de consultas aumenta rpidamente con el nmero de registros a ordenar.
3
Ing. Robert Alzamora Paredes
4
Ing. Robert Alzamora Paredes
5
Ing. Robert Alzamora Paredes
6
Ing. Robert Alzamora Paredes
7
Ing. Robert Alzamora Paredes
3. Los rboles B
El rbol B es un rbol de bsqueda, con algunas restricciones adicionales. Estas restricciones adicionales garantizan:
Que el rbol siempre estar equilibrado, y Que el espacio desperdiciado por la eliminacin, si lo hay, nunca ser excesivo.
Los algoritmos para insertar y eliminar se hacen ms complejos para poder mantener estas restricciones. No obstante, la mayor parte de las inserciones y eliminaciones son procesos simples, se complican slo en circunstancias especiales.
8
Ing. Robert Alzamora Paredes
9
Ing. Robert Alzamora Paredes
10
Ing. Robert Alzamora Paredes
Dentro de cada nodo K1 < K2 < .< Kq-1 Para todos los valores de X, del subrbol al que apunta Pi , tenemos que Ki-1 < X < Ki , para 1 < i < q; X < Ki , para i = 1 y X > Ki-1 para i = q. Cada nodo tiene, cuando ms, p apuntadores de rbol. Cada nodo, excepto la raz y los nodos hoja, tienen por lo menos p/2 apuntadores de rbol. El nodo raz tiene, como mnimo, dos punteros a nodos del rbol, a menos que sea el nico nodo del rbol. Un nodo con q apuntadores de rbol, q <= p, tiene q-1 valores del campo clave de bsqueda y por tanto, tiene q-1 apuntadores de datos. Todos los nodos hojas estn en el mismo nivel. Los nodos hoja tienen la misma estructura que los internos, excepto que todos sus apuntadores de rbol, Pi , son nulos.
11
Ing. Robert Alzamora Paredes
Ejemplo
NOTA: El nmero de acceso a disco en un rbol B es proporcional a la altura del rbol, el caso peor para la altura es cuando la raz tiene una sola llave y el resto de los nodos tiene el mnimo permitido p/2.
12
Ing. Robert Alzamora Paredes
Bsqueda en rboles B
La bsqueda de una llave Y se realiza de manera anloga a la bsqueda en un rbol binario de bsqueda. Se comienza buscando por el nodo raz y se compara la llave Y con las llaves Ki que se encuentran en ese nodo. Si Y es igual a algn Ki, termina la bsqueda satisfactoriamente, si no, se debe seguir el puntero adecuado hacia un nodo hijo en el que se continuar la bsqueda. El puntero seleccionado ser:
P1, si Y < K1, Pq si Y > Kq-1 y Pi, si Ki-1 < X < Ki, para 1 < i < q.
13
Ing. Robert Alzamora Paredes
Insercin en rboles B
Para realizar la insercin, lo primero que debe hacerse es un proceso de bsqueda, para localizar el nodo en el que se va a insertar. Si este proceso de bsqueda da por resultado que el elemento ya existe, no se realizar ninguna operacin, pues el rbol B no permite elementos repetidos. La bsqueda de un elemento inexistente y que, por tanto, pueda ser insertado en el rbol, terminar en el momento en que, tratando de buscar un puntero Pi que apunte al nodo donde debera estar el elemento, encontremos un puntero nulo, siendo insertado el nuevo elemento en el nodo actual. Cuando se inserta en un nodo que no est lleno, solo debemos preocuparnos por el lugar que debe ocupar la nueva llave en ese nodo y hacer un corrimiento de las restantes.
14
Ing. Robert Alzamora Paredes
Divisin y promocin
Una vez lleno un nodo con p-1 valores de la clave de bsqueda, si intentamos insertar una entrada ms en l, debemos seguir el siguiente procedimiento:
Insertar la llave como si realmente tuviese sitio libre. Extraer el nodo que ocupa la posicin del medio e insertarlo en la pgina padre. Si no hubiese pgina padre se creara una nueva pgina con ese nodo. Dividir equitativamente la pgina original en dos nuevas pginas Estas pginas sern los hijos derechos e izquierdos del nodo que promocion a la pgina superior. Si la pgina a la que promociona el nodo mediano tambin se encuentra completa, se repetira la misma operacin de divisin y promocin.
15
Ing. Robert Alzamora Paredes
Ejemplo de insercin
Insertar la clave 52 en el siguiente rbol:
16
Ing. Robert Alzamora Paredes
17
Ing. Robert Alzamora Paredes
18
Ing. Robert Alzamora Paredes
19
Ing. Robert Alzamora Paredes
20
Ing. Robert Alzamora Paredes
Eliminacin en rboles B
La eliminacin siempre debe realizarse en una hoja. Si despus de realizar la bsqueda, el nodo a borrar no estuviese en una hoja, de la misma manera que se procede en un rbol binario de bsqueda, el nodo a borrar se sustituira por su antecesor o sucesor, que s debe estar en una hoja. El caso ms sencillo se produce cuando al eliminar un nodo de una pgina hoja, bien porque sea el nodo a eliminar, bien porque sea un elemento que sustituy al nodo a eliminar, el tamao de la pgina sigue siendo al menos p/2. De esta forma, la estructura del rbol se sigue cumpliendo y no hay que realizar ninguna reestructuracin.
21
Ing. Robert Alzamora Paredes
Prstamo de elementos
Cuando al eliminar un nodo de la hoja, la pgina se queda con menos del mnimo nmero de nodos permitidos, sta le pedir prestado un elemento a uno de sus hermanos, o el izquierdo o el derecho. Si el hermano est en condiciones de ceder un elemento, o sea, si al perder dicho elemento no hace que quede ocupado a menos de la mitad, ceder el elemento ms a la izquierda o ms a la derecha, en dependencia de su ubicacin respecto al hermano. Esta donacin, debe realizarse con participacin del nodo padre. El elemento donado, debe intercambiarse con el valor Ki correspondiente en el nodo padre y es este valor Ki quien ira a suplir la falta en el hermano afectado.
22
Ing. Robert Alzamora Paredes
Fusin de pginas
Se da cuando la pgina vecina tiene el nmero mnimo de nodos y por tanto, no existe la posibilidad de suplir la falta de llave tomando una llave del hermano. En esta situacin las dos pginas se agrupan en una sola, formando una nueva pgina en la que todava existe capacidad para otra llave. A esta pgina se le aade la llave Ki que estaba situada en la pgina padre, entre ambos nodos. Si al fundirse los dos nodos y tomar la llave Ki de su padre, este se queda con una cantidad de llaves menor que p/2, el proceso se repite, propagndose hasta la raz. En caso de ser la raz el nodo al que se le quitar el Ki y esta solo tena una llave, queda automticamente eliminada, reducindose en 1 la altura del rbol.
23
Ing. Robert Alzamora Paredes
Ejemplos de eliminacin
Ej. 1: Eliminar la llave 65 del siguiente rbol:
Eliminacin directa
24
Ing. Robert Alzamora Paredes
25
Ing. Robert Alzamora Paredes
26
Ing. Robert Alzamora Paredes
27
Ing. Robert Alzamora Paredes
Reemplazo por clave 67. Eliminacin de clave 67. La hoja no tiene el mnimo
28
Fusin y eliminacin de hermano derecho. La pgina no tiene el mnimo
Ing. Robert Alzamora Paredes
29
Ing. Robert Alzamora Paredes
30
Ing. Robert Alzamora Paredes
31
Ing. Robert Alzamora Paredes
Cada nodo interno tiene, cuando ms, p apuntadores de rbol. Cada nodo interno, excepto la raz y los nodos hoja, tienen por lo menos p/2 apuntadores de rbol. El nodo raz tiene, como mnimo, dos punteros a nodos del rbol, si es un nodo interno Un nodo interno con q apuntadores de rbol, q <= p, tiene q-1 valores del campo de bsqueda
32
Ing. Robert Alzamora Paredes
33
Ing. Robert Alzamora Paredes
Arboles B y B+
Como las entradas en los nodos internos de los rboles B+ contienen valores del campo de indexacin y punteros a nodos del rbol, pero no contienen punteros a los registros del fichero de datos, es posible empaquetar" ms entradas en un nodo interno de un rbol B+ que en un nodo similar de un rbol B. Por tanto, si el tamao de bloque (nodo) es el mismo, el orden p ser mayor para el rbol B+ que para el rbol B. Esto puede reducir el nmero de niveles del rbol B+, mejorndose as el tiempo de acceso. Como las estructuras de los nodos internos y los nodos hoja de los rboles B+ son diferentes, su orden p puede ser diferente.
34
Ing. Robert Alzamora Paredes
Bsqueda en rboles B+
La operacin de bsqueda en rboles B+ es similar a la operacin de bsqueda en rboles B. Sin embargo puede suceder que al buscar una determinada clave la misma se encuentre en un nodo raz o interior, en dicho caso no debe detenerse el proceso, sino que debe continuarse la bsqueda con el nodo apuntado por la rama derecha de dicha clave (o sea, si se encuentra la clave Ki-1, debemos continuar la bsqueda por el apuntador Pi). Por ejemplo buscar la clave 55
35
Ing. Robert Alzamora Paredes
Insercin en rboles B+
Similar al proceso de insercin en rboles B. La dificultad es al insertar una clave en un nodo que se encuentra lleno. En este caso, el nodo afectado se divide en 2, distribuyndose las claves de la siguiente forma: " las p/2 primeras claves en el nodo de la izquierda y las p/2 + 1 restantes claves en el nodo de la derecha. Una copia de la clave del medio sube al nodo padre.
36
Ing. Robert Alzamora Paredes
37
Ing. Robert Alzamora Paredes
38
Ing. Robert Alzamora Paredes
Eliminacin en rboles B+
Ms simple que en rboles B (porque las claves a eliminar siempre se encuentran en las pginas hojas). En general deben distinguirse los siguientes casos:
1. Si al eliminar una clave, la cantidad de llaves queda mayor o igual que p/2 entonces termina la operacin. Las claves de los nodos raz o internos no se modifican por ms que sean una copia de la clave eliminada en las hojas.
39
Ing. Robert Alzamora Paredes
2.
Si al eliminar una clave, la cantidad de llaves queda menor que p/2 entonces debe realizarse una redistribucin de claves, tanto en el ndice como en las pginas hojas.
Al eliminar la clave 27 de la pgina A, la cantidad de llaves queda menor que p/2 por lo que debe realizarse una redistribucin de las claves. Se toma la clave que se encuentra ms a la derecha en la rama izquierda de 25 (21 de la pgina B). Se coloca dicha clave en la pgina A y una copia de la misma, como ndice, en la pgina C.
Al eliminar la clave 21 de la pgina A, la cantidad de llaves queda menor que p/2 por lo que debe realizarse una redistribucin de claves. Como no se puede tomar una clave de Puede suceder que al eliminar una clave y al realizar una redistribucin de las mismas, la altura del rbol disminuya en una unidad.
Ing. Robert Alzamora Paredes
40
Al eliminar la clave 21 de la pgina A, la cantidad de llaves queda menor que p/2 por lo que debe realizarse una redistribucin de claves. Como no se puede tomar una clave de la pgina B puesto que m quedara menor a d, entonces se realiza una fusin de las pginas A y B. Puede suceder que al eliminar una clave y al realizar una redistribucin de las mismas, la altura del rbol disminuya en una unidad.
41
Ing. Robert Alzamora Paredes
Al eliminar la clave 37 de la pgina B, la cantidad de llaves queda menor que p/2 por lo que debe realizarse una redistribucin de claves. Como no puede tomarse una clave de la pgina A puesto que m quedara menor a d, entonces se realiza una fusin de las pginas A y B. Sin embargo, luego de est fusin la cantidad de llaves queda menor que p/2 en la pgina C, por lo que debe bajarse la clave 29 de la pgina E y realizarse una nueva fusin, ahora de las pginas C y E. La altura del rbol disminuye en una unidad.
42
Ing. Robert Alzamora Paredes
43
Ing. Robert Alzamora Paredes
2. Dentro de cada nodo K1 < K2 < .< Kq-1 3. Para todos los valores de X, del subrbol al que apunta Pi , tenemos que Ki-1 < X < Ki , para 1 < i < q; X < Ki , para i = 1 y X > Ki-1 para i = q.
44
Ing. Robert Alzamora Paredes
4. Cada nodo, excepto la raz, tiene, cuando ms, p apuntadores de rbol. La raz puede contener hasta (4/3)p + 1 apuntadores. 5. Cada nodo, excepto la raz y los nodos hoja, tienen por lo menos (2/3)p +1 apuntadores de rbol. El nodo raz tiene, como mnimo, dos punteros a nodos del rbol, a menos que sea el nico nodo del rbol. 6. Un nodo con q apuntadores de rbol, q <= p, tiene q1 valores del campo clave de bsqueda y por tanto, tiene q-1 apuntadores de datos. 7. Todos los nodos hojas estn en el mismo nivel. Los nodos hoja tienen la misma estructura que los internos, excepto que todos sus apuntadores de rbol, Pi , son nulos.
45
Ing. Robert Alzamora Paredes
INSERCION
Del mismo modo que en el rbol B, siempre y cuando exista capacidad en el nodo para colocar la nueva llave. En caso de insertar un elemento en un nodo lleno, el proceso vara si dicho nodo es la raz o si es un nodo hoja. La insercin en la raz puede ser porque:
La raz es el nico nodo del rbol y el nuevo elemento debe ser insertado en ella, o La insercin en una hoja, provoc la promocin de una llave para ser insertada en el padre y esta promocin se propag hasta la raz.
46
Ing. Robert Alzamora Paredes
47
Ing. Robert Alzamora Paredes
48
Ing. Robert Alzamora Paredes
Ejemplos de insercin
Ej. 1: Insertar las llaves 45 y 70 en el siguiente rbol de orden 7 (la raz puede contener hasta 8 llaves)
Insercin directa del elemento 45 en la raz
49
Ing. Robert Alzamora Paredes
Insertar elemento 35
Estado inicial de la raz
50
Ing. Robert Alzamora Paredes
Insercin del elemento 15, cesin del elemento 40 y cambio por el elemento 45 (hacia el hermano derecho)
51
Ing. Robert Alzamora Paredes
Fusin de dos pginas incluyendo al elemento insertado y al elemento separador del padre. Divisin en tres pginas con igual cantidad de elementos. No se consideran a los separadores (30 y 48)
52
Ing. Robert Alzamora Paredes
Eliminacin en rboles B*
La eliminacin se realiza del mismo modo que en el rbol B, siempre y cuando no provoque que un nodo quede con menos llaves que las que debe tener, porque en este caso, el procedimiento a seguir en el rbol B* difiere de la vista anteriormente para el rbol B.
53
Ing. Robert Alzamora Paredes
54
Ing. Robert Alzamora Paredes
2. Si los hermanos inmediatos del nodo del cual se elimina, no tuvieran la posibilidad de ceder una llave, debe analizarse el nodo que est un lugar ms all que el hermano analizado, o sea, el hermano del hermano, para valorar la posibilidad de que sea este nodo quien ceda la llave. Para ganar en claridad, llamaremos H0 al nodo del cual se elimin, H1 al hermano que no poda ceder y H2 al otro hermano En caso de ser posible, deben hacerse dos rotaciones para hacer llegar la llave a H0: una primera rotacin de H1 a H0 (ahora H1 es quien tiene la falta) y otra rotacin desde H2 a H1. Estas rotaciones involucran a las llave Ki del nodo padre, que se encuentran entre los nodos H0 y H1, H1 y H2, respectivamente.
55
Ing. Robert Alzamora Paredes
3.
De no poder realizar estas rotaciones y persistir el faltante de una llave en el nodo del que elimin, podemos estar en dos situaciones: o existen dos nodos hermanos del nodo del que se elimin que no tenan posibilidad de ceder una llave o el nodo del que elimin solo tena un hermano. En el primer caso, podemos resolver la situacin realizando una combinacin de tres nodos para obtener dos, con participacin de las llaves Ki del padre que se encuentran entre los tres nodos. La idea es, dividir las llaves de los tres nodos en dos conjuntos que pasarn a estar en los dos nodos a formar, extrayendo la llave del medio, que quedar en el nodo padre, entre los nodos resultantes. Como parte de este proceso, el nodo padre ha perdido una llave, lo cual puede provocar una falta de llave en este, con lo que debe seguirse analizando el rbol hacia arriba.
56
Ing. Robert Alzamora Paredes
4. Si estamos en la situacin en la que el nodo del cual se elimin solo tiene un hermano (rbol con dos niveles, en uno la raz y el otro las dos hojas) y este hermano no puede ceder la llave, debemos fundir las llaves que quedan en un solo nodo, que quedara como raz del rbol.
57
Ing. Robert Alzamora Paredes
Ejemplos de eliminacin
Ej. 1: En el rbol siguiente de orden 7, eliminar la llave 35
58
Ing. Robert Alzamora Paredes
59
Ing. Robert Alzamora Paredes
Fusin de pginas H0, H1 y H2. Divisin en dos pginas y promocin de elemento medio
60
Ing. Robert Alzamora Paredes