我正在尝试分析最坏情况下的算法
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))?
答案 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)是常数