算法导论第十七章:摊还分析
一.什么是摊还分析?
1.它是一种分析算法的方法,在摊还分析中,我们求数据结构的一个操作序列中所执行的所有操作的平均时间来评价操作的代价。
2.这样我们就可以说明一个操作的平均代价是很低的(即使在某个单一操作的代价很高)。
3.但摊还分析却不同于平均情况分析,它不涉及概率。但可以保证最坏情况下每个操作的平均性能。
二.摊还分析中常用的前两种技术:
一.聚合分析
利用聚合分析,我们证明对所有n,一个n个操作的序列最坏情况下花费的时间为T(n),因此,在最坏情况下的每个操作的摊还代价(平均代价)为T(n)/n.
下面用栈操作来详细分析:
1.PUSH(S,x):将对象x压入栈S中
2.POP(S):将栈S的栈顶对象弹出,并返回该对象。
我们都知道上面两个操作的时间都是O(1),我们假定其代价均为1,那么n个PUSH或POP操作的总代价为n,其时间则为O(n),其平均运行时间为O(1)
现在我们增加一种方法:
3.MULTIPOP(S,k):此方法删除栈S栈顶的k个对象。
我们假设删除一个对象的代价为1
则我们有:
当k=1时,只删除栈顶第一个元素,代价为1
当k=2时,删除栈顶前两个元素,代价为2
当k=3时,代价为3
当k=n时,我们有代价为n
所以:此操

浙公网安备 33010602011771号