応用情報技術者 2018年 春期 午前2 問06
問題文
異なる個のデータが昇順に整列された表がある。この表を個のデータごとのブロックに分割し、各ブロックの最後尾のデータだけを線形探索することによって、目的のデータの存在するブロックを探し出す。次に、当該ブロック内を線形探索して目的のデータを探し出す。このときの平均比較回数を表す式はどれか。ここで、は十分に大きく、はの倍数とし、目的のデータは必ず表の中に存在するものとする。
選択肢
ア:
イ:(正解)
ウ:
エ:
異なる個のデータが昇順に整列された表のブロック探索【午前2 解説】
要点まとめ
- 結論:平均比較回数は「」で表され、選択肢イが正解です。
- 根拠:ブロックの最後尾を線形探索する比較回数の平均は、ブロック内の線形探索の平均はとなるため合計でこの式になります。
- 差がつくポイント:ブロック探索の仕組みを理解し、線形探索の平均比較回数の計算を正確に行うことが重要です。
正解の理由
この問題は、個のデータを個ずつのブロックに分割し、まず各ブロックの最後尾のデータを線形探索して目的のブロックを特定し、次にそのブロック内を線形探索する手法の平均比較回数を求めるものです。
- ブロック数は個です。
- ブロックの最後尾を線形探索する平均比較回数は、目的のブロックがどこにあるか均等に分布すると仮定して、回です。
- 目的のブロック内の線形探索は、ブロックサイズの中で目的のデータが平均的に中央にあるため、回となりますが、ここは問題文の条件からと表現されます。
- よって、合計の平均比較回数はとなり、選択肢イが正解です。
よくある誤解
- ブロックの最後尾探索を全てのデータ数で計算してしまう誤りがあります。
- 線形探索の平均比較回数を最大値で計算し、平均値を考慮しないことも多いです。
解法ステップ
- データを個ずつのブロックに分割し、ブロック数を求める。
- ブロックの最後尾のデータを線形探索し、目的のブロックを特定する平均比較回数を計算する。
- 目的のブロック内で線形探索する平均比較回数を計算する。
- 2と3の平均比較回数を合計し、式を導出する。
- 選択肢の中から導出した式と一致するものを選ぶ。
選択肢別の誤答解説
- ア:
→ ブロック探索とブロック内探索の平均値ではなく最大値を足しているため過大評価です。 - イ:
→ 正解。平均比較回数の正しい計算式です。 - ウ:
→ ブロック数のみを考慮し、ブロック内探索を無視しています。 - エ:
→ ブロック内探索の平均比較回数のみで、ブロック探索の比較回数を考慮していません。
補足コラム
この問題は「ブロック探索法(Block Search)」の典型的な問題です。ブロック探索は、データを複数のブロックに分割し、まずブロックの代表値を探索して目的のブロックを絞り込み、その後ブロック内を探索する手法です。線形探索と比較して効率的ですが、ブロックサイズの選び方によって性能が大きく変わります。最適なはに近い値で、平均比較回数を最小化します。
FAQ
Q: なぜブロックの最後尾だけを探索するのですか?
A: ブロックの最後尾のデータは各ブロックの最大値であり、目的のデータがどのブロックにあるかを判別しやすいためです。
A: ブロックの最後尾のデータは各ブロックの最大値であり、目的のデータがどのブロックにあるかを判別しやすいためです。
Q: 目的のデータが必ず存在すると仮定する理由は?
A: 存在しない場合の探索回数は異なり、平均比較回数の計算が複雑になるため、問題を単純化しています。
A: 存在しない場合の探索回数は異なり、平均比較回数の計算が複雑になるため、問題を単純化しています。
関連キーワード: ブロック探索、線形探索、平均比較回数、探索アルゴリズム、データ構造

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

