平均案例和摊销分析之间的差异

时间:2011-09-07 11:49:22

标签: algorithm analysis

我正在阅读一篇关于算法的摊销分析的文章。以下是文本摘要。

  

摊销分析与平均案例分析类似   关注一系列操作的平均成本。   但是,平均案例分析依赖于概率假设   关于数据结构和操作以便计算   预期的算法运行时间。因此它的适用性   取决于关于概率分布的某些假设   算法输入。

     

平均案件约束并不排除一个人的可能性   得到“不幸”并遇到需要超出预期的输入   时间即使输入概率分布的假设是   有效的。

我对上述文字摘要的问题是:

  1. 在第一段中,平均案例分析如何“依赖于关于数据结构和运算的概率假设?”我知道平均案例分析取决于输入概率,但上述陈述意味着什么? / p>

  2. 作者在第二段中的意思是,即使输入分布有效,平均情况也无效?

  3. 谢谢!

3 个答案:

答案 0 :(得分:38)

答案 1 :(得分:11)

  1. 要获得平均时间复杂度,您需要假设“平均情况”是什么。如果输入是字符串,那么“平均字符串”是什么?只有长度重要吗?如果是这样,我将获得的字符串的平均长度是多少?如果不是,这些字符串中的平均字符是什么?如果字符串是例如姓氏,则很难明确地回答这些问题。平均姓氏是多少?

  2. 在大多数有趣的统计样本中,最大值大于平均值。这意味着您的平均案例分析有时会低估某些输入所需的时间/资源(这是有问题的)。如果你考虑一下,对于对称的PDF,平均案例分析应该低估它高估的程度。最糟糕的案例分析,OTOH,只考虑最有问题的案例,因此保证高估。

答案 2 :(得分:4)

  1. 考虑计算未排序数组中的最小值。也许你知道它有O(n)运行时间,但如果我们想要更精确,那么在一般情况下进行n/2比较。为什么这个?因为我们在做数据假设;我们假设最小值可以在每个位置具有相同的概率。  如果我们改变这个假设,并且我们说例如处于i位置的概率例如随着i增加,我们可以证明不同的比较数,甚至是不同的渐近界。

  2. 在第二段中,作者说,通过平均案例分析,我们可能非常不走运,并且测量的平均情况大于热情例;回想一下前面的例子,如果我们对m个不同的大小为n的数组感到不幸,并且每次都在最后一个位置时最小,那么我们将测量n平均情况,而不是n/2。当证明分摊摊销时,这不可能发生。