応用情報技術者 2018年 春期 午前2 問06
問題文
異なる個のデータが昇順に整列された表がある。この表を個のデータごとのブロックに分割し、各ブロックの最後尾のデータだけを線形探索することによって、目的のデータの存在するブロックを探し出す。次に、当該ブロック内を線形探索して目的のデータを探し出す。このときの平均比較回数を表す式はどれか。ここで、は十分に大きく、はの倍数とし、目的のデータは必ず表の中に存在するものとする。
選択肢
ア:
イ:(正解)
ウ:
エ:
🔒 解説は解答すると表示されます
ブロック線形探索平均比較数【午前2解説】
正解の理由
分割した各ブロックの最後尾だけを順に比較してブロックを特定し、そのブロック内を線形探索する戦略では、ブロック選定に要する比較回数の期待値と、当該ブロック内を探索する際の期待比較回数の和が全体の期待比較回数になります。ブロック数を とすると、ブロック選定に要する比較の期待値は 、当該ブロック内の線形探索の期待値は となり、合計は
です。したがって選択肢の中では イ の式が正しいです。
解法ステップ
- ブロック数を と置く(問題の条件で整数)。
- ブロック選定の期待比較回数を求める。各ブロックに目的値が存在する確率は均等で 、ブロック番号が のとき最後尾の比較は 回目で止まるため期待値は
- そのブロック内の探索期待回数を求める。ブロック内の位置を とすると、(最後尾)のときは既に比較済みで追加探索は不要、その他のときは 回の比較が必要。従って期待値は
- 和を取ると合計期待比較回数は
選択肢別の誤答解説
-
ア:
この式はブロック内探索を最悪で 回と仮定したうえでブロック選定のコストを と見なした形です。問題は「平均比較回数」を問うており、ブロック内探索は平均で 回であり を使うのは過大評価です。 -
イ:
正解です。上で示した通り、ブロック選定期待値 とブロック内期待値 の和に対応します( を代入)。 -
ウ:
これはブロック選定の回数だけ、つまりブロック数 をそのまま期待値と誤認している式です。実際のブロック選定期待値は平均で ですし、ブロック内探索のコストを無視しています。 -
エ:
これはブロック内探索の期待値のみ(または と混同したもの)を表しており、ブロック選定に要する比較をまったく含んでいません。
よくある誤解
- ブロック内の平均比較回数を としてしまう誤り
これは「1からmまでの平均」と見なしてしまう誤解ですが、ブロックの最後尾に目的値がある場合はブロック内探索を行わないため、最後尾の位置 に対する内部比較は 回です。正しくは です。 - ブロック選定期待値を (最大値)とする誤り
ブロックは均等確率で目的値を含むため、平均は であり最大値 を使うべきではありません。 - 「最後尾を比較したときの比較を二重に数える」ミス
最後尾が目的値であれば内部探索は不要であり、その比較はブロック選定側の比較として既にカウントされています。内部探索側で再度カウントしてはいけません。
補足コラム
最適なブロックサイズを考えると、期待比較回数
を (連続値として)で最小化すると、微分して
となり、最小は で達成されます。このときの最小期待比較回数は約 です。実際には は整数かつ制約があるため、 または を試して小さい方を選びます。これは「平方根分割(sqrt-decomposition)」の直感的根拠にもなります。
例: のとき
FAQ
Q. m が n の約数でない場合は?
A. 基本的な考え方は同じで、いくつかのブロックが他より1つ多い(あるいは少ない)だけです。期待値の計算は各ブロックの要素数に合わせて重み付けすれば同様に求められます。
A. 基本的な考え方は同じで、いくつかのブロックが他より1つ多い(あるいは少ない)だけです。期待値の計算は各ブロックの要素数に合わせて重み付けすれば同様に求められます。
Q. 目的データが表にない場合は?
A. 問題の仮定では常に存在するとされていますが、存在しない場合はブロック選定が最後まで進み、さらにブロック内探索でも見つからないケースが出ます。期待値や停止条件が変わるため別途解析が必要です。
A. 問題の仮定では常に存在するとされていますが、存在しない場合はブロック選定が最後まで進み、さらにブロック内探索でも見つからないケースが出ます。期待値や停止条件が変わるため別途解析が必要です。
Q. 二分探索と比べてどうか?
A. 二分探索は比較回数が で、一般にはこちらの分割+線形探索(期待 )より高速です。ただしデータ配置やアクセスコストによってはブロック分割法が実用的な場合もあります(例えばブロック単位での高速なスキップが可能な場合など)。
A. 二分探索は比較回数が で、一般にはこちらの分割+線形探索(期待 )より高速です。ただしデータ配置やアクセスコストによってはブロック分割法が実用的な場合もあります(例えばブロック単位での高速なスキップが可能な場合など)。
関連キーワード: ブロック分割探索、分割探索、線形探索、平均比較回数、平方根分割、期待値計算、探索アルゴリズム

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

