Tabla de Sumatorias Comunes

Fórmulas de sumatorias y propiedades de transformación usadas para cerrar costos iterativos y recurrencias.

9. Tabla de Sumatorias Comunes

En el análisis de algoritmos, las sumatorias aparecen constantemente al contar cuántas veces se ejecuta un bloque de código. Saber resolverlas —o al menos reconocerlas— es tan importante como saber calcular límites.

Esta sección reúne las sumatorias más comunes organizadas en tres niveles de complejidad: simples (un solo índice), dobles (dos índices anidados) y triples (tres índices anidados). Para cada una se muestra la notación de suma, su forma cerrada y un ejemplo de en qué tipo de código aparece.

Convención

En este documento se usan las siguientes notaciones: es el tamaño de la entrada, son los índices de suma, y las fórmulas cerradas son exactas salvo que se indique lo contrario.

¿Por qué importan las sumatorias en algoritmos?

  • For simple : genera una sumatoria simple de la forma .
  • For anidado con límite variable : genera una sumatoria doble. El cuerpo se ejecuta veces.
  • Triple anidado: genera una sumatoria triple. Aparecen en algoritmos de multiplicación de matrices o recorridos de tensores.
Regla de oro

Para resolver una sumatoria doble o triple, se resuelve de adentro hacia afuera, convirtiendo cada sumatoria interna en su forma cerrada antes de continuar con la externa.

9.1 Sumatorias Simples

Una sumatoria simple tiene un solo índice que recorre un rango. Aparecen cuando hay un único ciclo cuyo cuerpo ejecuta una función de ese índice.

9.1.1 Sumatorias básicas de constantes y potencias

Sumatorias básicas de constantes y potencias

SumatoriaForma cerradaOrdenDónde aparece en código
Suma de 1's (constante)for i <- 1 to n do op_constante endfor
Suma de i (aritmética)for i <- 1 to n do for j <- 1 to i do op endfor endfor
Suma de i² (cuadrática)for j <- 1 to i do for k <- 1 to j do op endfor
Suma de i³ (cúbica)Anidamiento de tres ciclos con límites variables
Suma de i^k (potencia k)Ciclo con cuerpo de costo polinomial

9.1.2 Sumatorias geométricas y exponenciales

Sumatorias geométricas y exponenciales

SumatoriaForma cerradaOrdenDónde aparece en código
Geométrica (r != 1)Árbol binario completo: número total de nodos
Geométrica decreciente (0 < r < 1) (constante)Convergencia de serie infinita
Potencias de 2 (suma)Torres de Hanoi, Fibonacci recursivo
Potencias de 2 (suma parcial)Árbol binario de altura log(n)
Suma de a^i (a entero > 1)Recursión de tipo aT(n-1) + c

9.1.3 Sumatorias logarítmicas y armónicas

Sumatorias logarítmicas y armónicas

SumatoriaForma cerrada / AproximaciónOrdenDónde aparece
Armónica H(n)Quicksort caso promedio, búsqueda en hashing
Suma de log(i)Merge Sort, Heap Sort: costo total de comparaciones
Suma de i*log(i)Algoritmos de ordenamiento anidados
Suma de 1/i² (convergente) (constante)Análisis de probabilidades en hashing
Suma de log(i)^2Algoritmos con subproblemas logarítmicos
Nota

La serie armónica es fundamental en el análisis del caso promedio de Quicksort y aparece frecuentemente cuando hay ciclos cuyo número de iteraciones depende de un valor que decrece de forma no uniforme.

9.2 Sumatorias Dobles

Una sumatoria doble tiene dos índices anidados. Aparece cuando hay dos ciclos anidados, donde el límite del ciclo interno puede depender del externo.

Cómo resolverlas

Primero se resuelve la sumatoria interna, obteniendo una función de , y luego esa función se usa como término de la sumatoria externa.

9.2.1 Dobles con límites fijos

Ambos índices van de 1 a n (límites independientes entre sí).

Sumatorias dobles con límites fijos

Sumatoria dobleForma cerradaOrdenTipo de código
for i <- 1 to n do for j <- 1 to n do op_constante
for i <- 1 to n do for j <- 1 to n do op que cuesta i
for i <- 1 to n do for j <- 1 to n do op que cuesta j
Cuerpo con costo proporcional a i*j
(c constante)Dos ciclos anidados con cuerpo de costo c

9.2.2 Dobles con límite variable (el más común en clase)

El límite del ciclo interno depende del índice externo. Son las más frecuentes al analizar algoritmos de ordenamiento.

Sumatorias dobles con límite variable

Sumatoria dobleDesarrolloForma cerradaOrden
Ejemplo de clase

La sumatoria aparece al contar el encabezado del for interno en el ejemplo de AlgoritmoSM2 con límite variable.

9.2.3 Dobles con ciclos de tipo logarítmico

Cuando uno de los ciclos usa multiplicación en vez de incremento, por ejemplo j <- j*2, el límite de iteraciones es logarítmico.

Sumatorias dobles con ciclos de tipo logarítmico

Sumatoria dobleForma cerradaOrdenTipo de código
for i <- 1 to n do j <- 1 while j <= n: j <- j*2
Ciclo externo lineal, interno geométrico
for i <- 1 to log n do for j <- 1 to n do op
Doble ciclo con ambos límites log

9.3 Propiedades útiles para manipular sumatorias

Estas propiedades permiten descomponer o simplificar sumatorias complejas antes de resolverlas.

Propiedades útiles para manipular sumatorias

PropiedadFórmulaPara qué sirve
Linealidad (constante)Sacar constantes fuera de la sumatoria
Linealidad (suma)Separar términos de una sumatoria compleja
Cambio de índiceReindexar para aplicar fórmulas conocidas
TelescópicaCancelar términos consecutivos
Separación de términosDividir la suma en partes convenientes
Inversión de ordenInvertir el orden de suma (útil en pares)
Sumatoria de sumatoriaColapsar doble a simple
Truco de la suma dobleSumar la sumatoria con su copia invertida para cancelar términos