Big o 从破解代码开始的摊销时间

Big o 从破解代码开始的摊销时间,big-o,amortized-analysis,Big O,Amortized Analysis,我正在阅读关于破解编码面试的摊销时间。作者开始讨论求和,我不明白为什么我们要从右到左求和,以及如何得到2X(X+X/2+…) “1+2+4+8+16+…+X的和是什么?如果你从左到右读这个和,它从1开始,然后翻倍直到X。如果你从右到左读,它从X开始,直到1为止。 那么X+X/2+X/4+X/8+…+1之和是多少?这大约是2X。因此,X次插入需要O(2X)时间。每次插入的摊销时间是O(1)。“让我们在一个具体的例子中尝试一下。让我们假设X=128。我们想知道什么 1+2+4+8+16+32+64+

我正在阅读关于破解编码面试的摊销时间。作者开始讨论求和,我不明白为什么我们要从右到左求和,以及如何得到2X(X+X/2+…)

“1+2+4+8+16+…+X的和是什么?如果你从左到右读这个和,它从1开始,然后翻倍直到X。如果你从右到左读,它从X开始,直到1为止。
那么X+X/2+X/4+X/8+…+1之和是多少?这大约是2X。因此,X次插入需要O(2X)时间。每次插入的摊销时间是O(1)。“

让我们在一个具体的例子中尝试一下。让我们假设X=128。我们想知道什么

1+2+4+8+16+32+64+128

是。作者的想法是将这个总数倒写为

128+64+32+16+8+4+2+1

它的价值和我们开始的一样。然后,她建议将64视为128/2,32视为128/4,16视为128/8,这意味着

128+64+32+16+4+2+1

=128+128/2+128/4+128/8+128/16+128/32+128/64+128/128

=128(1+1/2+1/4+1/8+1/16+1/32+1/64+1/128)

那么这个总数是多少?她想了解的是,这些分数加起来最多只有两个。你明白为什么吗?如果你同意这个想法,你可以看到总的总和最多是2·128,是我们开始时的两倍

你也可以用另一种方法算出这个总和。首先,请注意

1+2+4+8+…+X

=20+21+22+23+…+2log2x

所以我们把一系列的二次幂加起来。我们能简化这个吗?是的!这是一个几何级数的总和,通过快速浏览维基百科,我们可以了解到这一点

20+21+22+23+…+2k=2k+1-1=2·2k-1

在我们的例子中,我们有k=lgx,所以求和的结果是

2·2lg X-1=2X-1


所以我们确实看到,这个总和最多是X的两倍。

听起来不对。在描述中,
X
不是插入数
log2(X)+1
是插入数。