Tema 6: Estructuras de Datos Jerárquicas (Árboles Complejos)
1. Resumen Ejecutivo
Esta sesión marca el salto de estructuras simples a estructuras optimizadas para rendimiento. Mientras que un Árbol Binario de Búsqueda (ABB) puede degradarse y volverse lento (O(n)), los Árboles AVL y Árboles B introducen mecanismos de "auto-balanceo" para garantizar tiempos de búsqueda eficientes de orden logarítmico (O(\log n)). El foco principal no es la implementación en código (que es compleja), sino entender la lógica de reequilibrio (rotaciones) y las reglas de estructuración de los árboles multicamino.
2. Conceptos Clave
- Factor de Equilibrio (FE): Valor numérico que indica cuán descompensado está un nodo (Altura derecha - Altura izquierda).
- Árbol AVL: Árbol Binario de Búsqueda que se mantiene equilibrado automáticamente mediante rotaciones (FE siempre es -1, 0 o 1).
- Rotación: Operación local para corregir el desequilibrio moviendo nodos y reestructurando enlaces.
- Árbol Multicamino: Árbol donde un nodo puede tener más de 2 hijos (Grado > 2).
- Árbol B: Tipo de árbol multicamino auto-balanceado, optimizado para sistemas de almacenamiento y bases de datos.
3. Desarrollo del Temario
3.1. Motivación:El problema de los ABB
En un Árbol Binario de Búsqueda (ABB) normal, la estructura depende totalmente del orden de inserción.
-
El Problema: Si insertamos datos ordenados (ej. 1, 2, 3, 4, 5), el árbol se convierte en una "lista enlazada", perdiendo su eficiencia. La búsqueda pasa de ser rápida a ser lineal O(n).
-
La Solución: Necesitamos árboles que mantengan su altura controlada (O(\log n)) independientemente del orden de inserción. Estos son los Árboles Equilibrados (como el AVL).
3.2. Árboles Equilibrados y Factor de Equilibrio (FE)Para controlar la altura, medimos el "peso" de cada lado del árbol usando el Factor de Equilibrio.
- Valores de Altura:
-
Árbol vacío: altura = -1.
-
Árbol de 1 nodo: altura = 0.
-
Interpretación del FE:
- 0: Perfectamente equilibrado.
- 1 o -1: Equilibrado (aceptable en AVL).
-
> 1: Desequilibrio hacia la derecha (pesa más la derecha).
-
< -1: Desequilibrio hacia la izquierda (pesa más la izquierda).
Nota del Profesor: "Yo esto lo miro como una balanza. Si pesa más un lado, tenemos que realizar una rotación para compensar."
3.3. Árboles AVL (Adelson-Velskii y Landis)Definición: Es un ABB donde el FE de cualquier nodo es estrictamente -1, 0 o 1.
-
Autobalanceable: En cada inserción o borrado, si se rompe la condición de equilibrio (FE sale del rango), el árbol se "arregla" solo.
-
Mecanismo: El arreglo se realiza mediante Rotaciones.
Tipos de RotacionesLas rotaciones buscan subir nodos de la rama larga y bajar nodos de la rama corta para equilibrar la altura. Se realizan de forma ascendente desde el nodo donde ocurre el problema.
- Rotación Simple a la Derecha (RSD):
-
Cuándo se usa: Desequilibrio hacia la izquierda (FE negativo, ej: -2) provocado por un hijo izquierdo.
-
Lógica: El hijo izquierdo sube a ser la nueva raíz; la antigua raíz baja a la derecha.
-
Rotación Simple a la Izquierda (RSI):
-
Cuándo se usa: Desequilibrio hacia la derecha (FE positivo, ej: +2) provocado por un hijo derecho.
-
Lógica: El hijo derecho sube; la antigua raíz baja a la izquierda.
-
Rotaciones Dobles (Zig-Zag):
- Se usan cuando el desequilibrio no es lineal (ej. el árbol pesa a la derecha, pero el hijo derecho pesa a la izquierda).
-
Doble a la Derecha: Rotación Izquierda sobre el hijo + Rotación Derecha sobre la raíz.
-
Doble a la Izquierda: Rotación Derecha sobre el hijo + Rotación Izquierda sobre la raíz.
¡OJO AL DATO!: En el examen o ejercicios, no se trata solo de saber que existe la rotación, sino de identificar cuál aplicar. Si insertas y el camino hace un "codo" (derecha-izquierda o izquierda-derecha), necesitas una rotación doble. Si es recto (derecha-derecha), es simple.
3.4. Árboles Multicamino: Árboles BA diferencia de los binarios, aquí los nodos pueden tener muchos hijos. Son fundamentales en bases de datos y sistemas de archivos.
Reglas del Árbol B (Orden m)1. Estructura del Nodo: Un nodo contiene claves (datos ordenados) que actúan como separadores.
-
Si tengo k claves, tengo k+1 hijos.
-
Ejemplo: Si un nodo tiene las claves [10, 20], tendrá 3 hijos:
- Hijo 1: Valores < 10.
- Hijo 2: Valores entre 10 y 20.
-
Hijo 3: Valores > 20 .
-
Llenado:
- Máximo de hijos: m.
-
Mínimo de hijos: m/2 (excepto raíz y hojas).
-
Hojas: Todas las hojas deben estar al mismo nivel (árbol perfectamente plano por abajo).
Operación de Inserción (Proceso de División)El profesor enfatizó este proceso visualmente:
- Buscas la hoja donde debería ir el dato.
- Si cabe (nodo no lleno): Lo insertas ordenado.
-
Si NO cabe (nodo lleno): Ocurre una división (split).
-
El nodo se parte en dos.
-
La clave mediana (la del medio) sube al nodo padre.
-
Las claves menores se quedan en el hijo izquierdo, las mayores en el derecho.
-
Este proceso puede propagarse hacia arriba (recursivo) si el padre también está lleno.
4. Preguntas de Autoevaluación1. Cálculo de FE: Si un nodo tiene un subárbol derecho de altura 3 y un subárbol izquierdo de altura 1, ¿cuál es su Factor de Equilibrio y qué indica?
- Lógica de AVL: Tras insertar el valor 3 en un árbol AVL con nodos 1 (raíz) y 2 (hijo derecho), se produce un desequilibrio. ¿Qué tipo de rotación se debe aplicar?
- Estructura Árbol B: En un Árbol B de orden 5, ¿cuál es el número máximo de claves que puede almacenar un nodo antes de tener que dividirse?
- Concepto General: ¿Por qué se dice que la complejidad de búsqueda en un AVL es siempre O(\log n) mientras que en un ABB normal puede ser O(n)?