応用情報技術者 2012年 春期 午前2 問09
問題文
相異なるn個のデータが昇順に整列された表がある。この表を 個のデータごとのブロックに分割し、各ブロックの最後尾のデータだけを線形探索することによって、目的のデータの存在するブロックを探し出す。次に、当該ブロック内を線形探索して目的のデータを探し出す。このときの平均比較回数を表す式はどれか。ここで、は十分に大きく、はの倍数とし、目的のデータは必ず表の中に存在するものとする。
選択肢
ア:
イ:(正解)
ウ:
エ:
🔒 解説は解答すると表示されます
ブロック探索の平均比較回数【午前2解説】
正解の理由
表を 個ずつのブロックに分けるとブロック数は です。まず各ブロックの最後尾だけを順に比較して目的のブロックを特定し、その後当該ブロック内を線形探索します。
ブロック探索の期待比較回数は各ブロックが等確率で選ばれることから平均で 、当該ブロック内の追加比較は目的データがブロック末尾でない場合に限られ、その期待値は です。これらを合計すると
ブロック探索の期待比較回数は各ブロックが等確率で選ばれることから平均で 、当該ブロック内の追加比較は目的データがブロック末尾でない場合に限られ、その期待値は です。これらを合計すると
となります。したがって選択肢の中では イ が正しい式を表しています。
解法ステップ
- ブロック数を とおく。
- ブロックの最後尾同士を線形に比較して目的ブロックを見つける際、目的ブロックが 〜 のいずれかで均等に存在するので期待比較回数は
- 当該ブロック内での線形探索は末尾が既に比較されている点に注意。ブロック内の位置が末尾(確率 )なら追加比較は 、それ以外なら位置 の比較回数は 。よって期待値は
- 合計期待比較回数は 。
選択肢別の誤答解説
- ア:
誤り。ブロック探索とブロック内探索の「平均」を取っていない(最悪の場合の和に近い)。平均比較回数はそれぞれの期待値の和であり、 や係数の差が残るため異なる。 - イ:
正解。上の導出どおり、ブロック探索 とブロック内 の和で になる。 - ウ:
誤り。これはブロック数 のみを数えた値で、ブロック内探索の平均が考慮されていない。 - エ:
誤り。ブロック内探索のみ(平均的な位置 を無視)またはブロック探索の一部しか反映しておらず、合計期待値としては不十分。
よくある誤解
- ブロック内探索の期待値を とする誤り
- 末尾要素は既にブロック探索で比較済みで、該当が末尾なら追加比較は不要になるため、内部探索の期待値は が正しい。
- ブロック探索を最悪ケース として扱い平均化を忘れる
- 各ブロックに目的データが均等に存在する仮定があるため期待は となる。
- と の関係を混同する
- であることを明確にして式変形する。
補足コラム
- 最適なブロックサイズを連続変数として求めると期待比較回数 の に関する最小化は微分で行えます。 より が最適(連続解)。このときの期待値は約 。つまり二段探索は適切に分割すると平方根オーダーの平均比較回数を達成します。
- 実装上の注意:ブロックを固定長配列で持つとメモリ局所性が良く高速になることが多い。二分探索とのトレードオフを考慮すること。
FAQ
Q1: なぜブロック探索の期待比較回数が になるのですか?
A1: 目的データが各ブロックに同じ確率 で存在すると仮定すると、見つかるまでに比較する最後尾の個数は のどれかで、それらの平均が になるためです。
A1: 目的データが各ブロックに同じ確率 で存在すると仮定すると、見つかるまでに比較する最後尾の個数は のどれかで、それらの平均が になるためです。
Q2: ブロック内探索の期待が の直感は?
A2: ブロック内の末尾は既に最後尾比較で判定済みで、末尾が目的値なら追加比較は不要です。残りの 個の位置について均等分布なら平均位置は となります。
A2: ブロック内の末尾は既に最後尾比較で判定済みで、末尾が目的値なら追加比較は不要です。残りの 個の位置について均等分布なら平均位置は となります。
Q3: 目的データが必ず表中にない場合は?
A3: 存在しない場合は探索が全ブロックの最後尾比較 回に加え、各ブロック内探索が最悪で 回になるような違う期待値計算が必要です(本設問の前提とは異なります)。
A3: 存在しない場合は探索が全ブロックの最後尾比較 回に加え、各ブロック内探索が最悪で 回になるような違う期待値計算が必要です(本設問の前提とは異なります)。
関連キーワード: 分割探索法、線形探索、期待値、アルゴリズム解析、最適ブロックサイズ

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

