- 问题描述
假定我们对一个数据结构执行一个由 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-15 15:05:53 发布