応用情報技術者試験ナビ ロゴ 応用情報技術者試験ナビ
次回試験日:2025年4月20日(あと1日)

応用情報技術者試験 令和5年春 午前問6 解説付き過去問

問題

従業員番号と氏名の対がn件格納されている表に線形探索法を用いて、与えられた従業員番号から氏名を検索する。 この処理における平均比較回数を求める式はどれか。
ここで、検索する従業員番号はランダムに出現し、探索は常に表の先頭から行う。 また、与えられた従業員番号がこの表に存在しない確率をaとする。

正解

解説

この問題は、線形探索法(リニアサーチ)において、検索対象が存在する場合と存在しない場合の両方を考慮して、平均比較回数を求めるものです。以下の手順で解説します。

  1. 線形探索法の特徴
    線形探索法は、データの先頭から順番に1件ずつ比較を行っていき、目的のデータが見つかるか、最後まで見つからなければ探索を終了する方式です。
    このアルゴリズムでは、データが見つかる位置によって必要な比較回数が変動します。

  2. データが見つかる場合の平均比較回数
    目的のデータが n 件の中に存在する場合、先頭から末尾まで一様な確率で出現すると仮定すると、平均的には n+12 回の比較で見つかります。
  3. データが見つからない場合の比較回数
    目的のデータがリスト内に存在しない場合は、最後のデータまで全て比較して確認する必要があるため、n 回の比較が常に必要となります。

  4. 全体の平均比較回数の求め方
    検索対象が存在しない確率を a とすると、存在する確率は (1-a) になります。
    したがって、平均比較回数は以下の2つの項の合計で表されます。

    • データが存在する場合:n+12 × (1-a)
    • データが存在しない場合:n × a

    これらを加えることで、平均比較回数は次の式になります。

    (n+1)(1-a)2 + na

したがって、この探索処理における平均比較回数は、(n+1)(1-a)2 + na です。