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ónMétodo recomendadoRazón
y encaja en un caso del MaestroTeorema MaestroEs más directo y evita dibujar todo el árbol.
Subproblemas de distinto tamañoÁrbol de RecursiónEl Teorema Maestro básico exige subproblemas homogéneos.
El resultado del Maestro no es intuitivo para el estudianteÁrbol como justificación visualEl árbol muestra de dónde sale cada término de la suma.
Recurrencia de resta con ramificaciónÁrbol o ecuación característicaEl á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.

Qué se paga en cada nodo

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)

Renderizando diagrama...

Paso a paso — Árbol de Recursión

  1. 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 .
  2. 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.
  3. Construir el modelo de un nivel genérico i. Para el nivel : nodos , tamaño por nodo , costo por nodo y costo total .
  4. 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 .
  5. Costear las hojas. En el nivel hay hojas. Si cada hoja cuesta constante, el costo total de hojas es proporcional a .
  6. Construir y simplificar la suma total. Se suman los costos de todos los niveles internos más las hojas.
  7. 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 iExpresiónInterpretación
Número de nodosCada nodo genera a hijos por nivel.
Tamaño por nodoCada nivel divide el tamaño por b.
Costo por nodoTrabajo local de un nodo de tamaño n/b^i.
Costo total del nivelSuma 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ónSeñalResultado típicoIntuición
Dominan las hojasEl costo por nivel crece geométricamente al bajar.Hay demasiadas hojas o demasiada ramificación.
Todos los niveles cuestan igualCada nivel cuesta, por ejemplo, cn.Se paga el mismo costo por cada nivel y hay log n niveles.
Domina la raízLos costos decrecen rápido al bajar.El trabajo local inicial pesa más que todo lo que ocurre debajo.
Cuidado

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

NivelNodosCosto por nodoCosto total del nivel
01
12
24

Árbol de los primeros niveles

Renderizando diagrama...

Parámetros
Nivel genérico
Altura
Número de niveles
Hojas
Costo hojas
Suma total
Resultado
Resultado

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

NivelNodosCosto por nodoCosto total del nivel
0111
1212
2414
3818
1

Árbol inicial de Torres de Hanói

Renderizando diagrama...

Nivel genérico
Altura
Suma total
Serie geométrica
Resultado
Resultado

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: .

Por qué no aplica Teorema Maestro básico

El Teorema Maestro básico requiere subproblemas homogéneos de tamaño . Aquí los hijos tienen tamaños diferentes: y .

Árbol no balanceado inicial

Renderizando diagrama...

Costo raíz
Costo nivel 1
Observación
Costo por nivel
Rama más larga
Costo de niveles
Resultado
Cuidado con las hojas

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

RecurrenciaCosto nivel iQué dominaResultado
Hojas / niveles bajos
Todos los niveles
Raíz / niveles superiores

Detalle — T(n)=4T(n/2)+n

Nivel genérico
Altura
Último nivel interno
Suma geométrica

Detalle — T(n)=2T(n/2)+n²

Nivel genérico
Suma geométrica decreciente
Resultado

Errores típicos

Errores frecuentes en el método del árbol

ErrorPor qué está malCorrección
Contar solo nodos y olvidar el costo por nodoEl costo total no depende solo de cuántas llamadas hay.Multiplicar nodos por costo por nodo en cada nivel.
Usar en recurrencias de restaSi 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 hojasEn algunos árboles las hojas dominan el costo total.Agregar explícitamente el costo de hojas a la suma.
Suponer que todos los niveles cuestan igualEso solo ocurre en casos específicos como .Calcular el costo genérico .
Forzar una forma balanceada en un árbol no balanceadoRecurrencias 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ó ordenMuchas sumas se simplifican asintóticamente.Distinguir entre forma exacta y conclusión .

Resumen operativo

Receta mínima
  1. Escribir la recurrencia y separar llamados recursivos de costo local.
  2. Dibujar raíz, nivel 1 y nivel 2.
  3. Encontrar el patrón del nivel genérico.
  4. Calcular la altura hasta el caso base.
  5. Costear hojas.
  6. Sumar niveles internos más hojas.
  7. Identificar término dominante y concluir en notación .

Fórmulas clave

Nivel genérico balanceado
Altura por división
Hojas
Suma total