web-dev-qa-db-ja.com

Big O表記Log Base 2またはLog Base 10

アルゴリズムのBig O実行時間がO(LogN)。

たとえば、QuicksortのビッグO実行時間はO(LogN)で、Log base 10ですが、バイナリツリーの高さはO(LogN + 1)でLog base 2です。

質問

1)異なる記事では対数に異なる基数が使用されているため、10を底とするか2を底とするかについて混乱しています。

2)Log base 2またはLog base 10の場合、違いはありますか??

3)O(LogN)が表示されている場合、10を底とする対数を意味すると仮定できますか?

30
Computernerd

使用されるベースに関係なく相対的な複雑さは同じであるため、ログのベースが何であるかは問題ではないと思います。

したがって、O(log2X)= O(ログ10バツ)

また、対数は一定の定数によって関係していることも言及します。

enter image description here

そう

log₁₀(x)=log₂(x)/log₂(10)

そのため、ほとんどの場合、通常、複雑性分析では定数を無視します。そのため、基数は重要ではないと言います。

また、ベースは Merge Sort のようにほとんどの場合2であると見なされることがあります。ツリーの高さはlog₂ n、ノードには2つのブランチがあるため。

1)異なる記事では対数に異なる基数が使用されているため、10を底とするか2を底とするかについて混乱しています。

したがって、上記で説明したように、このベースの変更は重要ではありません。

2)Log base 2またはLog base 10の場合、違いはありますか??

いいえ、関係ありません。

3)O(LogN)が表示されている場合、10を底とする対数を意味すると仮定できますか?

はい、あなたはあなたが基本的な変換ルールを知っていると仮定することができます。

37
Rahul Tripathi

log₁₀(x)=log₂(x)/log₂(10)すべてのx。 1 /log₂(10)は定数乗数であり、漸近解析から省略できます。

より一般的には、対数の底はaからb(両方の定数wrt。n)logₐ(bで割ることにより)、したがって、1より大きい対数ベースを自由に切り替えることができます:O(log₁₀(n))はO(log₂(n))、O(ln(n))など.

この結果の例として、 B-trees は、分析でより高い対数ベースを提供しているにもかかわらず、バランスの取れたバイナリ検索ツリーに漸近的に勝ちません。より良い定数があります。

14
Fred Foo

Big O表記では、O(log(n))はすべてのベースで同じです。これは、対数ベースの変換によるものです。

_log2(n) = log10(n)/log10(2)
_

1/log10(2)は定数の乗数であるため、O(log2(n))O(log10(n))と同じです。

7
dkrikun