2012-04-29 14 views
26

これはデータ構造のすべての講義/ TA講義の私の最初のコースです、我々はO(log(n))について話します。これは恐らく疑問な質問ですが、誰かが私にそれが何を意味するのかを正確に説明できるのであれば、私は感謝しています!O(n)とO(log(n))の違い - これはより良く、O(log(n))は正確に何ですか?

+1

考えられる繰り返しhttp://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o/487278#487278 – sank

+0

Whoa、1429 upvotes?私はウィキペディアのリンクの半分で満足しています。 –

答えて

44

これは、問題の物(通常は実行時間)は、入力サイズの対数と一致するようにスケールされることを意味します。

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秒かかりますか?

+15

きちんと説明されています。また、わかっていないものについても対数が何であるかについての情報を追加したいと思います。コンピュータサイエンスのlog nは指数で、nを得るには2を上げる必要があることを意味します。つまり、n = 16の場合を想像してみてください。私たちの指数は実際のn値よりはるかに小さいでしょう。これは理にかなってほしいと思っています。上の例のAmberでは、彼女は同様の例を挙げていますが、3の累乗に10を上げています。 –

+0

+1 - 最小の単語数で最も明確な説明が可能です。ありがとうございました。 – techfoobar

0

O(logn)は、アルゴリズムの実行時間が入力サイズの対数に依存することを意味します。 O(n)は、アルゴリズムの実行時間が入力サイズに依存することを意味します。

基本的に、O(何か)はアルゴリズムの命令数(原子数)の上限です。したがって、O(logn)はO(n)よりも厳しく、アルゴリズム解析の点でも優れています。しかし、O(LOGN)であるすべてのアルゴリズムはまた、O(N)であるが、サイズnの入力のためではない...後方

+3

"O(n)はO(logn)よりも厳しく、アルゴリズム分析の点でも優れています" ...明らかにO(log(n))はO(n)よりも優れています。私はあなたが他の方法を意味したと思います。 – LuxuryMode

+0

Silly :)編集済み – Eyal

3

O(n)のアルゴリズムはO(log(n))の別のアルゴリズムが、nにperportional手順を実行しますおおよそのステップを実行しますlog(n)

明らかにlog(n)は、nより小さく、したがって、複雑さのアルゴリズムO(log(n))が優れています。以来、はるかに速くなるでしょう。

0

正式な定義:

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を参照してください。

関連する問題