随机算法中的预期运行时间

时间:2011-12-13 13:10:13

标签: algorithm binary-tree

  

在大多数运行时间的计算分析中,我们假设   所有输入都同样可能。这不是真的,因为差不多   例如,排序的输入经常发生   在统计学上预期,这会引起问题,特别是对于   快速排序和二叉搜索树。

     

通过使用随机算法,不再使用特定输入   重要。随机数很重要,我们可以得到一个   预计的运行时间,我们现在平均所有可能的随机   数字而不是所有可能的输入。使用快速排序   random pivot给出一个O(n log n)预期时间算法。这意味着   对于任何输入,包括已经排序的输入,运行时间   根据随机统计,预计为O(n log n)   数字。预期的运行时间限制比一个更强   平均情况限制,但当然,弱于相应的   最坏情况的约束。

     

首先,我们将看到一种支持二进制搜索的新方案   O(log n)预期时间内的树操作。再次,这意味着   没有糟糕的输入,只是糟糕的随机数。从理论上讲   从这个角度来看,这并不是非常令人兴奋,因为平衡搜索   树木在最坏的情况下达到了这个极限。尽管如此,使用   随机化导致相对简单的搜索算法,   插入,尤其是删除。

我对上述文字的质询是

  1. 作者的意思是“预期的运行时间限制比平均情况限制要强一些,但当然,弱于相应的最坏情况界限”?在上面的文字。

  2. 重新构建二进制搜索树,“自从平衡搜索树在最坏的情况下达到此限制”,作者的意思是什么?我对二叉搜索树的理解最坏的情况是O(d),其中d是节点的深度,它可以是“N”,即O(N)。作者的意思与上述最坏情况相同?

  3. 谢谢!

3 个答案:

答案 0 :(得分:2)

  1. 就像之前在句子中解释过的那样:任何输入都必须有预期的时间。平均情况是对所有输入的平均值,也就是说,您获得了相当平庸的输入。预期的时间意味着无论输入多么糟糕,如果随机数上帝很好(即给出你期望的值,而不是像她经常那样最糟糕的事情),算法必须能够在界限内计算它。 / p>

  2. 平衡二进制搜索树。它们无法达到深度N,因为它们平衡

答案 1 :(得分:0)

  1. 作者意味着平均快速排序会产生比O(n log n)更慢的结果(这对于所有排序算法都不正确,例如对于合并排序预期时间==平均时间== O(n log) n)并且不需要随机化)

  2. O(d)=平衡树的O(log n)

  3. PS谁是作者?

答案 2 :(得分:0)

在随机快速排序中,即使是故意的,我们也不能产生错误的输入(这可能导致最坏的情况),因为随机排列会使输入顺序无关紧要。只有当随机数生成器产生不合理的排列以进行排序时,随机化算法才会表现不佳。几乎所有排列都会导致快速排序更接近平均情况,很少有排列会导致接近最坏情况的行为,因此最坏情况输入非常低......因此它几乎在O(nlogn)中执行。