バイナリ検索のbig-Oのログがベース2ではないのはなぜですか?


35

コンピューターサイエンスアルゴリズムを理解するのは初めてです。私はバイナリ検索のプロセスを理解していますが、その効率性について少し誤解しています。

要素サイズでは、特定の要素を見つけるのに平均でnステップかかります。両側の底2の対数を取ると、log 2s = nが得られます。それでは、バイナリ検索アルゴリズムの平均ステップ数はlog 2s )ではありませんか?s=2nnログ2s=nログ2s

バイナリ検索アルゴリズムに関するこのウィキペディアの記事では、平均パフォーマンスはと述べてい。これはなぜですか?なぜこの数字ははないのですか?Oログnログ2n


回答:


86

対数の底を変更すると、結果の式は、Big-O表記法の定義により、両方の関数が漸近的な振る舞いに関して同じクラスに属していることを意味する定数因子だけが異なります。

たとえば、 ここで、 。C=1

ログ10n=ログ2nログ210=Cログ2n
C=1ログ210

したがって、とは定数異なり、したがって両方とも真です。 一般に、1より大きい正の整数および場合はです。log 2 n C log 10 n  は  O log 2 n log 2 n  は  O log 10 n log a n O log b na bログ10nログ2nC

ログ10n は Oログ2n
ログ2n は Oログ10n
ログanOログbnab

対数関数を持つ別の興味深い事実は、その定数の一方、ありませんが、であるのでは、定数係数だけがと異なり。k>1nkOnログnkOログnログnk=kログnログnk


正の整数だけでなく、すべての実数、たとえば。ab>1e
nbubis

2
これが、big-O表記では、対数の底が通常指定されない理由であると付け加えます。また、どのベース使用するかについて混乱がないことを意味し。違いを生じないため、一般的に使用されるベースのいずれでもかまいません。Oログn
svick

9

ログneログ

しかし、すでに示したように、この場合は問題になりません。


7
「log(n)」は曖昧かもしれませんが、「O(log(n))」は、あなたが考えているベースに関係なく、後者が1つの意味しか持っていないからではないことに注意する価値があるでしょう。
クリス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.