📜  门| GATE-CS-2002 |第 35 题

📅  最后修改于: 2021-09-26 04:34:04             🧑  作者: Mango

考虑以下用于在具有 n 个不同值的未排序数组 A[1…..n] 中搜索给定数字 x 的算法:

1. Choose an i uniformaly at random from 1..... n;
   2. If A[i] = x then Stop else Goto 1; 

假设 x 存在于 A 中,算法在终止之前进行的预期比较次数是多少?
(A) n
(B) n – 1
(C) 2n
(D) n/2答案:(一)
解释:

如果你还记得硬币和骰子的问题,你就可以猜出上面的答案。

下面是答案的证明。

让预期的比较次数为 E。 E 的值是所有可能情况下以下表达式的总和。

number_of_comparisons_for_a_case * probability_for_the_case 

情况1

If A[i] is found in the first attempt 
  number of comparisons = 1
  probability of the case  = 1/n

案例二

If A[i] is found in the second attempt 
  number of comparisons = 2
  probability of the case  = (n-1)/n*1/n

案例3

If A[i] is found in the third attempt 
  number of comparisons = 2
  probability of the case  = (n-1)/n*(n-1)/n*1/n

这样的例子其实无穷无尽。因此,我们对 E 有以下无穷级数。

E  = 1/n + [(n-1)/n]*[1/n]*2 + [(n-1)/n]*[(n-1)/n]*[1/n]*3 + ….  (1)

等式(1)乘以(n-1)/n后,我们得到

E (n-1)/n = [(n-1)/n]*[1/n] + [(n-1)/n]*[(n-1)/n]*[1/n]*2 + 
                                 [(n-1)/n]*[(n-1)/n]*[(n-1)/n]*[1/n]*3 ……….(2)

从(1)中减去(2),我们得到

E/n = 1/n + (n-1)/n*1/n + (n-1)/n*(n-1)/n*1/n + …………

右边的表达式是一个具有无限元素的GP。让我们应用求和公式 (a/(1-r))

E/n = [1/n]/[1-(n-1)/n]  = 1
  E = n

这个问题的测验