Algorithm 幂3计数器的摊销分析

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中的每一

我经常读算法教科书Cormen、Liserson、Rivest和Stein

其中有趣的一章是摊销分析。在选择势函数时,二进制计数器是一个困难的例子。我想知道如果计数器是3的幂加上一些系数(例如x1*1+x2*3+x3*9+…),会怎么样


在这种情况下,如何确定势函数?

为了证明增加一个基数为3的计数器需要恒定的摊销时间,可以使用势函数法,将当前值中的2作为势函数

增量操作可分为两部分:

  • 该值末尾的相邻2更改为0

  • 2左边的第一个数字递增

  • 步骤(1)的功与从状态中移除的2的数量成比例

    这两个2中的每一个都是通过前一个操作的步骤(2)添加的,该操作需要恒定的时间,最多添加一个2

    设Φ为当前状态下2的数量

    • 步骤(1)所用的时间与减少Φ的量成比例。由于Φ始终大于等于0,在步骤(1)中多次增量完成的总功最多与Φ增加的总量成比例
    • 在每个增量中,步骤(2)需要恒定的时间,并将Φ(步骤(1)最终可执行的总工时)最多增加1,表示实际执行的工作量恒定,以及排队等待步骤(1)的工作量恒定。这是在当前和未来增量上摊销的恒定工作量

    你的问题有点难解析,因为我不想查看这本书来确定我知道你的意思。。。但是,如果你在寻找一个势函数来证明增加一个基数为3的计数器需要恒定的摊销时间,那么你可以只使用2的数目。@MattTimmermans感谢你对势函数选择的回答。但它如何产生固定的时间摊销成本呢?