私の教授は、入力の長さを半分にする操作では、親指のルールとしてO(log(n))の複雑さがあることを教えてくれました。それはなぜO(sqrt(n))ではないのですか?それらの両方が同等ではありませんか?複雑さO(log(n))はO(sqrt(n))と等価ですか?
答えて
彼らは等価ではありません。SQRT(N)はたくさん以上ログ(N)が増加します。 Cはありませんので、sqrt(N)< C.log(N)のすべての値はNの最小値より大きくなります。
これをつかむための簡単な方法は、SQRT(N)になりつつログ(N)は、Nの(バイナリ)桁数に近い値になるということです数字の半分の数字がNにある数字です。または、平等であることの状態に:
ログ(N)= 2log (SQRT(N))
ですから、(対数を取る必要があります! )をlog (N)と同じオーダーにするためには、sqrt(N)の値を使用します。
は、例えば、11桁、0b10000000000(= 2 )と進数のために、平方根は0b100000であるが、対数をなし、それは等価ではない唯一の10
'log(N)はNの(バイナリ)桁数に近い値になりますが、sqrt(N)はNの桁数の半分の数字になります。 –
あります。
@trincotは、彼の答えに例を挙げて1つの優れた説明を与えました。もう1つポイントを追加しています。あなたの教授は
any operation that halves the length of the input has an O(log(n)) complexity
それは
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 ...
それは、その後O(logB(n))
N:B:
O(logB(n))
の複雑さを持っている(B-1)/Bth.
ことにより、入力の長さのすべての削減のためにも本当だ、ということも事実だことを教えて平均値はB
であり、対数はn
(そうでない場合は、単に定数を掛ける)natural logarithm
と仮定すると、我々は
lim {n->inf} log n/sqrt(n) = (inf/inf)
= 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(.)
の代替definationためhttps://en.wikipedia.org/wiki/Big_O_notationを参照し、それによって、上から我々はlog n = O(sqrt(n))
、
はまた比較すると言うことができます以下の関数を使用して、log n
は、n
の場合、常に上限がsqrt(n)
になります。
いや、彼らはない等価です。あなたも、任意のk > 0
とbase > 1
(sqrt
の場合k = 1/2
)のためにその
O(n**k) > O(log(n, base))
を証明することができます。 O(f(n))
で話しているとき
たちは大n
、 制限のために行動を調査したいそのための良い手段です。両方の大きなO
が等価であることを仮定します
O(n**k) = O(log(n, base))
あります意味一部
O(n**k) <= C * O(log(n, base))
が十分n
いくつかの大規模から始まる定数C
ように有限。他の用語でそれを置く(log(n, base)
が大n
から始まる0
ないが、両方の機能は、連続的に微分されている):
lim(n**k/log(n, base)) = C
n->+inf
我々はすなわち、L'Hospital's Ruleを使用する分子と分母のためにデリバティブを取り、それらを分割することができ上限の値を調べるには:
lim(n**k/log(n)) =
lim([k*n**(k-1)]/[ln(base)/n]) =
ln(base) * k * lim(n**k) = +infinity
ので、私たちは何の定数C
ようO(n**k) < C*log(n, base)
または他の言葉で
- 1. O(1)、O(n log n)、O(log n)の複雑さを持つアルゴリズムの例
- 2. 時間複雑度がO(sqrt(n)* log(n))のアルゴリズムはありますか?
- 3. バイナリ検索はO(log n)かO(n log n)ですか?
- 4. log(n!)= O((log(n))^ 2)ですか?
- 5. O(n * log n)の仕事をし、O(n^2)の仕事をするコードの複雑さは何ですか?
- 6. mergesortの複雑さO(nlogn)+ O(n)?
- 7. ログ(O(n * log(n)))は何ですか?
- 8. O(n)とO(log(n))の違い - これはより良く、O(log(n))は正確に何ですか?
- 9. O(log n)は常にO(n)よりも速いですか
- 10. 時間Oの複雑さ(n(nはをログ)ログ)+ nはO(L)
- 11. O(n^2 * log(n))とO(n^3)どちらが大きいですか?
- 12. O(fib n)複雑アルゴリズム?
- 13. 特定のアルゴリズム - 複雑さはO(N)
- 14. ListBox.FindString最悪の場合のランタイムは何ですか? O(n)、O(n log n)、O(1)?
- 15. O(3^log n)をO(n^log 3)として書き直すことはできますか?
- 16. このコードセグメントの時間複雑度はO(n^2)かO(n^3)
- 17. 床(√2n)のO(log log n)アルゴリズム?
- 18. O(n log n)の複雑さでLinkedListに降順で値を挿入する方法はありますか?
- 19. o(n^2)の代わりにo(log n)またはo(n)の時間複雑度を持つようにこのコードを修正する方法
- 20. 関数2log(log(n))+ 3nlog(n)+ 5log(n)のbig-oとは何ですか?
- 21. なぜ配列挿入の時間複雑さはO(n)で、O(n + 1)ではないのですか?
- 22. O(n)vs O(n^2)
- 23. 時間複雑度:O(logN)またはO(N)?
- 24. ハッシュテーブル操作の時間複雑度はO(1)またはO(N)ですか?
- 25. なぜO(n * logn)ではなくTreeSet Iteration O(n)ですか?
- 26. AVLツリーは複雑にO(n)で構築できますか?
- 27. O(log n)のバイナリ検索ツリー?
- 28. O(N)Oまで(LOGN)
- 29. O(n log n)時間での線配置の境界ボックス
- 30. O(n)
'log(n)'と 'sqrt(n)'のグラフを 'n == 1000 '程度までプロットしてください。 –
log(1)= 0、sqrt(1)= 1 – Sung
申し訳ありませんが、私は何を考えていたのか分かりません。ありがとう –