【发布时间】:2014-02-20 14:55:47
【问题描述】:
这不是作业,我正在研究摊销分析。有些事情让我感到困惑。我无法完全理解摊销和平均复杂性之间的含义。不确定这是否正确。这里有一个问题:
--
我们知道程序的运行时复杂度取决于程序输入的组合---假设程序运行时复杂度为O(n)的概率为p,其中p
--
第一个问题是:我在这里读过问题:Difference between average case and amortized analysis
所以,我认为对于平均运行时复杂度没有答案。因为我们不知道平均输入是多少。但它似乎是 p*O(n)+(1-p)*O(logn)。哪个是正确的,为什么?
第二,摊销部分。我读过Constant Amortized Time,我们已经知道摊销分析与平均情况分析不同,因为不涉及概率;摊销分析保证了在最坏情况下每个操作的平均性能。
我可以说摊销运行时间是 O(n)。但答案是 O(pn)。我对为什么涉及概率有点困惑。虽然 O(n)=O(pn),但我真的不知道为什么 p 会出现在那里?我改变思维方式。假设我们确实损失了时间,那么 K 变得非常大,因此摊销运行时间为 (KpO(n)+K*(1-p)O(logn))/k = O (pn)。与Average case似乎是一样的想法。
抱歉给我造成了困扰,请帮助我,先谢谢!
【问题讨论】:
-
“摊销分析保证了每个操作在最坏情况下的平均性能。”不,它没有。它保证了大量操作的最坏情况性能。从您的第一个链接重新阅读 RossFabricant 的 +10 答案。
-
@MooingDuck:实际上它保证了执行一系列操作的最坏情况复杂性
-
@NiklasB.: 是的,你可能就在那儿
-
你为什么说“但答案是 O(p*n)”?在你的第四段中,你列出了一个想法,然后问“哪个是正确的”,这是没有意义的。
-
"如果我们用 K 个不同的输入组合运行程序,其中 K 是一个非常大的数字,我们可以说这个程序的摊销和平均运行时复杂度是"不,这两种方法都不是通过随机选择输入并检查运行时间来凭经验工作。摊销分析实际上与概率无关。
标签: algorithm time-complexity average amortized-analysis