You are on page 1of 60

Base de Datos II

rboles paginados: rboles B, rboles B+ y rboles B*

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

Los rboles balanceados


Los rboles AVL, Solucionan este problema? En parte s, pero an se presentan problemas adicionales. Qu ocurrira si el volumen de la informacin es tal que no pueda mantenerse en memoria? Utilizando un rbol AVL, el uso del disco es muy deficiente: cada acceso implica leer un bloque de memoria y de este bloque nicamente se utiliza un registro, cuyos ndices de izquierda y derecha apuntan, con mucha probabilidad, a un registro de otro bloque. Cuando el volumen de la informacin a procesar tiene un tamao tal que nos conduce a la utilizacin de ficheros para el almacenamiento de los datos, se hace necesario pensar en otras estructuras que resuelvan los inconvenientes anteriores

4
Ing. Robert Alzamora Paredes

2. Generalizacin del concepto rbol de bsqueda


Un rbol de bsqueda es un tipo especial de rbol que sirve para guiar la bsqueda de un registro, dado el valor de uno de sus campos. Un rbol de bsqueda de orden p es un rbol tal que cada nodo contiene, cuando ms, p-1 valores de bsqueda y p apuntadores en el orden <P1, k1, P2, k2, , Pq-1, Kq-1, Pq> , donde q <= p, cada Pi es un apuntador a un nodo hijo (o apuntador nulo) y cada Ki es un valor de bsqueda proveniente de algn conjunto ordenado de valores. Se supone que todos los valores de bsqueda son nicos.

5
Ing. Robert Alzamora Paredes

Restricciones de un rbol de bsqueda


Un rbol de bsqueda debe cumplir, en todo momento, las siguientes restricciones:
Dentro de cada nodo: K1 < K2 < .< Kq-1 Para todos los valores de X, del subrbol al cual apunta Pi tenemos que:
Ki-1 < X < Ki , para 1 < i < q; X < Ki , para i = 1, y X > Ki-1 para i = q.
,

6
Ing. Robert Alzamora Paredes

La importancia del equilibrio


Para insertar valores de bsqueda en el rbol y eliminarlos, sin violar las restricciones anteriores, se utilizan algoritmos que no garantizan que el rbol de bsqueda est equilibrado (que todas las hojas estn al mismo nivel). Es importante mantener equilibrados los rboles de bsqueda porque esto garantiza que no habr nodos en niveles muy profundos que requieran muchos accesos a bloques durante una bsqueda. Adems, las eliminaciones de registros pueden hacer que queden nodos casi vacos, con lo que hay un desperdicio de espacio importante que tambin provoca un aumento en el nmero de niveles y un menor aprovechamiento de los accesos a disco.

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

Definicin formal de rbol B


Un rbol B de orden p, utilizado como estructura de acceso segn un campo clave para buscar registros en un archivo de datos, cumple que:
Cada nodo interno del rbol B tiene la forma <P1, <k1, Pr1>, P2, <k2, Pr2> , , <kq-1, Prq-1>, Pq> donde q <= p. Cada Pi es un apuntador de rbol: un apuntador a otro nodo del rbol. Cada Pri es un apuntador de datos: un apuntador al registro cuyo valor del campo clave de bsqueda es igual a Ki (o un apuntador al bloque que contiene ese registro de datos)

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.

En caso que el Pi correspondiente sea nulo, la bsqueda termina insatisfactoriamente.

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

Promocin de la llave 65:

Insercin de la llave promocionada:

17
Ing. Robert Alzamora Paredes

Ejemplo de insercin con aumento de la altura


Insertar la clave 68 en el siguiente rbol:

18
Ing. Robert Alzamora Paredes

Promocin de la llave 69:

Promocin de la llave 65:

19
Ing. Robert Alzamora Paredes

Creacin de una nueva raz con la llave 65

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

Ej. 2: Eliminar la clave 20

Sustituir 20 por el siguiente valor (25)

Eliminar el valor de 25 en la hoja

25
Ing. Robert Alzamora Paredes

Ej. 3: Eliminar la clave 12

Eliminar la clave. La hoja no tiene el mnimo

Prstamo del hermano derecho

26
Ing. Robert Alzamora Paredes

Ej. 4: Eliminar la clave 5

Eliminar la clave. La hoja no tiene el mnimo

Fundido y eliminacin del hermano derecho

27
Ing. Robert Alzamora Paredes

Ej. 5: Eliminar la clave 65 del siguiente rbol

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

Fusin con hermano izquierdo. Eliminacin de la pgina y de la raz

29
Ing. Robert Alzamora Paredes

4. Modificacin del rbol B: el rbol B+


En los rboles B todos los valores del campo de indexacin aparecen alguna vez en algn nivel del rbol, junto con un puntero al fichero de datos. En un rbol B+ los punteros a datos se almacenan slo en los nodos hoja del rbol, por lo cual, la estructura de los nodos hoja difiere de la de los nodos internos. Los nodos hoja tienen una entrada por cada valor del campo de indexacin, junto con un puntero al registro del fichero de datos (o al bloque que contiene el registro). Estos nodos estn enlazados para ofrecer un acceso ordenado a los registros a travs del campo de indexacin. Los nodos hoja de un rbol B+ son similares al primer nivel (nivel base) de un ndice. Los nodos internos del rbol B+ corresponden a los dems niveles del ndice. Algunos valores del campo de indexacin se repiten en los nodos internos del rbol B+ con el fin de guiar la bsqueda.

30
Ing. Robert Alzamora Paredes

Estructura de los nodos internos del rbol B+


Sea p el orden del rbol, entonces: Todo nodo interno es de la forma <P1, k1, P2, k2, , Pq-1, Kq-1, Pq> , donde q <= p, cada Pi es un apuntador de rbol. Dentro de cada nodo interno K1 < K2 < .< Kq-1 Para todos los valores X, del campo de bsqueda en el subrbol al cual apunta Pi , tenemos que:
Ki-1 <= X < Ki , para 1 < i < q; X < Ki , para i = 1, y X >= Ki-1 para i = q. En este caso pudiera encontrarse una X igual a K y debe seguirse hacia abajo, hasta llegar a un nodo hoja.

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

Estructura de los nodos hoja de un rbol B+


Sea p el orden del rbol, entonces: Todo nodo hoja tiene la forma: <<k1, Pr1>, <k2, Pr2> , , <kq-1, Prq-1>, Psiguiente,> donde q<=p, cada Pri es un apuntador de datos y Psiguiente apunta al siguiente nodo hoja del rbol B+. Dentro de cada nodo hoja K1 < K2 < .< Kq-1, donde q<=p Cada nodo hoja tiene al menos p/2 valores Todos los nodos hoja estn en el mismo nivel

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

Propagacin del desbordamiento


Puede suceder que el nodo padre se desborde nuevamente, entonces tendr que repetirse el proceso anterior. Es importante notar que el desbordamiento en un nodo que no es hoja no produce duplicidad de claves. El proceso de propagacin puede llegar hasta la raz, en cuyo caso la altura del rbol puede incrementarse en una unidad

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

5. Disminuyendo la altura del rbol y los accesos a memoria: El rbol B*


El rbol B* es un caso particular de rbol B, al que se le adiciona la restriccin de que todos los nodos se mantienen 2/3 llenos, o sea, la cantidad de llaves en cada nodo no puede ser menor que (2/3)p. Esta condicin favorece que se aprovechen los accesos a disco, pues cada nodo est obligado a permanecer ms lleno que los del rbol B. Otra particularidad del rbol B*, que lo distingue del rbol B, es que el nodo raz puede tener hasta (4/3)p llaves. Esta salvedad surge producto de que si se restringe a este nodo a tener a lo sumo p-1 llaves, al insertar una nueva llave, deberamos proceder a dividir el nodo en dos nodos, que no cumpliran con la condicin de tener al menos (2/3)p llaves.

43
Ing. Robert Alzamora Paredes

Definicin formal de rbol B*


Un rbol B*, de orden p, cumple que:
1. Cada nodo interno del rbol B tiene la forma: <P1, <k1, Pr1>, P2, <k2, Pr2> , , <kq-1, Prq-1>, Pq> donde q <= p. Cada Pi es un apuntador de rbol. Cada Pri es un apuntador de datos (un apuntador al registro ki o un apuntador al bloque que contiene ese registro de datos)

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

Operaciones con rboles B*


BUSQUEDA
La bsqueda en el rbol B* se realiza de misma manera que en el B.

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

Insercin con raz llena


Cuando se va a insertar en la raz del rbol y est llena, caso en que ocurre un crecimiento en la altura del rbol, se procede de la manera siguiente:
Insertar la llave como si realmente tuviese sitio libre. Crear un nuevo nodo, que pasar a ser la raz del rbol. Extraer el nodo que ocupa la posicin del medio en el nodo en que se insert e insertarlo en la nueva raz. Dividir equitativamente la pgina original en dos nuevas pginas Estas pginas sern los hijos derecho e izquierdo del nodo que promocion a la pgina superior.

47
Ing. Robert Alzamora Paredes

Insercin en hojas llenas


Para insertar en un nodo hoja lleno se procede de la siguiente manera:
Insertar la llave como si hubiese capacidad. Verificar si en el hermano izquierdo o derecho existe capacidad y en caso positivo se le cede al hermano seleccionado, la llave que est ms a la izquierda o ms a la derecha, en caso de ser cedido al hermano izquierdo o derecho, respectivamente. (que se deber reemplazar con la llave Ki del padre de manera similar al proceso de los rboles B) Si al tratar de cederle una llave al hermano, este tambin se encuentra lleno, deben combinarse ambos nodos para formar tres. Esta combinacin debe realizarse incluyendo la llave Ki que se encontraba en el padre, entre ambos nodos. Se dividirn equitativamente todas las llaves entre 3, sin contar las dos que deben pasar al nodo padre. Al insertar una nueva llave en el nodo padre (una de las dos ya se encontraba all) con su respectivo apuntador a rbol, puede ocurrir un desbordamiento en ese nodo, por lo que debe hacerse nuevamente el procedimiento de insercin.

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

Insercin directa del elemento 70 en la raz

49
Ing. Robert Alzamora Paredes

Insertar elemento 35
Estado inicial de la raz

Insercin del elemento 35, divisin de la pgina y promocin del elemento 40

50
Ing. Robert Alzamora Paredes

Ej. 2: Insertar la llaves 25 y 15 en el siguiente rbol

Insercin directa del elemento 25

Insercin del elemento 15, cesin del elemento 40 y cambio por el elemento 45 (hacia el hermano derecho)

51
Ing. Robert Alzamora Paredes

Ej. 3: Insertar el elemento 32 en el rbol:

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)

Promocin de los elementos 30 y 48. Estado final del rbol.

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

Eliminacin de una llave de un nodo con la cantidad mnima de llaves


1. Chequear si el hermano tiene una llave para ceder, o sea, si no tiene tambin la cantidad mnima de llaves, en este caso, se procede a hacer una rotacin de manera anloga a la insercin: la llave cedida se intercambia con la llave Ki del padre, que se encuentra entre ambos nodos y esta se inserta en el nodo del cual se elimin.

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

Eliminacin con cesin (e intercambio) de un elemento por parte de la pgina de la derecha

58
Ing. Robert Alzamora Paredes

Ej. 2: Eliminar la llave 40 del siguiente rbol

Eliminacin con cesin desde el hermano del hermano

rbol resultante despus de la doble rotacin de elementos

59
Ing. Robert Alzamora Paredes

Ej. 3: Eliminar la llave 20 del siguiente rbol

Fusin de pginas H0, H1 y H2. Divisin en dos pginas y promocin de elemento medio

Estado final del rbol despus de la eliminacin

60
Ing. Robert Alzamora Paredes

Ej. 4: Eliminar la llave 20 del siguiente rbol

Fusin de pginas y eliminacin de la raz

You might also like