gpt4 book ai didi

algorithm - O(n log log n) 时间复杂度

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:30:24 24 4
gpt4 key购买 nike

我这里有一个小程序:

Given any n:
i = 0;
while (i < n) {
k = 2;
while (k < n) {
sum += a[j] * b[k]
k = k * k;
}
i++;
}

这个的渐近运行时间是O(n log log n)。为什么会这样?我知道整个程序至少会运行 n 次。但我不确定如何找到 log log n。内部循环取决于 k * k,所以它显然会小于 n。如果每次都是 k/2,那么它就是 n log n。但是,您如何计算出 log log n 的答案呢?

最佳答案

为了数学证明,内循环可以写成:

T(n) = T(sqrt(n)) + 1

w.l.o.g assume 2 ^ 2 ^ (t-1)<= n <= 2 ^ (2 ^ t)=>
we know 2^2^t = 2^2^(t-1) * 2^2^(t-1)
T(2^2^t) = T(2^2^(t-1)) + 1=T(2^2^(t-2)) + 2 =....= T(2^2^0) + t =>
T(2^2^(t-1)) <= T(n) <= T(2^2^t) = T(2^2^0) + log log 2^2^t = O(1) + loglogn

==> O(1) + (loglogn) - 1 <= T(n) <= O(1) + loglog(n) => T(n) = Teta(loglogn).

然后总时间是 O(n loglogn)。

为什么内循环是 T(n)=T(sqrt(n)) +1?首先看内部循环何时中断,当 k>n 时,表示在此之前 k 至少为 sqrt(n),或者在它之前的两层中最多为 sqrt(n),因此运行时间将为 T(sqrt(n)) + 2 ≥ T(n) ≥ T(sqrt(n)) + 1。

关于algorithm - O(n log log n) 时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5201013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com