【发布时间】:2021-02-11 22:01:36
【问题描述】:
我知道下面这个真假陈述是假的。因为 Θ(log n) 是摊销成本。但是我们能否以某种方式从这个问题中确定平均成本,如何?如果不是,我们需要什么来确定平均成本?
声明
对或错: 一个数据结构支持一个操作 f 使得一系列 n 操作 f 需要 Θ(n log n) 最坏情况下的时间。因此,f 操作的平均成本为 Θ(log n)。
【问题讨论】:
-
我认为这是真的,您只需将序列成本除以该操作的调用次数即可。
-
但这不是摊销成本吗?如果每个操作都花费 log n,那么我们有 n*log n / n = Θ(log n)。也许我也想念理解的摊销成本。
-
无法回答这个问题,因为措辞含糊不清。具体来说,“平均情况”中的“平均”是多少?如果它是形成最坏情况的操作的平均值,那么该陈述是正确的。但这通常不是“平均情况”的含义,其中“平均”是指输入的某种分布(通常所有输入都假设每个输入的可能性相同),并且平均情况可能比 theta(log n) 更好。
-
@Busquets_90 我会这样读,你有一个带有操作
f的数据结构,你调用了fn 次,这些调用的总成本是O(n*log(n))。根据定义,摊销是平均值。如果您阅读 Cormen 的书,那么它就是这样定义的(除非您使用不同的参考)。 -
感谢您对 Cormen 的书的建议。关于摊销分析是这样说的:“摊销分析与平均情况分析的不同之处在于不涉及概率;##摊销分析保证了在最坏情况下每个操作的平均性能##“这里不是这样吗?
标签: algorithm time-complexity average