Algorithm 如何在摊销分析中提出潜在函数?

Algorithm 如何在摊销分析中提出潜在函数?,algorithm,amortized-analysis,Algorithm,Amortized Analysis,我读过一些关于摊销分析的帖子,但在理解潜在方法方面仍然有一些问题 主要的问题在于如何建立一个形式化的势函数?如何评价势函数的正确性 例如,有一个问题: 在数据结构上执行n个操作序列。如果i是2的精确幂,则第i个操作成本i,否则为1。使用潜在方法确定每项作业的摊余成本 采用势函数,首先提出势函数: . 有人告诉我,这是非常直观的,但我不能想出这个,即使在几个小时后 我发现有一个类似的问题: 但是,我认为答案是关于帐户方法。提示: 术语k随着k的增加而增加(很明显),并增加1 每当k达到2的新幂时

我读过一些关于摊销分析的帖子,但在理解潜在方法方面仍然有一些问题

主要的问题在于如何建立一个形式化的势函数?如何评价势函数的正确性

例如,有一个问题:

在数据结构上执行n个操作序列。如果i是2的精确幂,则第i个操作成本i,否则为1。使用潜在方法确定每项作业的摊余成本

采用势函数,首先提出势函数: . 有人告诉我,这是非常直观的,但我不能想出这个,即使在几个小时后

我发现有一个类似的问题:

但是,我认为答案是关于帐户方法。

提示:

术语
k
随着
k
的增加而增加(很明显),并增加
1


每当
k
达到
2
的新幂时,术语
2^上限(Lg(k))
就会增加,并且会增加
i/2

谢谢。现在我的理解是,每当
k
2
的幂时,它必须支付
k
单位的费用。因此,我们可以将这些
k
分摊到以前的
k/2
单位中。这样,我们就得到了这样一个势函数,它有一个常数
2
。您每次支付1,额外摊销1(即平均)。