基本情報技術者 2009年 春期 午前(科目A) 問07
問題文
昇順に整列された個のデータが配列に格納されている。探索したい値を2分探索法で探索するときの、およその比較回数を求める式はどれか。
選択肢
ア:(正解)
イ:
ウ:
エ:
🔒 解説は解答すると表示されます
二分探索の比較回数【午前解説】
正解の理由
正解は ア です。二分探索では配列の中央要素と比較して探索範囲を半分に絞る操作を繰り返します。各比較で残る要素数が半分になるため、要素数 が 1 になるまでの繰り返し回数は概ね 回となります。厳密には最悪比較回数は (成功・失敗条件で若干の差)になりますが、選択肢の中では が最も適切です。
解法ステップ
- 比較回数を とする。探索で1回比較すると残りは最大 個に減る。
- 再帰的関係式:()。
- この漸化式を展開すると を 回繰り返し、 となる が必要。
- すなわち で 。従って比較回数は 、およそ 回となる。
- 最悪ケースは添字や端条件により 回と表現されることが多い。
選択肢別の誤答解説
- ア: — 正解。半分に絞る操作を行う二分探索の比較回数を表す最もふさわしい式です。
- イ: — 誤り。比較回数の「平均」をこのように単純に半分にする根拠はなく、中央からの距離の平均と混同した誤りです。
- ウ: — 誤り。これは線形探索の比較回数(最悪 回)であり、半分に分割する二分探索の性質と矛盾します。
- エ: — 誤り。二分探索は二重ループによる二次時間ではなく、むしろ対数時間で解ける問題です。
よくある誤解
- 「(log2 n + 1)/2 が平均値」:中央からの距離平均を誤って取るとこの式に行き着くが、比較回数の期待値は探索の成否や確率分布で異なり一般式ではない。
- 「底が重要で10やeの対数を使うべき」:複雑度の観点では対数の底は定数因子に過ぎず、二分探索では半分にするので底は 2 を用いるのが自然。
- 「線形探索と同じ や二重ループだから 」:二分探索は範囲絞り込みで高速化されるため線形や二次とは本質が異なる。
補足コラム
- 具体例: のとき比較は 1 回、 で最大 2 回、 の最悪比較回数は 回です。
- 成功検索と失敗検索で比較回数が異なる点に注意。成功検索の平均比較回数は位置分布に依存しますが、最悪は上記の式が目安です。
- ビッグオー表記では と表現し、底は定数因子の違いとして無視できます。実装(再帰/反復)による回数差は僅少です。
FAQ
Q1: なぜ底が 2 なのですか?
A1: 毎回探索範囲を半分にする操作が本質であるため、増減の比が 1/2 であり対数の底は 2 になります。
A1: 毎回探索範囲を半分にする操作が本質であるため、増減の比が 1/2 であり対数の底は 2 になります。
Q2: 比較回数は切り捨てや切り上げが必要ですか?
A2: 厳密には整数回数なので最悪ケースは のように床や切り上げで表現されますが、およその回数は で十分です。
A2: 厳密には整数回数なので最悪ケースは のように床や切り上げで表現されますが、およその回数は で十分です。
Q3: なぜ選択肢イは間違いなのですか?
A3: イは「(log2 n + 1) を 2 で割る」形で、二分探索の再帰的半減の本質を正しく反映していません。平均化の根拠がなく誤りです。
A3: イは「(log2 n + 1) を 2 で割る」形で、二分探索の再帰的半減の本質を正しく反映していません。平均化の根拠がなく誤りです。
Q4: 実装での比較回数と理論値がずれることはありますか?
A4: 境界条件(インデックス計算、奇遇な分割方法)により +1 や -1 の差が出ることはありますが、オーダーは変わりません。
A4: 境界条件(インデックス計算、奇遇な分割方法)により +1 や -1 の差が出ることはありますが、オーダーは変わりません。
関連キーワード: 二分探索、バイナリサーチ、対数時間、探索アルゴリズム、時間計算量、アルゴリズム設計、漸化式、最悪計算量

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

