B+ TREE: Buscar, insertar y eliminar OperaSupuestos de Alcance

โšก Resumen inteligente

El รกrbol B+ es un รญndice dinรกmico multinivel que almacena punteros de datos รบnicamente en los nodos hoja enlazados, lo que permite bรบsquedas precisas y rรกpidas. Este documento describe las reglas del รกrbol B+, sus diferencias con un รกrbol B y las operaciones de bรบsqueda, inserciรณn y eliminaciรณn.

  • ๐Ÿƒ Almacenamiento de hojas: Un รกrbol B+ mantiene los punteros de datos solo en los nodos hoja, a diferencia de un รกrbol B.
  • ๐Ÿ”— Hojas enlazadas: Todos los nodos hoja estรกn conectados, por lo que un escaneo de rango completo requiere una pasada lineal.
  • ๐Ÿ” Buscar: La funciรณn de bรบsqueda realiza una bรบsqueda binaria en el รกrbol y devuelve el registro coincidente.
  • โž• Insertar: Cuando una hoja se llena, la mitad de sus elementos se mueven a una nueva hoja y el elemento padre se actualiza.
  • โž– Borrar: La eliminaciรณn borra una entrada hoja y toma prestadas o fusiona entradas hermanas para mantener el equilibrio.

B+ TREE: Buscar, insertar y eliminar Operaciones Ejemplo

ยฟQuรฉ es un รกrbol B+?

A รrbol B+ Se utiliza principalmente para implementar la indexaciรณn dinรกmica en mรบltiples niveles. En comparaciรณn con un รกrbol B, el รกrbol B+ almacena los punteros de datos รบnicamente en los nodos hoja, lo que hace que el proceso de bรบsqueda sea mรกs preciso y rรกpido.

Reglas para el รกrbol B+

Aquรญ estรกn las reglas esenciales para un รกrbol B+.

  • Las hojas se utilizan para almacenar registros de datos.
  • Los registros se almacenan en los nodos internos del รกrbol.
  • Si el valor de una clave de destino es menor que el del nodo interno, se sigue el puntero que se encuentra justo a su izquierda.
  • Si el valor de una clave de destino es mayor o igual que el del nodo interno, entonces se sigue el puntero que se encuentra justo a su derecha.
  • La raรญz tiene un mรญnimo de dos hijos.

ยฟPor quรฉ utilizar el รกrbol B+?

Estas son las razones para utilizar un รกrbol B+:

  • Las claves se utilizan principalmente para facilitar la bรบsqueda, dirigiendo al usuario a la hoja correcta.
  • Un รกrbol B+ utiliza un "factor de relleno" para gestionar el aumento y la disminuciรณn en un รกrbol.
  • En los รกrboles B+, se pueden colocar fรกcilmente numerosas claves en la pรกgina de memoria porque no tienen los datos asociados con los nodos interiores. Por lo tanto, accederรก rรกpidamente a los datos del รกrbol que se encuentran en el nodo hoja.
  • Un escaneo completo de todos los elementos requiere solo una pasada lineal porque todos los nodos hoja de un รกrbol B+ estรกn conectados entre sรญ.

รrbol B+ versus รกrbol B

Estas son las principales diferencias entre un รกrbol B+ y un รกrbol B.

รrbol B+ รrbol B
Las claves de bรบsqueda se pueden repetir. Las claves de bรบsqueda no pueden ser redundantes.
Los datos solo se guardan en los nodos hoja. Tanto los nodos hoja como los nodos internos pueden almacenar datos.
Los datos almacenados en el nodo hoja hacen que la bรบsqueda sea mรกs precisa y rรกpida. La bรบsqueda es lenta debido a los datos almacenados en los nodos hoja e internos.
La eliminaciรณn no es difรญcil, ya que un elemento solo se elimina de un nodo hoja. La eliminaciรณn de elementos es un proceso complicado y que requiere mucho tiempo.
Los nodos hoja vinculados hacen que la bรบsqueda sea eficiente y rรกpida. No se pueden vincular nodos hoja.

Buscar Operadisrupciรณn

En un รกrbol B+, la bรบsqueda es uno de los procedimientos mรกs fรกciles de ejecutar y proporciona resultados rรกpidos y precisos.

Se aplica el siguiente algoritmo de bรบsqueda:

  • Para encontrar el registro requerido, debe ejecutar el bรบsqueda binaria en los registros disponibles en el รrbol.
  • En caso de una coincidencia exacta con la clave de bรบsqueda, se devuelve al usuario el registro correspondiente.
  • En caso de que la clave exacta no se encuentre en la bรบsqueda en el nodo principal, actual o hoja, se muestra al usuario un "mensaje no encontrado".
  • El proceso de bรบsqueda se puede volver a ejecutar para obtener resultados mejores y mรกs precisos.

Buscar OperaAlgoritmo de ciรณn

1. Call the binary search method on the records in the B+ Tree.
2. If the search parameters match the exact key
       The accurate result is returned and displayed to the user
   Else, if the node being searched is the current and the exact key is not found by the algorithm
       Display the statement "Recordset cannot be found."

Salida: El conjunto de registros coincidentes con la clave exacta se muestra al usuario; de lo contrario, se le muestra un intento fallido.

recuadro Operadisrupciรณn

El siguiente algoritmo es aplicable para la operaciรณn de inserciรณn:

  • El 50 por ciento de los elementos de los nodos se trasladan a una nueva hoja para su almacenamiento.
  • El nodo padre de la nueva hoja estรก vinculado con precisiรณn mediante el valor mรญnimo de la clave y una nueva ubicaciรณn en el รกrbol.
  • Divida el nodo principal en mรกs ubicaciones en caso de que se utilice por completo.
  • Ahora, para obtener mejores resultados, la clave central se asocia con el nodo de nivel superior de esa hoja.
  • Hasta que no se encuentre el nodo de nivel superior, continรบe repitiendo el proceso explicado en los pasos anteriores.

recuadro OperaAlgoritmo de ciรณn

1. If inserting at least 1 entry into the leaf container does not make it full, then add the record.
2. Else, divide the node into more locations to fit more records.
   a. Assign a new leaf and transfer 50 percent of the node elements to a new placement in the tree.
   b. The minimum key of the binary tree leaf and its new key address are associated with the top-level node.
   c. Divide the top-level node if it gets full of keys and addresses.
      i. Similarly, insert a key in the center of the top-level node in the hierarchy of the Tree.
   d. Continue to execute the above steps until a top-level node is found that does not need to be divided anymore.
3. Build a new top-level root node of 1 key and 2 indicators.

Salida: El algoritmo determinarรก el elemento y lo insertarรก con รฉxito en el nodo hoja requerido.

recuadro Operadisrupciรณn

El ejemplo de ejemplo del รกrbol B+ anterior se explica en los pasos siguientes:

  • En primer lugar, tenemos 3 nodos, y los tres primeros elementos, que son 1, 4 y 6, se aรฑaden en las ubicaciones apropiadas de los nodos.
  • El siguiente valor en la serie de datos es 12, que debe formar parte del รกrbol.
  • Para lograr esto, divide el nodo y agrega 6 como elemento puntero.
  • Ahora, se crea una jerarquรญa derecha de un รกrbol y los valores de datos restantes se ajustan en consecuencia mediante keeping Tenga en cuenta las reglas aplicables de valores iguales o mayores que los nodos clave-valor de la derecha.

Eliminar Operadisrupciรณn

La complejidad del procedimiento de eliminaciรณn en el รกrbol B+ supera la de la funcionalidad de inserciรณn y bรบsqueda.

El siguiente algoritmo se aplica al eliminar un elemento del รกrbol B+:

  • En primer lugar, debemos localizar una entrada hoja en el รกrbol que contenga la clave y el puntero, y luego eliminar la entrada hoja del รกrbol si cumple las condiciones exactas para la eliminaciรณn del registro.
  • En caso de que el nodo hoja cumpla con el requisito de estar medio lleno, la operaciรณn se completa; de lo contrario, el nodo hoja tiene entradas mรญnimas y no se puede eliminar.
  • Los demรกs nodos vinculados a la derecha y a la izquierda pueden eliminar cualquier entrada y luego moverla a la hoja. Si no se cumplen estos criterios, deben combinar el nodo hoja con su nodo vinculado en la jerarquรญa del รกrbol.
  • Al fusionarse un nodo hoja con sus vecinos a la derecha o a la izquierda, se eliminan las entradas de valores en el nodo hoja o en el vecino vinculado que apuntan al nodo de nivel superior.

Eliminar Operadisrupciรณn

El ejemplo anterior ilustra el procedimiento para eliminar un elemento de un รกrbol B+ de un orden especรญfico.

  • En primer lugar, en el รกrbol se identifican las ubicaciones exactas del elemento que se va a eliminar.
  • En este caso, el elemento que se va a eliminar solo se puede identificar con precisiรณn a nivel de hoja y no en su posiciรณn de รญndice. Por lo tanto, el elemento se puede eliminar sin afectar las reglas de eliminaciรณn, que es el valor de la clave mรญnima.

Eliminar Operadisrupciรณn

  • En el ejemplo anterior, tenemos que eliminar 31 del รกrbol.
  • Necesitamos localizar las instancias de 31 en el รndice y la Hoja.
  • Podemos observar que el nodo 31 estรก disponible tanto en el nodo รญndice como en el nodo hoja. Por lo tanto, lo eliminamos de ambas instancias.
  • Pero tenemos que rellenar el รญndice que apunta al 42. Ahora buscaremos al hijo derecho menor que 25, tomaremos el valor mรญnimo y lo colocaremos como รญndice. Asรญ, como el 42 es el รบnico valor presente, se convertirรก en el รญndice.

Eliminar OperaAlgoritmo de ciรณn

1) Start at the root and go up to the leaf node containing the key K.
2) Find the node n on the path from the root to the leaf node containing K.
   A. If n is root, remove K
      a. if root has more than one key, done
      b. if root has only K
         i)  if any of its child nodes can lend a node
             Borrow key from the child and adjust child links
         ii) Otherwise merge the children nodes. It will be a new root
      c. If n is an internal node, remove K
         i)  If n has at least ceil(m/2) keys, done!
         ii) If n has less than ceil(m/2) keys,
             If a sibling can lend a key,
                Borrow key from the sibling and adjust keys in n and the parent node
                Adjust child links
             Else
                Merge n with its sibling
                Adjust child links
      d. If n is a leaf node, remove K
         i)  If n has at least ceil(M/2) elements, done!
             In case the smallest key is deleted, push up the next key
         ii) If n has less than ceil(m/2) elements
             If the sibling can lend a key
                Borrow key from a sibling and adjust keys in n and its parent node
             Else
                Merge n and its sibling
                Adjust keys in the parent node

Salida: Se elimina la clave โ€œKโ€ y se toman prestadas claves de los nodos hermanos para ajustar los valores en n y sus nodos padres si es necesario.

Preguntas Frecuentes

Los รกrboles B+ indexan las tablas grandes y los almacenes de caracterรญsticas que impulsan la IA y el anรกlisis. Gracias a que las hojas estรกn vinculadas, los escaneos de rangos sobre filas o incrustaciones son rรกpidos, lo que permite que los sistemas de IA obtengan datos de entrenamiento de manera eficiente mientras la base de datos se encarga de la indexaciรณn.

Sรญ. Los asistentes de IA pueden producir cรณdigo de inserciรณn, bรบsqueda y eliminaciรณn de รกrboles B+ en C++, Java, o Python A partir de una descripciรณn simple, pruebe el resultado con atenciรณn, ya que es fรกcil cometer errores sutiles en la lรณgica de divisiรณn y fusiรณn.

El orden (m) es el nรบmero mรกximo de hijos que puede tener un nodo. Un nodo puede contener hasta m โˆ’ 1 claves y debe tener al menos ceil(m/2) hijos, lo que mantiene el รกrbol equilibrado y poco profundo.

Los รกrboles B+ son el รญndice predeterminado en bases de datos relacionales como MySQL (InnoDB), PostgreSQL, y Oracley en sistemas de archivos como NTFS y ext4. Sus hojas vinculadas hacen que las consultas de rango y las lecturas secuenciales sean muy eficientes.

Resumir este post con: