Time complexity 摊销时间一致性

Time complexity 摊销时间一致性,time-complexity,Time Complexity,我在研究一个问题,我们应该给出一个算法的例子,它的时间复杂度是O(n^2),但它的摊销时间复杂度小于这个。我的直接想法是嵌套循环,但我不能确切地确定这样一个例子的结果在哪里摊销。如有任何见解,将不胜感激 考虑向量(可调整大小的数组)数据结构上的Add方法。一旦超出阵列的当前容量,我们必须通过制作更大的阵列并复制内容来增加容量。通常,在这种情况下,您只需将容量增加一倍,从而产生最坏情况下的O(n)Add,但却是O(1)摊销Add。我们当然可以自由地通过平方增加容量,而不是加倍(前提是初始容量大于1

我在研究一个问题,我们应该给出一个算法的例子,它的时间复杂度是O(n^2),但它的摊销时间复杂度小于这个。我的直接想法是嵌套循环,但我不能确切地确定这样一个例子的结果在哪里摊销。如有任何见解,将不胜感激

考虑向量(可调整大小的数组)数据结构上的Add方法。一旦超出阵列的当前容量,我们必须通过制作更大的阵列并复制内容来增加容量。通常,在这种情况下,您只需将容量增加一倍,从而产生最坏情况下的O(n)Add,但却是O(1)摊销Add。我们当然可以自由地通过平方增加容量,而不是加倍(前提是初始容量大于1)。这意味着,每隔一段时间,一个add将花费O(n^2)个时间;但是,这样一个越来越大的比例将需要O(1)倍的时间,摊销的复杂性也将是O(1)


结合这一思想的变化和将代码放入循环的复杂性的乘法效应,很可能找到一个例子,其中最坏情况的时间复杂性是O(f),摊销复杂性是O(g),for和f和g,其中g是O(f)。

非常好,很棒的东西。对于其他阅读的人来说,有一个关于这个主题的很棒的wiki,里面有一些非常好的信息。