首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂度O(log(n))是否等价于O(sqrt(n))?

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

Stack Overflow用户
提问于 2017-02-04 08:39:37
回答 7查看 111.4K关注 0票数 72

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

EN

回答 7

Stack Overflow用户

发布于 2017-02-04 09:25:28

假设自然对数(否则只是乘以一个常数),我们就有

lim {n->inf} log n / sqrt(n) = (inf / inf)

代码语言:javascript
复制
                        =  lim {n->inf} 1/n / 1/(2*sqrt(n)) (by L'Hospital)
                        =  lim {n->inf} 2*sqrt(n)/n
                        =  lim {n->inf} 2/sqrt(n)
                        =  0 < inf

参考符号表示法O(.)的替代定义,因此从上面我们可以说log n = O(sqrt(n))

另外,比较下面函数的增长,对于所有的log nlog n总是以sqrt(n)为上限。

票数 33
EN

Stack Overflow用户

发布于 2019-11-17 11:31:54

只需比较这两种功能:

代码语言:javascript
复制
sqrt(n) ---------- log(n)
n^(1/2) ---------- log(n)

Plug in Log
log( n^(1/2) ) --- log( log(n) )
(1/2) log(n) ----- log( log(n) )

很明显:const .log(n) > log(log(n))

票数 7
EN

Stack Overflow用户

发布于 2017-02-04 09:15:15

不,不是等价物。

@trincot在他的回答中给出了一个很好的解释和例子。我要再加一点。你的教授教你

代码语言:javascript
复制
any operation that halves the length of the input has an O(log(n)) complexity

也是真的,

代码语言:javascript
复制
any operation that reduces the length of the input by 2/3rd, has a O(log3(n)) complexity
any operation that reduces the length of the input by 3/4th, has a O(log4(n)) complexity
any operation that reduces the length of the input by 4/5th, has a O(log5(n)) complexity
So on ...

即使是(B-1)/Bth.对输入长度的所有缩减,它的复杂性都是O(logB(n))

N:B: O(logB(n))是指基于Bn对数。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42038294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档