概率算法的时间复杂度

时间:2015-04-15 12:35:51

标签: time-complexity probability

游戏很简单:一个程序必须猜测&#39;一些给定的n使得1 <1。 n&lt; N,其中n和N是正整数。 假设我使用真正的随机数生成器函数(rng())来生成计算机的“猜测”,那么它将猜测&#39;在任何尝试中给定的n是1 / N.

伪代码示例:

n = a // we assign some positive integer value to n

N = b // we assign some positive integer value to N

check loop
{
   if rng(N) = n
      print some success message
      exit program
   else 
      back to the beginning of the check loop
}

好的,我对如何确定此算法的时间复杂度(特别是上限)感兴趣?我有点困惑。概率方面如何影响这一点?如果我理解正确,最坏的情况(理论上)是该程序永远运行?

1 个答案:

答案 0 :(得分:1)

即使理论上你的程序可以永久运行,这里的复杂性也是 O(n) - 因为加倍你将每一步猜测特定值的概率减半,从而使步数加倍。即使程序可以使用给定的n运行永远,如果n大2倍,它将永远运行两次

O表示法中的复杂性并不能告诉您将执行多少操作。它告诉您操作数量取决于输入大小