Algorithm 查找对数n时间内的概率秩

Algorithm 查找对数n时间内的概率秩,algorithm,probability,Algorithm,Probability,给你一个实数序列a1,a2。我们想找一个排名是 大于n/2。设计一个O(logn)算法,该算法将查找一个秩大于n/2的数字 概率大于1-1/n。 注:1。数字没有排序。这个问题的前提是可以在O(logn)中完成。因为序列是无序的,所以您所能做的就是检查第一个logn元素并返回最高的 我不知道这是否真的返回了超过1-1/n次的排名超过2/n的元素,但是你没有要求数学证明,只是为了算法 Python伪代码: max = None for i in 0 to log(len(a)): if (

给你一个实数序列a1,a2。我们想找一个排名是 大于n/2。设计一个O(logn)算法,该算法将查找一个秩大于n/2的数字 概率大于1-1/n。
注:1。数字没有排序。

这个问题的前提是可以在O(logn)中完成。因为序列是无序的,所以您所能做的就是检查第一个logn元素并返回最高的

我不知道这是否真的返回了超过1-1/n次的排名超过2/n的元素,但是你没有要求数学证明,只是为了算法

Python伪代码:

max = None
for i in 0 to log(len(a)):
    if (max == None or a[i] > max:
         max = a[i]
return max

假设n是偶数。显然,要做的事情是随机对lgn元素进行均匀采样,并进行替换,返回最大值。最大值不在上半部分的概率是指所有lg n样本都来自下半部分的概率。每个样本位于下半部分,概率为1/2,因此失效概率为(1/2)^(lg n)=1/n。

您能否澄清排名的含义?序列是有序的吗?你确定概率是正确的,不是应该是1/(n-1)吗?还有,你有随机访问序列的权限吗?@NamelessOne序列没有排序..我已经编辑了问题..抱歉这个错误。。元素X的秩等于小于元素X+1的元素数。@JimMischel是的,我们有随机访问。是的,如果它是有序的,那么你可以在O(1)中进行。这是一个非常大胆的假设。为了说明显而易见的情况,O(logn)!=log n什么是大胆的假设?@popovitsj存在一种算法,它在O(logn)时间内运行,可以找到秩大于n/2、概率大于1-1/n的数字。此算法不能是任何仅具有O(logn)复杂度的随机算法。@user2677679由于您提供的信息有限,这是您所能做的最好的算法。很有可能你坚持了一些关键的信息。@user2677679:事实上,这可能是显而易见的,困难在于证明/反驳这样一个简单的方法会有期望的概率。但是,如果没有,那么很可能您的答案缺少一些关键信息,因为它看起来很简单,除了随机选择O(logn)元素之外似乎没有太多选择。不过,如果将其调整为实际拾取随机元素,而不是假设元素随机性足以拾取第一个元素,则效果更好。有一些方法可以在O(k)时间内选择O(k)个随机元素而不进行替换。所以你在一个简单的段落中说了什么让我花了一本该死的书来暗示。干得好。