平成21年度 春期 午前 問8
アルゴリズム
線形探索に関する問題
相異なる n 個のデータが昇順に整列された表がある。この表を m 個のデータごとのブロックに分割し,各ブロックの最後尾のデータだけを線形探索することによって,目的のデータの存在するブロックを探し出す。次に,当該ブロック内を線形探索して目的のデータを探し出す。このときの平均比較回数を表す式はどれか。ここで,m は十分大きく,n は m の倍数とし,目的のデータは必ず表の中に存在するものとする。
- アm+n/m
- イm/2+n/(2m)
- ウn/m
- エn/(2m)
答えと解説を見る
✓ これが正解イm/2+n/(2m)
解説
外側と内側の平均比較回数を足し合わせた形です。
この方法は探索を二段構えにしています。まずブロックの最後尾だけを順に線形探索し、目当てが入っているブロックを特定します。次に、そのブロックの中を線形探索して目当てを探し当てます。線形探索の平均比較回数は、探す対象が範囲の中にあるとき、範囲の要素数の半分になります。ブロックの数はデータ数を 1 ブロックの大きさで割った値なので、最後尾を探すときの平均比較回数はその半分、すなわち n を 2m で割った値です。目当てのブロックが見つかった後の探索は、1 ブロックに含まれる要素数を半分にした値、すなわち m を 2 で割った値で表せます。二つは順番に行う独立の作業なので、平均比較回数はそのまま足し合わせる形になります。したがって、m の半分と、n を 2m で割った値の和が、全体の平均比較回数を表す式です。
ほかの選択肢はなぜ違うのか
- アm+n/m:m と n÷m の和で表しています。線形探索の平均比較回数は範囲の要素数の半分になる関係を使っておらず、範囲そのものを足したときに現れる最悪値に近い姿になっています。
- ウn/m:n÷m だけを式に置いています。これはブロックの数を表す値であり、二段の探索のうち片方の平均比較回数にすら達していません。
- エn/(2m):n÷(2m) だけを式に置いています。ブロックを見つけるまでの平均比較回数だけを取り出した式で、ブロックの中で目当てを探し当てる分の平均比較回数が抜けています。
出典:平成21年度 春期 応用情報技術者試験 午前 問8
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)