在n个元素的数组中,如果n / 2是重复元素而其余元素是不同的,我们可以使用Las Vegas算法在o(logn)时间内获取重复元素。
还有另外一个问题说:做这个算法所需的最小重复次数是多少(logn),即(n / k重复的元素,其中k =?),如果重复的元素是root,那么运行时间是多少( N)?
我的结果表明,如果重复的元素是root(n),那么它不是o(logn),但是我无法使用拉斯维加斯算法找到这个问题的松散界限。帮助将不胜感激。
答案 0 :(得分:2)
“拉斯维加斯”不是算法;这是一种算法。显而易见的算法是随机均匀地对元素对进行采样,直到它们匹配为止。当阵列的元素重复n / 2次时,每对成功的概率为((n / 2)/ n)((n / 2-1)/(n-1))= 1/4-O (1 / n),因此预期运行时间为1 /(1/4 - O(1 / n))= 4 + O(1 / n)= O(1)采样对。
由于这可能是家庭作业,你可以弄清楚如何根据不同的重复次数调整分析。