添加log n log n操作的复杂性

时间:2013-11-06 17:12:23

标签: algorithm math logging complexity-theory

我正在尝试分析最坏情况下的算法

log(1) + log(2) + log(4) + log(n_i) + ... + log(log(n))

工作量。其中n_i是2的幂。

我的尝试就是说:

1 + 2 + 3 + ... + n

是O(n ^ 2),我的算法是O(log(n ^ 2))= O(2log(n))。

这是对的吗?

此外,我只希望每个log(n_i)项以0.5的独立概率出现。那么,我是否可以声称上面的预期复杂度为O(2log(n)/ 2)= O(log(n))?

1 个答案:

答案 0 :(得分:3)

确定性分析

lb(1)+ lb(2)+ lb(4)+ ... + lb(lb(n))

= lb(2 0 )+ lb(2 1 )+ lb(2 2 )+ ... + lb(2 磅(磅(n))的

= 0 + 1 + 2 + ... + lb(lb(n))

= O([lb(lb(n))] 2

期望分析

令X(i)为表示第i个项的随机变量,其中X(i)= lb(2 i )= i,概率为1/2,X(i)= 0 。然后E [X(i)] = i / 2。

因此,期望的线性度,X(0)+ X(1)+ ... + X(lb(lb(n)))的期望仅为上述确定性结果的1/2。也就是说,预期的复杂性仍然是O([lb(lb(n))] 2 )。


注意log(base e)和lb(base 2)之间的区别在处理渐近复杂度时是无关紧要的,因为log(x)= lb(x)/ lb(e)和lb(e)是常数