特别是,我有兴趣找到Theta的复杂性。我可以看到算法受log(n)限制,但我不知道如何继续考虑问题大小减少指数。
i = n
j = 2
while (i >= 1)
i = i/j
j = 2j
答案 0 :(得分:4)
回答你问题的最简单方法是通过对数的眼睛看看算法(在我的例子中是二进制对数):
log i_0 = log n
log j_0 = 1
k = 0
while (log i_k >= 0) # as log increases monotonically
log i_{k+1} = log i_k - log j_k
log j_{k+1} = (log j_k) + 1
k++
通过这种方式,我们发现log i
在每一步中都会减少log j = k + 1
现在我们什么时候退出循环呢?
这发生在
因此,最大步数是最小整数k
,使得
成立。
渐近地,这相当于,因此您的算法位于
答案 1 :(得分:2)