当前位置 : 主页 > 手机开发 > 其它 >

algorithm – n个操作序列的聚合分析

来源:互联网 收集:自由互联 发布时间:2021-06-22
我试图在数据结构的n次操作序列中找到每次操作的摊余成本,其中如果i是2的精确幂,则第i次操作成本i,否则为1. 我想我需要找到一种方法来表达成本n的总和,但我被卡住了.我可以看到特
我试图在数据结构的n次操作序列中找到每次操作的摊余成本,其中如果i是2的精确幂,则第i次操作成本i,否则为1.

我想我需要找到一种方法来表达成本n的总和,但我被卡住了.我可以看到特殊的,更昂贵的i值正在发生父亲和更远的距离:

i = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20…

所以,看起来我在2的第一和第二次幂之间没有数字,然后是一个数字,然后是3,然后是7.当我看了一会儿,我(纠正我,如果这是关闭的)发现数量在第j个和第k个幂之间2的非幂2是2 ^(j-1)-1.

但是,如何将这些结合在一起进行求和?我可以看到js上的东西加上2本身的实际功率数量,但是我很难将它们整合成一个单一的概念.

我不能提供一个总和的封闭形式,但很明显,平均成本在2的幂处达到峰值,连续的这样的峰值渐近于3.0,在2的下一个幂之前衰减到渐近地向2.0上升的下限.

严格地在2 ^ n和2 ^(n 1)之间的(2 ^ n)-1值中的每一个对总成本贡献1(导致平均值向下衰减)直到2 ^(n 1)处的值增加2 ^ (n 1).因此,从2 ^ n开始到2 ^(n 1)结束的段的平均贡献是((2 ^ n)-1 2 ^(n 1))/ 2 ^ n或(3 * 2 ^ n – 1 )/ 2 ^ n,当n增加时接近3.

您可以在下面的摘录表中看到这两种效果.希望这可以帮助.

i       sum  average
-------   -------  -------
      1:        1  1.00000
      2:        3  1.50000
      3:        4  1.33333
      4:        8  2.00000
    ...
      7:       11  1.57143
      8:       19  2.37500
    ...
     15:       26  1.73333
     16:       42  2.62500
    ...
     31:       57  1.83871
     32:       89  2.78125
    ...
     63:      120  1.90476
     64:      184  2.87500
    ...
    127:      247  1.94488
    128:      375  2.92969
    ...
    255:      502  1.96863
    256:      758  2.96094
    ...
    511:     1013  1.98239
    512:     1525  2.97852
    ...
   1023:     2036  1.99022
   1024:     3060  2.98828
    ...
   2047:     4083  1.99463
   2048:     6131  2.99365
    ...
   4095:     8178  1.99707
   4096:    12274  2.99658
    ...
   8191:    16369  1.99841
   8192:    24561  2.99817
    ...
  16383:    32752  1.99915
  16384:    49136  2.99902
    ...
  32767:    65519  1.99954
  32768:    98287  2.99948
    ...
  65535:   131054  1.99976
  65536:   196590  2.99973
    ...
 131071:   262125  1.99987
 131072:   393197  2.99986
    ...
 262143:   524268  1.99993
 262144:   786412  2.99992
    ...
 524287:  1048555  1.99996
 524288:  1572843  2.99996
    ...
1048575:  2097130  1.99998
1048576:  3145706  2.99998
    ...
网友评论