Introducción a los Árboles B

Los árboles B son una clase de árboles balanceados que se utilizan principalmente en sistemas de bases de datos y sistemas de archivos. Fueron introducidos por Rudolf Bayer y Ed McCreight en 1972. Los árboles B son una generalización de los árboles binarios de búsqueda, pero permiten más de dos hijos por nodo, lo que los hace más eficientes para operaciones de lectura y escritura en discos.

Características de los Árboles B

  1. Balanceo Automático: Los árboles B se mantienen balanceados automáticamente, lo que garantiza que las operaciones de búsqueda, inserción y eliminación se realicen en tiempo logarítmico.
  2. Nodos con Múltiples Hijos: A diferencia de los árboles binarios, los nodos en un árbol B pueden tener más de dos hijos.
  3. Altura Baja: Debido a que cada nodo puede tener múltiples hijos, la altura del árbol B es menor en comparación con los árboles binarios, lo que mejora la eficiencia de las operaciones.
  4. Uso en Sistemas de Almacenamiento: Los árboles B son especialmente útiles en sistemas de bases de datos y sistemas de archivos donde se requiere un acceso rápido a grandes cantidades de datos almacenados en disco.

Propiedades de los Árboles B

  1. Orden del Árbol (m): Un árbol B de orden m es un árbol en el que cada nodo puede tener como máximo m hijos.
  2. Número de Claves: Cada nodo interno (excepto la raíz) debe contener al menos ⌈m/2⌉ - 1 claves y como máximo m - 1 claves.
  3. Número de Hijos: Cada nodo interno (excepto la raíz) debe tener al menos ⌈m/2⌉ hijos y como máximo m hijos.
  4. Raíz: La raíz debe tener al menos dos hijos si no es una hoja.
  5. Hojas: Todas las hojas deben estar al mismo nivel.

Estructura de un Nodo en un Árbol B

Un nodo en un árbol B contiene:

  • Un número de claves (k1, k2, ..., kn) que están ordenadas.
  • Un número de punteros (P0, P1, ..., Pn) que apuntan a los hijos del nodo.

Ejemplo de un Árbol B de Orden 3

       [10 | 20]
      /    |    \
  [5 | 7] [15] [25 | 30]

Operaciones en Árboles B

Inserción

La inserción en un árbol B implica encontrar la posición correcta para la nueva clave y luego insertarla. Si el nodo en el que se va a insertar la clave está lleno, se debe dividir el nodo antes de insertar la clave.

Algoritmo de Inserción

  1. Buscar la Posición: Encuentra la posición correcta para la nueva clave.
  2. Insertar la Clave: Si el nodo tiene espacio, inserta la clave en el nodo.
  3. División del Nodo: Si el nodo está lleno, divide el nodo en dos y mueve la clave del medio al nodo padre.

Ejemplo de Inserción

Supongamos que tenemos un árbol B de orden 3 y queremos insertar la clave 17:

       [10 | 20]
      /    |    \
  [5 | 7] [15] [25 | 30]
  1. Encuentra la posición correcta para 17, que es en el nodo [15].
  2. Inserta 17 en el nodo [15], resultando en [15 | 17].
  3. El nodo [15 | 17] no está lleno, por lo que no se necesita dividir.

Eliminación

La eliminación en un árbol B implica encontrar la clave a eliminar y luego eliminarla. Si la eliminación deja al nodo con menos de ⌈m/2⌉ - 1 claves, se debe realizar una combinación o redistribución de claves.

Algoritmo de Eliminación

  1. Buscar la Clave: Encuentra la clave a eliminar.
  2. Eliminar la Clave: Elimina la clave del nodo.
  3. Combinación o Redistribución: Si el nodo tiene menos de ⌈m/2⌉ - 1 claves, combina el nodo con un nodo hermano o redistribuye las claves entre los nodos hermanos.

Ejemplo de Eliminación

Supongamos que tenemos el siguiente árbol B de orden 3 y queremos eliminar la clave 15:

       [10 | 20]
      /    |    \
  [5 | 7] [15] [25 | 30]
  1. Encuentra la clave 15 en el nodo [15].
  2. Elimina la clave 15, resultando en un nodo vacío.
  3. Combina el nodo vacío con su hermano, resultando en:
       [10 | 20]
      /        \
  [5 | 7]    [25 | 30]

Ejercicios Prácticos

Ejercicio 1: Inserción en un Árbol B

Dado el siguiente árbol B de orden 3, inserta la clave 12:

       [10 | 20]
      /    |    \
  [5 | 7] [15] [25 | 30]

Solución

  1. Encuentra la posición correcta para 12, que es en el nodo [15].
  2. Inserta 12 en el nodo [15], resultando en [12 | 15].
  3. El nodo [12 | 15] no está lleno, por lo que no se necesita dividir.
       [10 | 20]
      /    |    \
  [5 | 7] [12 | 15] [25 | 30]

Ejercicio 2: Eliminación en un Árbol B

Dado el siguiente árbol B de orden 3, elimina la clave 20:

       [10 | 20]
      /    |    \
  [5 | 7] [15] [25 | 30]

Solución

  1. Encuentra la clave 20 en el nodo [10 | 20].
  2. Elimina la clave 20, resultando en:
       [10]
      /    \
  [5 | 7] [15 | 25 | 30]

Conclusión

Los árboles B son estructuras de datos eficientes y balanceadas que se utilizan ampliamente en sistemas de bases de datos y sistemas de archivos. Su capacidad para manejar grandes cantidades de datos y mantener un rendimiento constante los hace ideales para estas aplicaciones. En este módulo, hemos aprendido sobre las características, propiedades y operaciones básicas de los árboles B, así como ejemplos prácticos de inserción y eliminación. Con esta base, estás preparado para explorar aplicaciones más avanzadas de los árboles B en el contexto de sistemas de almacenamiento y bases de datos.

© Copyright 2024. Todos los derechos reservados