摊销分析 - 正确方法?

时间:2017-02-24 18:33:36

标签: algorithm

参加考试并偶然发现了这项练习。我用这三种方法解决它时遇到了麻烦。这是文字:

  

假设我们在一系列n个操作下维护数据结构。   设f(k)表示第k个的实际运行时间   操作。对于以下每个函数f,确定   导致单一操作的摊销成本。 (对于练习,请尝试所有   本说明中描述的方法。)

     

(a)f(k)是最大的整数i,使得2 ^ i除以k。

来源:https://courses.engr.illinois.edu/cs473/fa2013/notes/14-amortize.pdf

我做了一个小桌子试图概述

k    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  ...
f(k) 0  1  1  2  2  2  2  3  3  3   3   3   3   3   3   4   ...

我不知道潜在的方法在哪里可以提供帮助,因为随着时间的推移,操作会变得更加昂贵。出于同样的原因,银行家的方法似乎也不适用于此。所以我认为聚合方法最合适。

是我为n个操作序列提出的,但是我似乎无法改变它,这让我怀疑它是否是正确的方法。

编辑:所以看起来我误解了我认为正确的表格看起来像这样的问题:

k    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  ...
f(k) 0  1  0  2  0  1  0  3  0  1   0   1   0   1   0   4   ...

1 个答案:

答案 0 :(得分:0)

快速回答以防任何人谷歌搜索

使用银行家的方法,您可以“保存”'一定数量的学分(在这种情况下,每个操作可以使用2个)并轻松承担更昂贵的学分。

k    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  ...
f(k) 0  1  0  2  0  1  0  3  0  1   0   1   0   1   0   4   ...
cr   2  3  5  5  7  8  10 9  11 12  14  15  17  18  20  18  ...