O(n ^ 2)vs O(n(logn)^ 2)

时间:2012-12-04 19:42:28

标签: algorithm math data-structures big-o time-complexity

时间复杂度O(n^2)O (n(logn)^2)更好吗?

我知道当我们简化它时,就会变成

O(n) vs O((logn)^2)

logn< n,但是logn^2呢?

6 个答案:

答案 0 :(得分:15)

对于 n n 仅小于 log n) 2 强>小于0.49 ......

所以一般 log n) 2 对于大 n ...

但是,由于这些 O (某事物) - 注释总是省略不变因素,在您的情况下,可能无法确定哪种算法更好。

这是一张图表:

enter image description here

(蓝线 n ,绿线 log n) 2

请注意, n 小值的差异不是那么大,而且可能很容易因Big-O表示法中未包含的常数因素而相形见绌。

但是对于较大的 n log n) 2 会获胜:

enter image description here

答案 1 :(得分:11)

对于每个常量k渐近log(n)^k < n

证明很简单,请记录等式的两边,然后得到:

log(log(n))*k < log(n)

很容易看出渐近,这是​​正确的。


语义注释:假设此处log(n)^k == log(n) * log(n) * ... * log(n) (k times)而非log(log(log(...log(n)))..) (k times),因为它有时也会被使用。

答案 2 :(得分:3)

O(n^2) vs. O(n*log(n)^2)
<=> O(n) vs. O(log(n)^2) (divide by n)
<=> O(sqrt(n)) vs. O(log(n)) (square root)
<=> polynomial vs. logarithmic

对数胜利。

答案 3 :(得分:0)

(logn)^2也是&lt; n

举个例子:

 n = 5
 log n = 0.6989....
 (log n)^ 2 = 0.4885..

你可以看到,(长n)^ 2进一步减少。

即使您采用更大的n值,例如100,000,000,然后

   log n = 9
   (log n)^ 2 = 81

远小于n

答案 4 :(得分:0)

(Log n)^ 2更好,因为如果你用exp m做变量n,那么m ^ 2优于exp m

答案 5 :(得分:-1)

O(n(logn)^ 2)对于大n!

更好(更快)

从双方获取日志:

的log(n ^ 2)= 2log(n)的

日志(N(logn)时间^ 2)=的log(n)+ 2log(日志(N))=的log(n)+ 2log(日志(n))的

lim n - &gt;无穷大[(Log(n)+ 2log(Log(n)))/ 2log(n)/] = 0.5(使用l'Hôpital规则)(http://en.wikipedia.org/wiki/L'H%C3 %B4pital's_rule)]