rboles B Prof. Domingo Hernndez Contenido Introduccin.
Definicin de rboles B.
Caractersticas de los rboles B.
Proceso de Insercin.
Proceso de Eliminacin.
Introduccin Para almacenar muchos datos para una aplicacin se requiere de una estructura de datos eficiente. Cuando se requieren almacenar dichos datos en memoria secundaria hay que recordar que los accesos al disco son costosos en tiempo por lo que se debe evitar realizar muchos accesos a los datos. AVL es la mejor estructura para memoria principal, pero es ineficiente si se utiliza para almacenamiento secundario. Esto se debe a la cantidad de accesos necesarios para efectuar las rotaciones. Otro problema es que se requieren tantos accesos como niveles se recorran en el rbol para efectuar la bsqueda. Para almacenamiento secundario se recomiendan los rboles B o los rboles B+ rboles B Bayer y McCreight propusieron en 1970 esta estructura. Manejan rboles de bsqueda multicamino, cuyos nodos guardan ms de un elemento. Son rboles 100% balanceados en su estructura, lo cual repercute en bsquedas eficientes y en accesos mnimos a disco. 10 20 5 8 12 18 25 65 92 99 Caractersticas del rbol B Un rbol B de orden n es aquel que: Todas las hojas del rbol estn en el nivel inferior.
Cada nodo contiene entre n y 2n elementos, excepto el nodo raz, que puede tener entre 1 y 2n elementos. Si un nodo tiene m elementos, el nodo siempre contendr m + 1 hijos si no es un nodo hoja. Ejemplo.... Para un rbol B de orden 3: Cuntos elementos mximo puede guardar cada nodo del rbol? 6 Cuntos elementos mnimo puede guardar cada nodo del rbol? 1 si el la raz, 3 cualquier otro nodo. Cuntos hijos mximo puede tener un nodo? 7 Cuntos hijos mnimo puede tener un nodo? 0 si es hoja, 2 si es raz, 4 cualquier otro nodo. Ms caractersticas del rbol B Un rbol B de orden n es aqul en que: Los elementos de un nodo estn ordenados linealmente. Los elementos estn organizados de tal forma que se cumple la regla de la bsqueda: a la izquierda menores, a la derecha mayores. 10 20 5 8 12 18 25 65 92 99 Ejemplo... De qu orden es este rbol B? 10 20 5 8 12 18 25 65 92 99 Este rbol es de orden 2 ya que puede almacenar hasta 4 elementos en cada nodo. Proceso de Insercin Buscar el nodo hoja en donde se debera agregar el elemento. Si hay espacio disponible en el nodo, agregar el elemento y terminar. Si el nodo hoja NO tiene capacidad de almacenar el elemento, se deber crear un nuevo nodo al mismo nivel de la hoja y distribuir a los 2n+1 elementos de la siguiente forma: El nuevo nodo recibe a los n elementos ms grandes.
El nodo existente se queda con los n elementos ms pequeos.
El elemento medio se insertar en el nodo padre siguiendo la misma lgica de insercin. En caso de no haber nodo padre, se crear un nuevo nodo que pasar a ser la nueva raz. Ejemplo.... 10 20 5 8 12 18 25 65 92 99 Agregar el 4 10 20 4 5 8 12 18 25 65 92 99 Si hay espacio para el elemento, ste se agrega en el nodo. Los elementos estn acomodados de menor a mayor. Ejemplo... 10 20 5 8 12 18 25 65 92 99 Agregar el 56 10 20 65 4 5 8 12 18 25 56 92 99 Cuando el nuevo elemento no cabe en el nodo, se agrega otro nodo y se reparten los elementos. Ejemplo... 10 20 65 4 5 8 12 18 25 56 70 75 80 85 Agregar el 78 10 20 70 4 5 8 12 18 25 56 65 75 78 80 85 El rbol siempre se resiste a crecer, ya que trata de distribuir los elementos en los nodos ya existentes. Ejemplo 10 20 65 90 4 5 8 12 18 25 56 57 60 70 75 80 85 Agregar el 66 10 20 65 90 4 5 8 12 18 25 56 57 60 66 70 80 85 75 10 20
4 5 8 12 18 25 56 57 60 66 70 80 85 65 75 90 1 2 El rbol crece de abajo hacia arriba. Cuando el rbol aumenta de altura slo se agrega una nueva raz. 94 95 94 95 94 95 Proceso de Eliminacin Buscar el elemento a borrar. Si el elemento a borrar est en una nodo hoja, se borra y termina el proceso. Si el elemento a borrar no se encuentra en una hoja, al igual que en un ABB, se buscar al sustituto ms apropiado. El sustituto ser: El ltimo elemento de la hoja ms derecha del subrbol izquierdo del nodo actual (el mayor de los menores). El primer elemento de la hoja ms izquierda del subrbol derecho del nodo actual (el menor de los mayores). Ejemplo... 10 20 65 4 5 8 12 18 25 56 70 75 80 85 Eliminar el 8 10 20 65 4 5 12 18 25 56 70 75 80 85 Cuando el nodo tiene ms elementos que el mnimo, se da de baja al elemento y termina el proceso. Ejemplo... 10 20 65 4 5 8 12 18 25 56 70 75 80 85 10 20 70 4 5 8 12 18 25 65 75 80 85 Eliminar el 56 Cuando el nodo tiene el mnimo se toma un elemento de los hermanos. Ejemplo... 10 20 65 4 5 8 12 18 25 56 70 75 Eliminar el 56 Cuando el nodo tiene el mnimo y los hermanos tambin, se une el nodo con uno de sus hermanos y le libera el nodo sobrante. 10 20 4 5 8 12 18 25 65 70 75 Ejemplo... 10 20
4 5 8 12 18 25 56 57 60 66 70 80 85 65 75 90 Eliminar el 65 Utilizar el menor de los mayores 10 20