Bogosort的平均时间复天是多少?

时间:2013-11-09 17:01:17

标签: sorting complexity-theory time-complexity

我听说Bogosort的行为没有任何上限。但是,我从未听过有人谈论它的平均行为。这是一项愚蠢的任务,但不切实际的思想实验仍然可以作为良好的实践,但它们可能是不切实际的。

我想说每个词都是:

P(x==y)*P(x!=y)^(k-1)
    = 1/n * (1-1/n)^(k-1)
    = (n-1)^(k-1) / n^k

其中k为0且更大。我知道这个系列是收敛的,所以我们可以找到一个有限到有限的复杂关系(不像最坏情况的行为,其他人试图写成O(无限),因为挫折试图在一个边界上设置一个无限的功能。)

有人能解决这个问题吗?或者它是一种复杂性,如果没有无限的总和就无法编写或近似?

1 个答案:

答案 0 :(得分:4)

有一个更直接的方法来做到这一点。 Bogosort通过随机排列元素来工作,如果对所得到的排列进行排序则终止。有n!数组元素的可能排列(假设它们都是不同的),并且只对它们中的一个进行排序。因此,对输入的均匀随机排列进行排序的概率由1 / n!给出。使用概率的标准结果,这意味着,在期望时,在生成排序的排列之前将发生的排列的数量是n!。这意味着Bogosort的预期运行时间是Θ(n·n!),因为我们执行n!平均随机排列,每一个都需要时间Θ(n)来做(和Θ(n)检查的时间)。

如果您想要就此主题进行正式的数学展示,请考虑查看文章 Sorting the Slow Way ,该文章分析了Bogosort及其他相关类别。

希望这有帮助!