これはデータ構造のすべての講義/ TA講義の私の最初のコースです、我々はO(log(n))
について話します。これは恐らく疑問な質問ですが、誰かが私にそれが何を意味するのかを正確に説明できるのであれば、私は感謝しています!O(n)とO(log(n))の違い - これはより良く、O(log(n))は正確に何ですか?
答えて
これは、問題の物(通常は実行時間)は、入力サイズの対数と一致するようにスケールされることを意味します。
Big-O notationは正確な式を意味するものではありませんが、むしろはを結合しました。例えば、次の関数の出力は、すべてのO(N)である:
f(x) = 3x
g(x) = 0.5x
m(x) = x + 5
すべて上昇直線X、それらの出力を増加させるようにので - 6があるかどう:f(n)
とg(n)
との間の1比率は、そこにも意志f(10*n)
とg(10*n)
の間で約6:1の比率になります。 O(n)
かO(log n)
が優れているとして
、検討:n = 1000
場合、log n = 3
(対数ベース10のために)。あなたは、アルゴリズムを実行するのに1000秒か3秒かかりますか?
きちんと説明されています。また、わかっていないものについても対数が何であるかについての情報を追加したいと思います。コンピュータサイエンスのlog nは指数で、nを得るには2を上げる必要があることを意味します。つまり、n = 16の場合を想像してみてください。私たちの指数は実際のn値よりはるかに小さいでしょう。これは理にかなってほしいと思っています。上の例のAmberでは、彼女は同様の例を挙げていますが、3の累乗に10を上げています。 –
+1 - 最小の単語数で最も明確な説明が可能です。ありがとうございました。 – techfoobar
http://en.wikipedia.org/wiki/Big_oh
O(ログn)より良好です。
O(logn)は、アルゴリズムの実行時間が入力サイズの対数に依存することを意味します。 O(n)は、アルゴリズムの実行時間が入力サイズに依存することを意味します。
基本的に、O(何か)はアルゴリズムの命令数(原子数)の上限です。したがって、O(logn)はO(n)よりも厳しく、アルゴリズム解析の点でも優れています。しかし、O(LOGN)であるすべてのアルゴリズムはまた、O(N)であるが、サイズn
の入力のためではない...後方
"O(n)はO(logn)よりも厳しく、アルゴリズム分析の点でも優れています" ...明らかにO(log(n))はO(n)よりも優れています。私はあなたが他の方法を意味したと思います。 – LuxuryMode
Silly :)編集済み – Eyal
、O(n)
のアルゴリズムはO(log(n))
の別のアルゴリズムが、n
にperportional手順を実行しますおおよそのステップを実行しますlog(n)
。
明らかにlog(n)
は、n
より小さく、したがって、複雑さのアルゴリズムO(log(n))
が優れています。以来、はるかに速くなるでしょう。
正式な定義:
G(X)= O(F(x))を< => X0と定数Cが存在するすべてのx> X0ため、| G(X)| < = C | f(x)|である。
したがって、複雑さO(f(n))、 という問題PのアルゴリズムAが見つかった場合、アルゴリズムの実行するステップ数はf(n)に漸近または等しくなります。 nが通常は入力サイズのとき。 (何でも構いません)
詳細については、http://en.wikipedia.org/wiki/Big_O_notationを参照してください。
- 1. O(log n)は常にO(n)よりも速いですか
- 2. O(1)、O(n log n)、O(log n)の複雑さを持つアルゴリズムの例
- 3. ListBox.FindString最悪の場合のランタイムは何ですか? O(n)、O(n log n)、O(1)?
- 4. 床(√2n)のO(log log n)アルゴリズム?
- 5. O(3^log n)をO(n^log 3)として書き直すことはできますか?
- 6. O(n)vs O(n^2)
- 7. f(n)= log(n)^ mはすべての自然数mに対してO(n)
- 8. なぜO(n * logn)ではなくTreeSet Iteration O(n)ですか?
- 9. T(n)= 2T(n/2)+ O(n)からO(nlogn)を得る方法
- 10. 漸近分析では、 - O(f(n)+ g(n))= O(max {f(n)、g(n)})
- 11. 2つのループで実行時間O(n^3 log n)で実行
- 12. O(n log n)時間内に特別な点kを見つけるアルゴリズム
- 13. 時間Oの複雑さ(n(nはをログ)ログ)+ nはO(L)
- 14. 防止O(N)クエリ
- 15. O(log(log)))) - 競合平均とは何ですか?
- 16. C++ステートメントのBig-O 'delete [] Q;' O(1)またはO(n)?
- 17. 可能な説明(N!)= O(NLG(N))
- 18. Big Oの例2^n
- 19. Javaコレクション:TreeMap.size()およびTreeSet.size():O(1)またはO(n)?
- 20. O(log n)よりも10倍のパワーを得ることができますか?
- 21. O(fib n)複雑アルゴリズム?
- 22. O(2^n)より良いハノイ解の塔?
- 23. 成長率log(log * n)とlog *(log n)のどちらが速いのですか?
- 24. ここで、O(n個の* m)よりも良好にレーベンシュタインアルゴリズムのdamerauバージョンを
- 25. 実際には、リンクリスト追加O(N)またはO(1)ですか?
- 26. アルゴリズムの漸近解析:時間nでソートされたリストnにk個の新しい要素を挿入する方法O(k log k + n)
- 27. 基本ケースがO(n)の場合、反復は何ですか?
- 28. ランタイムをO(n)に減らす
- 29. このO(n^4)アルゴリズムは回避できますか?
- 30. 合計アルゴリズム:O(n^2)平均で
考えられる繰り返しhttp://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o/487278#487278 – sank
Whoa、1429 upvotes?私はウィキペディアのリンクの半分で満足しています。 –