Herramientas de usuario

Herramientas del sitio


algoritmos-oia:analisis-amortizado

¡Esta es una revisión vieja del documento!


Análisis amortizado

Se llama *análisis amortizado* de complejidad a una forma de medir el costo de ciertas operaciones, en la cual no contamos el tiempo real que toma cada operación particular, sino que medimos el tiempo total que toma realizar $n$ operaciones cualesquiera, y si ese tiempo es $T$, decimos finalmente que cada operación particular tiene una complejidad amortizada de $O(\frac{T}{n})$.

Lo interesante es que, como en la inmensa mayoría de los casos nos importa solamente el tiempo total, y no el tiempo que efectivamente tardó una operación en particular, podemos perfectamente realizar todos los cálculos de complejidad suponiendo que las operación tardan siempre el tiempo promedio, y el resultado final obtenido será siempre correcto para el tiempo total.

Ejemplo: pila con eliminación múltiple

Varias operaciones de las bibliotecas estándar, como la STL de C++, garantizan sus tiempos de ejecución en forma amortizada, como por ejemplo .push_back() de vector que tiene un tiempo de ejecución $O(1)$ amortizado.

Ejemplo: contador binario

Supongamos que tenemos que implementar manualmente un contador binario: es decir, vamos a tener que mantener actualizada una lista de dígitos en binario, que representan un número, comenzando desde $0$, e incrementando el número en cada paso.

Si almacenamos el contador binario en un string, podemos inicializarlo con $N$ dígitos cero:

    string contador(N, '0');

Hemos analizado un contador binario, pero un análisis completamente análogo mostraría que la misma técnica tiene complejidad amortizada $O(1)$ al incrementar un contador ternario, o en base 10, o en cualquier otra base $B \geq 2$.

Algo muy similar a esto ocurre con la función next_permutation, que si se utiliza muchas veces para generar todas las permutaciones de una lista dada, tiene una complejidad amortizada $O(1)$.

Ejemplo: pila con eliminación múltiple

algoritmos-oia/analisis-amortizado.1511471395.txt.gz · Última modificación: 2017/11/23 21:09 por santo