- 问题描述
假定我们对一个数据结构执行一个由n个操作组合成的操作序列,当i 严格为2的幂时,第i个操作的代价为i ,否则代价为1。使用聚合分析确定每个操作的摊还代价。 - 问题求解
假设ci是第i个操作的代价,则
ci={ii是2的幂1其他
n 个操作的代价是
∑i=1nci≤n+∑j=0⌈lgn⌉n2j≤n+n+n2+n4+...+2+1=n+n−121−12=n+(2n−1)<3n
使用聚合分析确定每个操作的摊还代价为O(n)/n=O(1)。在上面的求解过程中用到了等比数列前n项和公式
a11−qn1−q=a1−anq1−q
算法导论17.1-3
最新推荐文章于 2024-04-07 10:15:16 发布