¿Qué es?
Predecir cómo crecen los recursos de un algoritmo con el tamaño de la entrada. Sus herramientas son cálculo de sucesiones puro: notación asintótica, límites, sumas e integrales, logaritmos y exponenciales, recurrencias.
Fórmulas
- teorema maestro
¿Por qué importa?
La diferencia entre un algoritmo y uno es, a gran escala, la diferencia entre horas y segundos, y ninguna mejora de hardware la cierra.
Las matemáticas que hay detrás
La búsqueda binaria es y la ordenación por comparaciones .
cuando se mantiene entre constantes positivas cuando .
El análisis amortizado de los arrays dinámicos y los casos del teorema maestro son sumas geométricas.
Elegir entre un algoritmo y otro es comparar órdenes de crecimiento.
El lenguaje estándar de tiempo y memoria: , , cotas inferiores .
Las cotas superiores e inferiores de tiempo de ejecución se demuestran con cadenas de desigualdades.
La búsqueda exhaustiva sobre bits cuesta pasos: el tiempo exponencial es la firma de lo intratable.
Las comparaciones asintóticas de tiempos de ejecución son límites cuando .
Los costes de bucles y recursiones son sumas; los números armónicos dan el medio de quicksort.
Convertir sumas como en integrales da .
«Tiempo polinómico» es la frontera entre problemas tratables e intratables (P).
El tiempo de ejecución es una sucesión, a menudo definida por una recurrencia como .
Demuestra la jerarquía de crecimiento usada para comparar algoritmos: , .
Las funciones generatrices resuelven recurrencias y cuentan estructuras en el análisis de algoritmos.
Acotar una suma de costes complicada por otra más sencilla es exactamente como se prueban las cotas asintóticas.
La misma idea que la búsqueda binaria (y
git bisect): partir por la mitad da pasos.
Esta página tiene lo esencial. Un desarrollo más completo (intuición, definición formal, ejemplo resuelto) está en camino.