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.
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.
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
| Sumatoria | Forma cerrada | Orden | Dó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
| Sumatoria | Forma cerrada | Orden | Dó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
| Sumatoria | Forma cerrada / Aproximación | Orden | Dó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)^2 | Algoritmos con subproblemas logarítmicos |
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.
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 doble | Forma cerrada | Orden | Tipo 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 doble | Desarrollo | Forma cerrada | Orden |
|---|---|---|---|
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 doble | Forma cerrada | Orden | Tipo 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
| Propiedad | Fórmula | Para qué sirve |
|---|---|---|
| Linealidad (constante) | Sacar constantes fuera de la sumatoria | |
| Linealidad (suma) | Separar términos de una sumatoria compleja | |
| Cambio de índice | Reindexar para aplicar fórmulas conocidas | |
| Telescópica | Cancelar términos consecutivos | |
| Separación de términos | Dividir la suma en partes convenientes | |
| Inversión de orden | Invertir el orden de suma (útil en pares) | |
| Sumatoria de sumatoria | Colapsar doble a simple | |
| Truco de la suma doble | Sumar la sumatoria con su copia invertida para cancelar términos |