Algorithm 幂3计数器的摊销分析
我经常读算法教科书Cormen、Liserson、Rivest和Stein 其中有趣的一章是摊销分析。在选择势函数时,二进制计数器是一个困难的例子。我想知道如果计数器是3的幂加上一些系数(例如x1*1+x2*3+x3*9+…),会怎么样Algorithm 幂3计数器的摊销分析,algorithm,amortized-analysis,Algorithm,Amortized Analysis,我经常读算法教科书Cormen、Liserson、Rivest和Stein 其中有趣的一章是摊销分析。在选择势函数时,二进制计数器是一个困难的例子。我想知道如果计数器是3的幂加上一些系数(例如x1*1+x2*3+x3*9+…),会怎么样 在这种情况下,如何确定势函数?为了证明增加一个基数为3的计数器需要恒定的摊销时间,可以使用势函数法,将当前值中的2作为势函数 增量操作可分为两部分: 该值末尾的相邻2更改为0 2左边的第一个数字递增 步骤(1)的功与从状态中移除的2的数量成比例 这两个2中的每一
在这种情况下,如何确定势函数?为了证明增加一个基数为3的计数器需要恒定的摊销时间,可以使用势函数法,将当前值中的2作为势函数 增量操作可分为两部分:
- 步骤(1)所用的时间与减少Φ的量成比例。由于Φ始终大于等于0,在步骤(1)中多次增量完成的总功最多与Φ增加的总量成比例
- 在每个增量中,步骤(2)需要恒定的时间,并将Φ(步骤(1)最终可执行的总工时)最多增加1,表示实际执行的工作量恒定,以及排队等待步骤(1)的工作量恒定。这是在当前和未来增量上摊销的恒定工作量