如何找到此块的θ表示法?

时间:2013-01-29 23:33:58

标签: algorithm math big-o notation big-theta

该块是:

    i=2  
    while(i<n){  
        i=i*i;  
        x=x+1;  
    }  

我需要找到x = x + 1执行次数的θ表示法。我创建了一个包含一些示例值的表,但我无法弄清楚如何从那里继续前进。以下是我的示例值:

(n) - (# times looped)  
  3 - 1  
  5 - 2  
 20 - 3  
400 - 4

1 个答案:

答案 0 :(得分:4)

考虑这个问题的一种方法是在循环中追踪i的值。在第一次迭代之前,值为2 = 2 1 。在第二次迭代之后,它是4 = 2 2 。在第三次迭代之后,它是16 = 2 4 。在第四次迭代之后,它是256 = 2 8 。在第五个之后,它是65,536 = 2 16

如您所见,在循环的k次迭代之后,i的值为2 2 k 。这意味着迭代次数将(大致)对应于k的最低值,使得

  

2 2 k ≥n

取两边的对数,我们得到

  

2 2 k ≥n

     

2 k ≥log 2 n

     

k≥log 2 log 2 n

因此循环迭代次数大致为log 2 log 2 n。因此,循环运行O(log log n)次。更确切地说,循环运行Θ(log log n)次,因为循环不会停止,直到k迭代结束。

希望这有帮助!