Método de potenciales (análisis de amortización)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 7 de abril de 2020; la verificación requiere 1 edición .

El método potencial  es uno de los métodos de análisis de depreciación que le permite "suavizar" el impacto de operaciones costosas pero raras en la complejidad computacional total del algoritmo [1] [2] .

Definiciones

En el método de los potenciales, se introduce una función que vincula el estado de la estructura de datos con algún número no negativo. El significado de esta función es que si  es el estado actual de la estructura, entonces  es un valor que caracteriza la cantidad de trabajo de operaciones "caras", que ya ha sido "pagado" por operaciones más baratas, pero no ha sido producido. Por lo tanto, puede considerarse como un análogo de la energía potencial asociada a un estado dado [1] [2] . Inicialmente, el valor de la función potencial generalmente se establece en cero.

Sea  alguna operación separada de la serie,  sea el estado de la estructura antes de esta operación, y  sea después de ella. Entonces la complejidad amortizada de la operación es

Relación entre valor depreciado y valor real

El costo total amortizado de una secuencia de operaciones es un límite superior válido para el costo real de esa secuencia de operaciones.

Para una secuencia de operaciones , se puede definir:

En estas notaciones:

Así, la secuencia de valores de funciones potenciales forma una suma telescópica , en la que sucesivos valores iniciales y finales de funciones potenciales se anulan entre sí.

Del hecho de que se sigue la desigualdad , como se dijo anteriormente.

Ejemplos

Pila con mudanzas masivas

Puede considerar una variante de la pila que admita las siguientes operaciones:

Una operación pop(k) toma tiempo, mientras que el tiempo total de ejecución se puede analizar usando la siguiente función potencial igual al número de elementos en la pila . Este valor siempre es no negativo, mientras que la operación push trabaja para una constante y aumenta en uno, y la operación pop trabaja para , pero también disminuye la función potencial en , por lo que su tiempo amortizado también es constante. De esto se deduce que el tiempo total de ejecución de cualquier secuencia de operaciones es igual en el peor de los casos.

Contador binario

Otro ejemplo es un contador , implementado como un número binario que admite las siguientes operaciones:

Para mostrar que el costo amortizado de inc es , considere una función potencial igual al número de bits del contador igual a ( peso de Hamming contador). Como se requiere, dicha función siempre es no negativa e inicialmente es igual a . La operación inc primero invierte el bit menos significativo del contador y luego, si era , repite lo mismo con el siguiente bit hasta que llega a . Si antes había bits individuales al final del registro de bits del contador, será necesario invertir el bit, gastando unidades de tiempo real y reduciendo el potencial en . Así, el coste amortizado de la operación inc es igual y, en consecuencia, el tiempo de ejecución de las operaciones inc es igual a .

Aplicaciones

El método de los potenciales se usa comúnmente para analizar montones de Fibonacci , donde extraer un elemento toma un tiempo logarítmico amortizado, y todas las demás operaciones toman un tiempo constante amortizado [3] . También se puede usar para mostrar que un árbol splay tiene un costo de operaciones amortizado logarítmico [4] .

Notas

  1. 1 2 Goodrich, Michael T. & Tamassia, Roberto (2002), 1.5.1 Técnicas de amortización, diseño de algoritmos: fundamentos, análisis y ejemplos de Internet , Wiley, p. 36–38  .
  2. 1 2 Kormen, T. , Leizerson, C. , Rivest, R. , Stein, K. 18.3 Método potencial // Algoritmos: construcción y análisis = Introducción a los algoritmos / Ed. I. V. Krasikova. - 2ª ed. - M. : Williams, 2005. - S. 412-416. — ISBN 5-8459-0857-4 .
  3. Cormen et al., Capítulo 20, "Montones de Fibonacci", págs. 476-497.
  4. Goodrich y Tamassia, Sección 3.4, "Splay Trees", págs. 185-194.