在摊销分析的综合方法中,O(n)/ n = 1是多少

时间:2016-06-09 13:23:14

标签: amortized-analysis

如第5课中的数据结构课程课程中给出的摊销分析的聚合方法中的O(n)/ n = 1如何 - 摊销分析:聚合方法?

1 个答案:

答案 0 :(得分:0)

简短回答

O(n)/ n = cn / n = c = O(1)

长答案

我们使用摊销分析来分析操作的序列的成本,而不是单个操作的成本。在最后一种情况下,我们使用渐近分析(一些渐近符号是:Theta,Big O,Big Omega,Little O和Little Omega),但是当我们遇到一系列操作时,它并没有那么好用。想要了解该序列的成本。

原因是,如果我们申请&#34;常规&#34;渐近分析,我们,例如,在最坏情况分析中的渐近上界可能太<强>悲观。经典示例是插入动态数组。您将元素插入到动态分配的数组中,当它已满时,您可以定义新数组(例如,两倍大)并复制所有元素。事情是大多数插入将在恒定时间(或在O(1))中工作,但是当您需要重新定义数组时,它将需要线性时间(O(n)),因为您需要复制所有元素。

所以想象你插入了n个元素,你需要重新定义你的数组一次,然后你有n个操作,在最坏的情况下每个操作都是O(n),因此在最坏的情况下操作序列的成本是O(n ^ 2),考虑到大多数操作在最坏的情况下是O(1)并且只有一个是O(n)这一事实看起来过于悲观。

我们将一系列操作的摊余成本定义为(n次操作的成本)/ n。在你的情况下,n个操作的成本是O(n),它等于cn(其中c是一些常数),只是通过Big O表示法的定义,除以n,你只得到c,它等于O (1)因为,再一次,c只是一些常数。