Den potentiella metoden är en av de avskrivningsanalysmetoder som låter dig "jämna ut" effekten av dyra men sällsynta operationer på algoritmens totala beräkningskomplexitet [1] [2] .
I metoden för potentialer introduceras en funktion som länkar datastrukturens tillstånd med något icke-negativt tal. Innebörden av denna funktion är att om är det nuvarande tillståndet för strukturen, så är ett värde som kännetecknar mängden arbete av "dyra" operationer, som redan har "betalts" av billigare operationer, men inte har producerats. Således kan det betraktas som en analog av den potentiella energin som är associerad med ett givet tillstånd [1] [2] . Inledningsvis sätts värdet på potentialfunktionen vanligtvis till noll.
Låt vara en separat operation från serien, vara tillståndet för strukturen före denna operation, och vara efter den. Då är den amorterade komplexiteten för verksamheten
Den totala upplupna kostnaden för en operationssekvens är en giltig övre gräns för den verkliga kostnaden för den operationssekvensen.
För en sekvens av operationer kan man definiera:
I dessa beteckningar:
Således bildar sekvensen av potentiella funktionsvärden en teleskopisk summa , där successiva initiala och slutliga potentiella funktionsvärden upphäver varandra.
Av det faktum att ojämlikheten följer , som sagts tidigare.
Du kan överväga en variant av stacken som stöder följande operationer:
En operation pop(k) tar tid, medan den totala körtiden kan analyseras med hjälp av följande potentialfunktion lika med antalet element i stacken . Detta värde är alltid icke-negativt, medan push -operationen fungerar för en konstant och ökar med ett, och pop- operationen fungerar för , men minskar också den potentiella funktionen med , så dess amorterade tid är också konstant. Det följer av detta att den totala exekveringstiden för varje sekvens av operationer är lika i värsta fall.
Ett annat exempel är en räknare , implementerad som ett binärt tal som stöder följande operationer:
För att visa att den amortiserade kostnaden för inc är , överväg en potentiell funktion lika med antalet räknarbitar lika med ( Hamming vikt räknaren). Vid behov är en sådan funktion alltid icke-negativ och är initialt lika med . Inc -operationen inverterar först den minst signifikanta biten i räknaren och sedan, om den var , upprepas samma sak med nästa bit tills den träffar . Om det innan dess fanns enstaka bitar i slutet av räknarens bitpost, kommer det att vara nödvändigt att invertera biten, spendera enheter i realtid och minska potentialen med . Således är den upplupna kostnaden för inc- verksamheten lika och, som en konsekvens, är genomförandetiden för inc- verksamheten lika med .
Metoden för potentialer används vanligtvis för att analysera Fibonacci-högar , där att extrahera ett element tar amorterad logaritmisk tid, och alla andra operationer tar amorterad konstant tid [3] . Den kan också användas för att visa att ett splayträd har en logaritmisk amorterad driftskostnad [4] .