応用情報技術者試験 応用情報技術者試験 令和4年度秋期 午前5: 自然数をキーとするデータを,ハッシュ表を用いて管理する。キー x のハッシュ関数 h(x) を h(x) = x mod n とすると,任意のキー a と b

応用情報技術者試験 令和4年度秋期 午前
Q 55 / 80
自然数をキーとするデータを,を用いて管理する。キー x の h(x) を h(x) = x mod n とすると,任意のキー a と b が衝突する条件はどれか。ここで,n はハッシュ表の大きさであり,x mod n は x を n で割った余りを表す。
この問の正解率:43.23%(1,469件)

問題本文

自然数をキーとするデータを,ハッシュ表を用いて管理する。キー x のハッシュ関数 h(x) を h(x) = x mod n とすると,任意のキー a と b が衝突する条件はどれか。ここで,n はハッシュ表の大きさであり,x mod n は x を n で割った余りを表す。

選択肢

  • .a+b が n の倍数
  • .a-b が n の倍数
  • .n が a+b の倍数
  • .n が a-b の倍数

正解

. a-b が n の倍数

解説

ハッシュ関数 h(x)=x mod n で2つのキーが同じ格納位置になる(シノニム、衝突)条件を問う問題。衝突は a mod n = b mod n、つまり a と b を n で割った余りが等しいときに起こる。余りが等しいことは差 a−b がちょうど n で割り切れること、すなわち a−b が n の倍数であることと同値なので、正解はイである。

選択肢ごとの解説

  • .a+b が n の倍数なのは2つの余りが互いに補い合って和が0になる関係であり、余りの一致(衝突)条件ではないので誤り。
  • .正しい。a−b が n の倍数のとき a mod n と b mod n が一致し、同じハッシュ値になって衝突する。
  • .「n が a+b の倍数」は割る数 n の側が倍数という逆向きの関係で、余りの一致とは無関係なので誤り。
  • .「n が a−b の倍数」は倍数の向きが逆である。正しくは a−b の方が n の倍数なので誤り。

応用情報技術者試験 令和4年度秋期 午前過去問一覧へ戻る・問5