アルゴリズムの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を底とする対数を意味すると仮定できますか?
使用されるベースに関係なく相対的な複雑さは同じであるため、ログのベースが何であるかは問題ではないと思います。
したがって、O(log2X)= O(ログ10バツ)
また、対数は一定の定数によって関係していることも言及します。
そう
そのため、ほとんどの場合、通常、複雑性分析では定数を無視します。そのため、基数は重要ではないと言います。
また、ベースは Merge Sort のようにほとんどの場合2であると見なされることがあります。ツリーの高さはlog₂ n
、ノードには2つのブランチがあるため。
1)異なる記事では対数に異なる基数が使用されているため、10を底とするか2を底とするかについて混乱しています。
したがって、上記で説明したように、このベースの変更は重要ではありません。
2)Log base 2またはLog base 10の場合、違いはありますか??
いいえ、関係ありません。
3)O(LogN)が表示されている場合、10を底とする対数を意味すると仮定できますか?
はい、あなたはあなたが基本的な変換ルールを知っていると仮定することができます。
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 は、分析でより高い対数ベースを提供しているにもかかわらず、バランスの取れたバイナリ検索ツリーに漸近的に勝ちません。より良い定数があります。
Big O表記では、O(log(n))
はすべてのベースで同じです。これは、対数ベースの変換によるものです。
_log2(n) = log10(n)/log10(2)
_
1/log10(2)
は定数の乗数であるため、O(log2(n))
はO(log10(n))
と同じです。