关于二元计数器摊销分析

时间:2011-09-06 11:46:29

标签: algorithm analysis

这是关于二元计数器的摊销分析。数组中的所有条目都从0开始,每一步我们只是递增计数器。

这里的作者提到如下。

我们使用的潜在函数等于当前计数中的1位数。

问题1:上述陈述是什么意思?

我的其他问题在于分析它被提及为

n +(n / 2)+(n / 4)+ ---最多为2n。我们如何得到结果为2n?

谢谢!

3 个答案:

答案 0 :(得分:1)

此示例中递增的成本是要执行的位翻转次数。

即。将3(0b11)增加到4(0b100)的成本为3(所有三个位置都翻转)。

现在你不能说,算法是分摊的常量,因为时间量取决于位翻转的数量,因此数量会有所不同。

要解决这个问题,请在从0开始的一系列递增操作中使用电位方法。电位现在是1的位数。

  • φ(0)= 0
  • φ(1)= 1
  • φ(2)= 1
  • φ(3)= 2
  • φ(4)= 1等

这是有道理的,因为对于每个位为1,将来的增量操作必须在某个时刻将其更改为0。因此,每当需要翻转超过最后一位的增量时,它就会利用该值的潜力。

现在继续摊销分析,您会发现,潜在的总是增加1,并且在每次增量操作中,您减少了每翻转1位的可能性。在每个操作中组合使用此成本为2:a)将0翻转为1,b)为潜力保存1。在0之前翻转所有的支付使用潜力。

另请参阅:http://en.wikipedia.org/wiki/Potential_method

答案 1 :(得分:0)

这是一个非常常见的问题,您可以看到这样的here in PDF示例在成本方面说得相当不错。

从图中可以更容易地理解PDF,但它的意思是我们可以使用一个单独的函数,它对应于在这种情况下稍微有点的最小单位,并使它等同于一些明显的值来自例如,pdf中的1位翻转功能相当于1美元。潜在的功能只是使分析变得容易。它从0开始,应该是非负的。

答案 2 :(得分:0)

只需使用几何级数,其中a = 1且r = 1/2。几何级数的总和是

     a(1-r^{n})/(1-r).

    Here it is (1-(1/2)^{n})/(1-(1/2)) = 2*(1- (1/2)^n).
As n goes to infinity, it becomes 2.