Análisis asintótico
Este término se refiere al análisis del rendimiento del algoritmo bajo el supuesto de que los datos sobre los que opera el algoritmo (la entrada ) son, en términos sencillos, "lo suficientemente grandes como para que hacerlo más grande no cambie la conclusión". Aunque no es necesario especificar el tamaño exacto de la entrada (solo necesitamos un límite superior), el conjunto de datos en sí tiene debe especificar .
Tenga en cuenta que hasta ahora solo hemos hablado del método de análisis; no hemos especificado exactamente qué cantidad estamos analizando (¿complejidad del tiempo? ¿complejidad del espacio?), y tampoco hemos especificado qué métrica nos interesa (¿en el peor de los casos, en el mejor de los casos, en el promedio?).
En la práctica, el término análisis asintótico se refiere comúnmente a la complejidad de tiempo límite superior de un algoritmo, es decir, el peor desempeño del caso medido por el tiempo de ejecución total, que está representado por la notación de gran Oh (por ejemplo, un algoritmo de clasificación podría serlo O(nlogn)
).
Análisis amortizado
Este término se refiere al análisis del rendimiento del algoritmo basado en una secuencia específica de operaciones que tiene como objetivo el peor de los casos , es decir, el análisis amortizado implica que la métrica es el peor rendimiento del caso (aunque todavía no dice qué cantidad se está midiendo ). Para realizar este análisis, necesitamos especificar el tamaño de la entrada, pero no necesitamos hacer suposiciones sobre su forma.
En términos sencillos, el análisis amortizado es elegir un tamaño arbitrario para la entrada y luego "reproducir" el algoritmo. Siempre que se deba tomar una decisión que dependa de la entrada, se toma el peor camino¹. Una vez que el algoritmo se ha ejecutado hasta su finalización, dividimos la complejidad calculada por el tamaño de la entrada para producir el resultado final.
Nota: Para ser precisos, el peor camino teóricamente posible . Si tiene un vector que duplica dinámicamente su tamaño cada vez que se agota su capacidad, "el peor de los casos" no significa asumir que tendrá que duplicarse en cada inserción porque las inserciones se procesan como una secuencia. Se nos permite (y de hecho debemos) usar estado conocido para eliminar matemáticamente tantos casos "incluso peores" como podamos, incluso cuando la entrada permanece desconocida.
La diferencia mas importante
La diferencia crítica entre el análisis asintótico y amortizado es que el primero depende de la entrada en sí, mientras que el segundo depende de la secuencia de operaciones que ejecutará el algoritmo.
Por lo tanto:
- El análisis asintótico nos permite afirmar que la complejidad del algoritmo cuando se le da una entrada de caso mejor / peor / promedio de tamaño cercano a N está limitada por alguna función F (N), donde N es una variable
- El análisis amortizado nos permite afirmar que la complejidad del algoritmo cuando se le da una entrada de características desconocidas pero el tamaño conocido N no es peor que el valor de una función F (N) - donde N es un valor conocido