通过随机分区进行选择的急剧浓度?
-
16-10-2019 - |
题
通常的简单算法,用于在数组中找到中间元素$ 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的选择算法:马尔可夫链方法”,其中引用了他们的原始论文。