【问题标题】:Complexity/big theta of loop with multiplicative increment of i具有 i 的乘法增量的循环的复杂性/大 theta
【发布时间】:2017-11-07 03:57:50
【问题描述】:

我正在尝试找出以下的时间复杂度/大 theta:

def f(n):
    i = 2
    while i <n:
        print(i)
        i = i*i

我知道如何解决这个问题的唯一方法是找到 i_k 的一般公式,然后求解 i_k >= n 的方程,但是我最终得到一个 log(logn/log2)/log(2)方程作为我的 k 值,这对我来说似乎是非常错误的,我不确定如何将其转换为大的 theta 表达式。任何帮助将不胜感激!

【问题讨论】:

    标签: algorithm runtime time-complexity complexity-theory


    【解决方案1】:

    实际上,这个答案看起来不错!如果将 log x / log 2 重写为 log2 x(或简称 lg x),那么您所拥有的是迭代次数为 lg lg n。由于循环的迭代 k 中 i 的值为 22k,这意味着当 i 达到值 22lg 时循环停止lg n = 2lg n = n,匹配循环边界。

    更一般地说,在一个值超过 n 之前,你可以对其平方的次数是 Θ(log log n),类似地,在你将一个数字 n 降为常数之前,你可以取的平方根数是 Θ( log log n),所以你的答案几乎是你所期望的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      相关资源
      最近更新 更多