web-dev-qa-db-ja.com

n log nはO(n)?

私はこの再発を解決しようとしています

T(n)= 3 T(n/2) + n lg n ..

N lg nはO(n ^ 2)であるため、マスター定理のケース2に属するという解決策に到達しました。

しかし、ソリューションのマニュアルを参照した後、私は彼らが持っているこのソリューションに気づきました

enter image description here

解決策によれば、0から0.58の間のeに対してn lg n = O(n ^(lg 3-e))

これは、n lg n is O(n) ..これは正しいですか?ここに何かが欠けていますか?

Nlgn O(n ^ 2)ではありませんか?

21
Wael Awada

これは物事をより良く説明します enter image description here

80
Sreenath Nannat

n*log(n)O(n^2)ではありません。準線形として知られ、O(n^2)よりもはるかに遅く成長します。実際、n*log(n)は多項式より小さいです。

言い換えると:

_O(n*log(n)) < O(n^k)
_

ここで_k > 1_

あなたの例では:

_3*T(2n) -> O(n^1.585)
_

O(n^1.585)は多項式であり、O(n*log(n))を支配するので、最終的な複雑さはO(n^1.585)になります。

14
Mysticial

nlg3 O(n)ではありません。それはO(n)より大きくなります...実際、1より大きいnの指数は、O(n)よりも漸近的に長い時間になります。 lg(3)は約1.58なので、指数から.58未満を減算する限り、O(n)より漸近的に大きくなります。

6
bdares