小编典典

复杂度O(log(n))是否等于O(sqrt(n))?

algorithm

我的教授刚刚告诉我们,任何将输入长度减半的运算都具有O(log(n))复杂度,这是经验法则。为什么不是O(sqrt(n)),两个都不相等?


阅读 435

收藏
2020-07-28

共1个答案

小编典典

它们不是等效的: sqrt(N)的 增长将比 log 2(N)_大得多。没有常数 _C, 因此对于所有大于某个最小值的 N 值,您都将拥有
sqrt(N) <C.log(N)。 __

一个简单的方法来抓住这个,是 日志 2(N)_将是一个值接近的(二进制)位的数目 _Ñ ,而 SQRT(N)
将是一个数,其具有自身的位数的一半数量的 Ñ 具有。或者,用等式声明:

log 2(N)= 2log 2(sqrt(N))

因此,您需要使用 sqrt(N) 的对数(!)使其复杂度降低到与 _log 2(N)_相同的顺序。

例如,对于11位二进制数字0b10000000000(= 2 10),平方根为0b100000,但对数仅为10。

2020-07-28