問6 ブロックに分けた探索の比較回数

応用情報​技術者試験 令和7年度 秋期 午前、全80問のうちの問6。

出典:令和7年度 秋期 応用情報技術者試験 午前 問6(分数は「/」を使って 1 行で書いた)

異なる n 個のデータが昇順に整列された表がある。この表を m 個のデータごとのブロックに分割し,各ブロックの最後尾のデータだけを線形探索することによって,目的のデータの存在するブロックを探し出す。次に,当該ブロック内を線形探索して目的のデータを探し出す。このときの平均比較回数を表す式はどれか。ここで,m は十分に大きく,n は m の倍数とし,目的のデータは必ず表の中に存在するものとする。

  1. アm + n/m
  2. イm/2 + n/(2m)
  3. ウn/m
  4. エn/(2m)
答えと解説を開く

正解はイです。

n 個を m 個ずつに分けると、ブロックは n/m 個できます。1 段目は、各ブロックの最後尾だけを前から順に比べて、目的のデータがあるブロックを探します。線形探索の平均の比較回数は、正確には (探す数 + 1) ÷ 2 回で、およそ探す数の半分です。だからブロック探しはおよそ n/(2m) 回です。2 段目は、見つけたブロックの m 個の中を線形探索するので、およそ m/2 回です。合わせると m/2 + n/(2m) になり、イが正解です。m が十分に大きいので、半分にするときの 1 の差は無視します。

ほかの選択肢が違う理由

  • アブロックの中を最後まで見る m 回と、ブロック探しで全ブロックを見る n/m 回を足した、最悪に近い回数です。平均ではそれぞれ半分になります。
  • ウブロックを探す 1 段目だけを、しかも全ブロック分数えた回数です。ブロックの中を探す回数が入っていません。
  • エブロックを探す 1 段目の平均の回数だけです。ブロックの中を探す m/2 回が抜けています。

仕組み

線形探索は、前から 1 つずつ比べる探し方です。目的の物がどこにでも同じ確率でありうるなら、平均で全体の半分を見たところで見つかります。

表を区切って 2 段で探すと、全体を 1 段で探すより比較を大きく減らせます。辞書の見出しの「つめ」でページの範囲を決めてから、そのページの中を探すのと同じ考え方です。

この問に出る言葉