Método del Árbol de Recursión
Construcción, análisis por niveles y resolución de recurrencias mediante árboles de llamadas.
Cuándo aplica el método del árbol
El método del árbol de recursión representa una ecuación de recurrencia como un árbol de llamadas. Cada nodo representa una llamada recursiva, cada nivel representa una profundidad de expansión y el costo total se obtiene sumando el costo de todos los niveles más el costo de las hojas.
Aplica pedagógicamente a cualquier ecuación de recurrencia, pero es especialmente útil cuando el Teorema Maestro no aplica, por ejemplo en recurrencias no balanceadas como , o cuando la ecuación tiene más de un llamado recursivo de distinto tamaño.
Cuándo usar Teorema Maestro y cuándo usar Árbol de Recursión
| Situación | Método recomendado | Razón |
|---|---|---|
| y encaja en un caso del Maestro | Teorema Maestro | Es más directo y evita dibujar todo el árbol. |
| Subproblemas de distinto tamaño | Árbol de Recursión | El Teorema Maestro básico exige subproblemas homogéneos. |
| El resultado del Maestro no es intuitivo para el estudiante | Árbol como justificación visual | El árbol muestra de dónde sale cada término de la suma. |
| Recurrencia de resta con ramificación | Árbol o ecuación característica | El árbol permite visualizar crecimiento exponencial por profundidad. |
Modelo mental del árbol
La raíz representa el primer ambiente de ejecución: la llamada original . Sus hijos representan las llamadas recursivas que esa raíz dispara. Cada hijo vuelve a generar otros hijos hasta que se alcanza el caso base.
El costo escrito dentro de un nodo es el trabajo no recursivo: dividir, comparar, combinar, imprimir o ejecutar instrucciones locales. Las llamadas recursivas no se cuentan dentro de ; se expanden como hijos del árbol.
Esqueleto de árbol para T(n)=2T(n/2)+f(n)
Paso a paso — Árbol de Recursión
- Detectar la recurrencia y extraer parámetros. Identifica cuántos llamados hay, el factor de reducción o resta, y el costo por nodo . Ejemplo: tiene , y .
- Dibujar los primeros 3 niveles del árbol. La raíz representa el primer ambiente. Su costo en el nodo es . Cada hijo tiene tamaño y costo . Dibujar tres niveles suele bastar para ver el patrón.
- Construir el modelo de un nivel genérico i. Para el nivel : nodos , tamaño por nodo , costo por nodo y costo total .
- Determinar la altura del árbol. Si el caso base es y el tamaño se divide por , se resuelve , por lo tanto . El número de niveles es .
- Costear las hojas. En el nivel hay hojas. Si cada hoja cuesta constante, el costo total de hojas es proporcional a .
- Construir y simplificar la suma total. Se suman los costos de todos los niveles internos más las hojas.
- Identificar qué domina. Compara niveles intermedios contra hojas y raíz para decidir el orden final.
Suma total estándar
Esta fórmula suma el trabajo en todos los niveles del árbol. El término representa el nivel actual, desde la raíz (0) hasta justo antes de las hojas (h-1). En cada nivel, tenemos nodos (factor de ramificación elevado al nivel), cada uno procesando un subproblema de tamaño . La altura del árbol determina cuántos niveles recorremos, y el término final contabiliza el costo total de las hojas en el nivel base.
Modelo del nivel genérico i para recurrencias balanceadas
| Elemento del nivel i | Expresión | Interpretación |
|---|---|---|
| Número de nodos | Cada nodo genera a hijos por nivel. | |
| Tamaño por nodo | Cada nivel divide el tamaño por b. | |
| Costo por nodo | Trabajo local de un nodo de tamaño n/b^i. | |
| Costo total del nivel | Suma del trabajo local de todos los nodos del nivel. |
Patrones de dominancia
Después de construir la suma total, el paso decisivo es identificar qué parte del árbol domina el crecimiento asintótico.
Patrones de dominancia en árboles de recursión
| Patrón | Señal | Resultado típico | Intuición |
|---|---|---|---|
| Dominan las hojas | El costo por nivel crece geométricamente al bajar. | Hay demasiadas hojas o demasiada ramificación. | |
| Todos los niveles cuestan igual | Cada nivel cuesta, por ejemplo, cn. | Se paga el mismo costo por cada nivel y hay log n niveles. | |
| Domina la raíz | Los costos decrecen rápido al bajar. | El trabajo local inicial pesa más que todo lo que ocurre debajo. |
No decidas el resultado mirando solo la cantidad de hojas. Un árbol puede tener muchas hojas, pero si el costo por nivel cae suficientemente rápido, la raíz puede dominar. Siempre suma o compara el costo por nivel.
Ejemplo 1 — T(n)=2T(n/2)+cn
Resolver , con . Este patrón corresponde a Merge Sort o al mejor caso de Quicksort.
Primeros niveles de T(n)=2T(n/2)+cn
| Nivel | Nodos | Costo por nodo | Costo total del nivel |
|---|---|---|---|
| 0 | 1 | ||
| 1 | 2 | ||
| 2 | 4 | ||
Árbol de los primeros niveles
y por tanto . El crecimiento es linealítmico.
Ejemplo 2 — T(n)=2T(n−1)+1
Resolver , con . Este es el patrón de Torres de Hanói: resta y serás vencido.
Primeros niveles de T(n)=2T(n−1)+1
| Nivel | Nodos | Costo por nodo | Costo total del nivel |
|---|---|---|---|
| 0 | 1 | 1 | 1 |
| 1 | 2 | 1 | 2 |
| 2 | 4 | 1 | 4 |
| 3 | 8 | 1 | 8 |
| 1 |
Árbol inicial de Torres de Hanói
y por tanto . El crecimiento es exponencial.
Ejemplo enriquecido — T(n)=T(n/3)+T(2n/3)+cn
Un caso donde el árbol de recursión es especialmente útil es en recurrencias no balanceadas como: .
El Teorema Maestro básico requiere subproblemas homogéneos de tamaño . Aquí los hijos tienen tamaños diferentes: y .
Árbol no balanceado inicial
En árboles no balanceados no todas las ramas tienen la misma altura. Para una explicación inicial basta usar la rama más larga para acotar el número de niveles y observar que el costo por nivel completo es lineal. Para una demostración formal fina se usa sustitución o el teorema Akra–Bazzi, que está fuera del alcance de este módulo.
Ejemplos enriquecidos de dominancia
Ejemplos rápidos de dominancia
| Recurrencia | Costo nivel i | Qué domina | Resultado |
|---|---|---|---|
| Hojas / niveles bajos | |||
| Todos los niveles | |||
| Raíz / niveles superiores |
Detalle — T(n)=4T(n/2)+n
Detalle — T(n)=2T(n/2)+n²
Errores típicos
Errores frecuentes en el método del árbol
| Error | Por qué está mal | Corrección |
|---|---|---|
| Contar solo nodos y olvidar el costo por nodo | El costo total no depende solo de cuántas llamadas hay. | Multiplicar nodos por costo por nodo en cada nivel. |
| Usar en recurrencias de resta | Si el tamaño pasa de n a n−1, la altura no es logarítmica. | Para , la altura suele ser lineal en n. |
| Olvidar las hojas | En algunos árboles las hojas dominan el costo total. | Agregar explícitamente el costo de hojas a la suma. |
| Suponer que todos los niveles cuestan igual | Eso solo ocurre en casos específicos como . | Calcular el costo genérico . |
| Forzar una forma balanceada en un árbol no balanceado | Recurrencias como no tienen todos los hijos del mismo tamaño. | Analizar suma de tamaños por nivel y altura de la rama más larga. |
| Declarar resultado exacto cuando solo se demostró orden | Muchas sumas se simplifican asintóticamente. | Distinguir entre forma exacta y conclusión . |
Resumen operativo
- Escribir la recurrencia y separar llamados recursivos de costo local.
- Dibujar raíz, nivel 1 y nivel 2.
- Encontrar el patrón del nivel genérico.
- Calcular la altura hasta el caso base.
- Costear hojas.
- Sumar niveles internos más hojas.
- Identificar término dominante y concluir en notación .