我正在阅读一篇关于算法的摊销分析的文章。以下是文本摘要。
摊销分析与平均案例分析类似 关注一系列操作的平均成本。 但是,平均案例分析依赖于概率假设 关于数据结构和操作以便计算 预期的算法运行时间。因此它的适用性 取决于关于概率分布的某些假设 算法输入。
平均案件约束并不排除一个人的可能性 得到“不幸”并遇到需要超出预期的输入 时间即使输入概率分布的假设是 有效的。
我对上述文字摘要的问题是:
在第一段中,平均案例分析如何“依赖于关于数据结构和运算的概率假设?”我知道平均案例分析取决于输入概率,但上述陈述意味着什么? / p>
作者在第二段中的意思是,即使输入分布有效,平均情况也无效?
谢谢!
答案 0 :(得分:38)
答案 1 :(得分:11)
要获得平均时间复杂度,您需要假设“平均情况”是什么。如果输入是字符串,那么“平均字符串”是什么?只有长度重要吗?如果是这样,我将获得的字符串的平均长度是多少?如果不是,这些字符串中的平均字符是什么?如果字符串是例如姓氏,则很难明确地回答这些问题。平均姓氏是多少?
在大多数有趣的统计样本中,最大值大于平均值。这意味着您的平均案例分析有时会低估某些输入所需的时间/资源(这是有问题的)。如果你考虑一下,对于对称的PDF,平均案例分析应该低估它高估的程度。最糟糕的案例分析,OTOH,只考虑最有问题的案例,因此保证高估。
答案 2 :(得分:4)
考虑计算未排序数组中的最小值。也许你知道它有O(n)
运行时间,但如果我们想要更精确,那么在一般情况下进行n/2
比较。为什么这个?因为我们在做数据假设;我们假设最小值可以在每个位置具有相同的概率。
如果我们改变这个假设,并且我们说例如处于i位置的概率例如随着i增加,我们可以证明不同的比较数,甚至是不同的渐近界。
在第二段中,作者说,通过平均案例分析,我们可能非常不走运,并且测量的平均情况大于热情例;回想一下前面的例子,如果我们对m个不同的大小为n的数组感到不幸,并且每次都在最后一个位置时最小,那么我们将测量n
平均情况,而不是n/2
。当证明分摊摊销时,这不可能发生。