itslabtime.com

情報・計算・アルゴリズムの探求

二分探索と整列条件

二分探索法は、ソートされたデータの中央値を比較することで、不要な半分を特定し除外する。初期段階では、候補範囲を維持するためのルールが必要となる。

関連する実験:線形探索と二分探索 →
線形探索と二分探索
線形探索と二分探索の実験画面 →

概念と仕組み

線形探索は、値を順に調べますが、二分探索は現在の範囲の中央値を調べます。目標値よりも中央値が大きいか小さいかを知っていれば、ソートされた順序を利用して、範囲の半分を排除できます。

以下の比較において、答えが存在する場合、その答えは残りの範囲内に存在しなければなりません。範囲が空になった場合、その範囲内に値が存在しないと結論付けます。

関係式と成立条件

候補の数は、約 n/2ᵏ で減少するため、比較の数は対数的に増加する。シミュレーションにおける、n≥1 で重複がないリストの場合、最大となる比較の数は、⌊log₂n⌋ + 1 と比較できる。

ソートのコストと検索コストは、それぞれ個別に考慮する必要があります。重複値を持つリストにおける、最初の位置と最後の位置を特定する問題に取り組みする場合、停止条件を調整する必要があります。

仮想実験で読み取る変化

二分探索は比較ごとに候補範囲を半分にします。

重複のない整列済み整数列を両手法で使います。

重要な関係式と記号

binary steps ≤ ⌊log₂n⌋ + 1

式で使う記号と単位
記号意味単位
nデータ数個
k比較・探索範囲の縮小回数回

例で確かめる

二分探索に必要な条件は?

整列済みリスト · 二分探索は比較ごとに候補範囲を半分にします。

よくある誤解

  • ソートされていないリストに対して、単に中央値の比較ルールのみを用いると、正しく二分探索は行えません。

この概念を実験で確かめる

参考資料

OpenStax · Introduction to Computer Science(英語)