以下算法中的迭代次数是多少?

时间:2016-03-13 06:16:53

标签: random time-complexity

Algorithm RSearch(A,n,k)
//A is list of n distinct unsorted elements
//assuming index starts from 1 and ends at n
// k is element we want to search, assuming there is k at exactly one index
{
    repeat
    {
      i= random(1,n);    // pick random index from 1 to n with equal probability
      if(A[i]==k)
        return true; 
    }  
    until true;
}

1 个答案:

答案 0 :(得分:0)

答案很大程度上取决于random(1,n)功能。如果随机函数服从uniform distribution(意味着范围内每个数字的概率:[1,n]与其他数字相同)那么你可以考虑两种情况:

  1. 第一个随机索引是k的索引:这是最好的情况,所以the complexity of best case is O(1)
  2. 您选择n-1个随机数并尝试n-​​1次并失败!所以在你的第n次尝试你有所需的索引。请注意,如果随机函数具有均匀分布,则获得集合(范围)中每个元素的概率为p = 1 / n。 因此,要拥有特殊元素,您必须尝试至少1 / p = n次!这是最糟糕的情况!所以the complexity of worst case is Omega(n)