关于摊销分析

时间:2011-09-05 11:53:47

标签: algorithm

这是关于摊销分析。以下是文章中的文字。

  

对于必须执行一系列问题的问题进行摊销分析   操作,我们的目标是分析每次操作的时间。该   摊销分析的动机是看最坏的情况   如果生产的唯一方法,每次操作的时间可能过于悲观   昂贵的是用大量便宜的“设置”   事前的操作。

问题:作者在最后一句话中的意思是什么,即“如果产生昂贵的唯一方法就是”设置它“以及之前的大量廉价操作 手“?任何人都可以举例说明这句话的意思吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

作者意味着昂贵的操作可能发生的唯一方法是在大量廉价操作之前。

看看这个例子: 我们有一个堆栈,我们希望除了通常的操作之外还要实现堆栈,还有一个叫做multipop(k)的操作,它可以弹出k个元素。现在,multipop成本为O(min(n,k)),其中n是堆栈的大小;因此,成本乘以成本的先决条件,例如O(k),至少需要k便宜的推动每个成本O(1)。

答案 1 :(得分:1)

另一个例子。考虑一个阵列,当添加的元素超过当前容量时,该阵列会动态增加其容量。让容量增加为O(n),其中n是数组的旧大小。现在,添加元素的情况最复杂的是O(n),因为我们可能需要增加容量。摊销分析背后的想法是,你必须做一个简单的添加,在容量耗尽之前花费O(1)。因此,许多廉价的操作导致一个昂贵的操作。换句话说,昂贵的操作是通过廉价的操作来摊销的。