web-dev-qa-db-ja.com

O(n ^ 2)対O(n(logn)^ 2)

時間の複雑さO(n^2)またはO (n(logn)^2)の方が優れていますか?

それを単純化すると、

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

およびlogn <nですが、logn^2

12
Chin

nlog n)よりも小さい2n 0.49未満の値の場合...

したがって、一般的にはlog n)2は大きい方に適していますn ...

しかし、これらの[〜#〜] o [〜#〜](something)-notationは常に一定の要素を除外しているため、あなたの場合、どちらのアルゴリズムが優れているか確認してください...

これがグラフです:

enter image description here

(青い線はnで、緑の線はlog n)です)2

nの小さな値の違いはそれほど大きくなく、Big-O表記に含まれていない定数係数によって簡単に小さくなります。

ただし、大規模なnlog n)2ハンドダウン:

enter image description here

15
Markus A.

各定数について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)を想定しています。

12
amit
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
Timothy Shields

(logn)^2も<nです。

例を挙げましょう:

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

(long n)^ 2がさらに削減されていることがわかります。

あなたがnのより大きな値を取る場合でも、例えば1億

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

これはnよりはるかに少ないです。

0
Yogendra Singh

(Log n)^ 2は、変数mをexp mで変更する場合、m ^ 2がexp mよりも優れているため、より優れています。

0