当サイトではPRを含む商品リンクを使用しております。

基本情報技術者試験の線状探索過去問の解き方

日記

基本情報技術者試験が嫌いなりんぼくです。

線状探索法に関する過去問で苦しんだので、誰でも解けるように解説を放流します。

解き方を考えるにあたっての参考書

基本情報技術者試験の線状探索過去問の解き方

1,2,3,4,5,6,7,8,9,10,11

のように並んだデータ構造があるとして、頭から総当たりで検索していくのが線状探索法。

1回目で目的のデータが見つかることもあれば、11回目で見つかることもあります。

平均参照回数を求める問題が出ます。

最遅と最速の平均を取ると求められます。

11 + 1 / 2 = 6

データが大量の場合は、+1 を無視する場合もあります。

参照回数の計算式 x + 1 / 2

x個並んだデータからデータを見つける時、最速が1回、最遅がn回だからその平均を取ると

x回+1回 / 2(平均を取る対象が最速と最遅の2つの値だから2)

過去問の解き方を放流します

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

午前免除試験 R4-1月 問9 より

この問題は、平均参照数を2回求める必要があります。

選択肢は

ア m + n /m

イ m/2 + n/2m

ウ n/m

エ n /2m

平均参照数1回目

この表をm個のデータごとのブロックに分割し,各ブロックの最後尾のデータだけを線形探索することによって,目的のデータの存在するブロックを探し出す。

  • 全体として、n個のデータがあるデータ構造がある。(ソートされてる)
  • ソートされており、ブロック1個につき参照は1回。(ソートされていて、ブロックの最後尾だけを見るから)
  • n個のデータを複数個のブロックに分割している(ブロックの個数は?)
  • それぞれのブロックにはm個ずつデータが入っている(つまりブロックの個数はn/m)
  • まずは、「n/m個からなるデータを線状探索した場合の平均参照数を求める」
  • 平均参照数を求める公式に当てはめると ((n/m) + 1 )/2 となる。

平均参照数2回目

次に,当該ブロック内を線形探索して目的のデータを探し出す。

  • 1ブロックには、m個のデータが入っている
  • 1回目の参照で、参照するべきブロックが1個に絞られている
  • 平均参照回数を求める公式に当てはめると(m + 1) / 2となる。

このときの平均比較回数を表す式 = 参照1回目+参照2回目

(((n/m) + 1 )/2) + ((m + 1) / 2)

式を整える

問題文に「十分に大きい」とあるので、最終的には+1を無視して答えを探します。

解いてる途中は無視してません。

よって正解の選択肢は

イ m/2 + n/2m

コメント

タイトルとURLをコピーしました