私はこの再発を解決しようとしています
T(n)= 3 T(n/2) + n lg n ..
N lg nはO(n ^ 2)であるため、マスター定理のケース2に属するという解決策に到達しました。
しかし、ソリューションのマニュアルを参照した後、私は彼らが持っているこのソリューションに気づきました
解決策によれば、0から0.58の間のeに対してn lg n = O(n ^(lg 3-e))
これは、n lg n is O(n) ..これは正しいですか?ここに何かが欠けていますか?
Nlgn O(n ^ 2)ではありませんか?
これは物事をより良く説明します
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)
になります。
nlg3 O(n)ではありません。それはO(n)より大きくなります...実際、1より大きいnの指数は、O(n)よりも漸近的に長い時間になります。 lg(3)は約1.58なので、指数から.58未満を減算する限り、O(n)より漸近的に大きくなります。