在大多数运行时间的计算分析中,我们假设 所有输入都同样可能。这不是真的,因为差不多 例如,排序的输入经常发生 在统计学上预期,这会引起问题,特别是对于 快速排序和二叉搜索树。
通过使用随机算法,不再使用特定输入 重要。随机数很重要,我们可以得到一个 预计的运行时间,我们现在平均所有可能的随机 数字而不是所有可能的输入。使用快速排序 random pivot给出一个O(n log n)预期时间算法。这意味着 对于任何输入,包括已经排序的输入,运行时间 根据随机统计,预计为O(n log n) 数字。预期的运行时间限制比一个更强 平均情况限制,但当然,弱于相应的 最坏情况的约束。
首先,我们将看到一种支持二进制搜索的新方案 O(log n)预期时间内的树操作。再次,这意味着 没有糟糕的输入,只是糟糕的随机数。从理论上讲 从这个角度来看,这并不是非常令人兴奋,因为平衡搜索 树木在最坏的情况下达到了这个极限。尽管如此,使用 随机化导致相对简单的搜索算法, 插入,尤其是删除。
我对上述文字的质询是
作者的意思是“预期的运行时间限制比平均情况限制要强一些,但当然,弱于相应的最坏情况界限”?在上面的文字。
重新构建二进制搜索树,“自从平衡搜索树在最坏的情况下达到此限制”,作者的意思是什么?我对二叉搜索树的理解最坏的情况是O(d),其中d是节点的深度,它可以是“N”,即O(N)。作者的意思与上述最坏情况相同?
谢谢!
答案 0 :(得分:2)
就像之前在句子中解释过的那样:任何输入都必须有预期的时间。平均情况是对所有输入的平均值,也就是说,您获得了相当平庸的输入。预期的时间意味着无论输入多么糟糕,如果随机数上帝很好(即给出你期望的值,而不是像她经常那样最糟糕的事情),算法必须能够在界限内计算它。 / p>
平衡二进制搜索树。它们无法达到深度N,因为它们平衡。
答案 1 :(得分:0)
作者意味着平均快速排序会产生比O(n log n)更慢的结果(这对于所有排序算法都不正确,例如对于合并排序预期时间==平均时间== O(n log) n)并且不需要随机化)
O(d)=平衡树的O(log n)
PS谁是作者?
答案 2 :(得分:0)
在随机快速排序中,即使是故意的,我们也不能产生错误的输入(这可能导致最坏的情况),因为随机排列会使输入顺序无关紧要。只有当随机数生成器产生不合理的排列以进行排序时,随机化算法才会表现不佳。几乎所有排列都会导致快速排序更接近平均情况,很少有排列会导致接近最坏情况的行为,因此最坏情况输入非常低......因此它几乎在O(nlogn)中执行。