平摊分析
平摊分析是分析一个操作序列以显示每个操作的平均成本很小的任何策略,即使序列中的单个操作可能很昂贵。不同于平均案例分析:1)不涉及概率;2)保证最坏情况下各操作的平均性能。
三种常见的平摊方法:聚集方法;会计方法;势能方法。
一.聚集方法
聚集方法:先求n个操作总共花费的总和T(n),每一步操作的平摊代价T(n)/n,这个成本适用于每个操作,即使在序列中有几种类型的操作。后面两种方法可以将不同的平摊代价分配给不同的操作类型,即平摊到每一步的代价是不一样的。
栈操作
栈中有三种操作,PUSH,POP和MULTIPOP(一次性连续取出多个元素)
MULTIPOP(S,k) while not STACK-EMPTY(S) and k!=0 POP(S) k <- k-1 endwhile
现在对栈总共进行n步操作,但三种操作的具体步数未知ÿ