i ^ k的循环复杂度

问题描述 投票:4回答:3

考虑此循环:

// i^k as in i raised to the power of k
for (int i = 2; i <= n; i = i^k) {
    // some O(1) expressions or statements
}

为什么要运行log_k(log(n))次?

algorithm time-complexity big-o
3个回答
5
投票

您的问题本质上是:我们需要多少次将2提升到k的幂,直到它大于”

请注意t次得出]现在让我们解决:“2 2 ^ {log_2(N)}”>。与询问相同:”>以一个“log_k”双方终于搞定了:“ log_k(log_2(n))”>。


0
投票
[如果您将t视为循环中的迭代次数,则找到最大t以使以下不等式成立(我们还认为n足够大,以致不违反不等式:]]

enter image description here

您可以看到,迭代次数t等于问题中指定的时间复杂度。


0
投票
在您的问题中,我们想知道for循环经过了多少次,因此我们必须找到此等式的x:2^x^k=2^k^x= n,因此我们有x^k = log(n)而不是x = logk(log(n))
© www.soinside.com 2019 - 2024. All rights reserved.