在平攤分析中,執行一系列數據結構操作所需要的時間是通過對執行的所有操作求平均而得出的。平攤分析可用來證明在一系列操作中,即使單一的操作具有較大的代價,通過對所有操作求平均後,平均代價還是很小的。平攤分析與平均情況分析的不同之處在於它不牽涉到機率。這種分析保證了在最壞情況下每個操作具有平均性能。
平攤分析技術中最常用的三種技術:
聚集方法(aggregate) —— 可以用這種方法確定一個n個操作的序列的總代價的上界T(n)。每個操作的平攤代價可表示為T(n)/n;
會計方法(accounting) —— 用它可確定每個操作的平攤代價。當有一種以上的操作時,每種操作都可有一個不同的平攤代價。這種方法對操作序列中的某些操作先“多記帳”,將多記的部分作為對數據結構中的特定對象上預付的存款存起來。在該序列中稍後要用到這些存款以補償那些對它們記的“帳”少於其實際代價的操作。
勢能方法(potential) —— 它與會計方法的相似之處在於要確定每個操作的代價,且先對某些操作多記帳以補償以後的不足記帳。這種方法將存數作為數據結構的“勢能”來維護,而不是將存款與數據結構中的單個對象聯繫起來。