algorithm - 如何找到该 block 的 theta 表示法?

标签 algorithm math notation big-o

该 block 是:

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

我需要找到 x=x+1 执行次数的 theta 表示法。我创建了一个包含一些示例值的表,但我不知道如何从那里继续。这是我的示例值:

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

最佳答案

考虑这个问题的一种方法是跟踪循环中 i 的值。在第一次迭代之前,该值为 2 = 21。第二次迭代后,结果为 4 = 22。第三次迭代后,结果为 16 = 24。第四次迭代后,结果为 256 = 28。第五次之后,为 65,536 = 216

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

22k ≥ n

两边取对数两次,得

22k ≥ n

2k ≥ log2 n

k ≥ log2 log2 n

因此循环迭代次数大致为 log2 log2 n。因此,循环运行 O(log log n) 次。更准确地说,循环运行 θ(log log n) 次,因为循环直到 k 次迭代结束后才会停止。

希望这有帮助!

关于algorithm - 如何找到该 block 的 theta 表示法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14594089/

相关文章:

javascript - "options = options || {}"在 Javascript 中是什么意思?

algorithm - 用 搜索字符串。通配符

algorithm - 证明或反驳以下推论(大 O 表示法)

java - 数学 "equations"无法正常工作

math - 如何强制 AWK 将字符串计算为数学表达式?

c++ - 为什么当我输入定点符号时,我的输出是 0.00?

algorithm - 快速排序 quickie : the flow of control in quicksort

python - Levinshtein 使用 Python 从文本文件中提取两个单词的距离

javascript - 获取线包围框的坐标