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] .
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
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.
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.
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 .
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] .