通常的简单算法,用于在数组中找到中间元素$ a $ n $数字是:

  • 示例$ n^{3/4} $元素从$ a $替换为$ b $
  • 排序$ b $,找到等级$ | b | pm sqrt {n} $ elements $ l $和$ r $ $ b $
  • 检查$ l $和$ r $在$ a $的中位数的相对方面,最多有$ c sqrt {n} $元素在$ a $ a $之间,$ l $和$ r $常量$ c> 0 $。如果没有发生失败。
  • 否则,通过对$ l $和$ r $之间的$ a $的元素进行排序来找到中位数

不难看到这在线性时间内运行,并且它的可能性很高。 (所有不良事件都与二项式的期望相距甚远。)

同一问题的替代算法,这是在这里描述的快速分类的学生更自然的教学: 随机选择

也很容易看到,这是有线性的预期运行时间:说“圆形”是一系列递归呼叫,当一个人给出1/4-3/4拆分时结束,然后观察到预期的长度一轮最多是2。(在第一轮的第一次绘制中,进行良好拆分的概率为1/2,然后在实际增加之后,因为描述了算法,因此圆形长度由几何随机变量主导。)

所以现在问题:

是否可以证明随机选择在线性时间内以高概率运行?

我们有$ o( log n)$ rounds,每个回合的长度至少具有$ k $,最多$ 2^{ - k+1} $,因此联合界限给运行时间为$ O(n log log n)$带有概率$ 1-1/o( log n)$。

这有点不满意,但实际上是事实吗?

有帮助吗?

解决方案

该算法在线性时间内以高概率运行并不正确。仅考虑第一轮,运行时间至少为$ theta(n)$ times a $ g(1/2)$随机变量。令$ p(n) longrightArrow 0 $为允许的故障概率。由于$ pr [g(1/2) geq log_2 p(n)^{ - 1}] = p(n)$,运行时间至少为$ omega(n log_2 p(n)^ {-1})= omega(n)$。

(涉及一些作弊,因为第一轮的长度实际上不是$ g(1/2)$。更仔细的分析可能或可能无法验证此答案。)

编辑:Grübel和Rosler证明了比较的预期数量除以$ n $(从某种意义上说)倾向于一定的限制分布,这是无限的。参见格鲁贝尔的论文“ Hoare的选择算法:马尔可夫链方法”,其中引用了他们的原始论文。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top