令和6年度 秋期 プロジェクトマネージャ試験 データベーススペシャリスト試験 エンベデッドシステムスペシャリスト試験 システム監査技術者試験 情報処理安全確保支援士試験 午前 I 問題 【共通】 問3

テクノロジアルゴリズム

この問題は2024(R6)秋 高度試験共通 午前Iに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

自然数をキーとするデータを,ハッシュ表を用いて管理する。キー xx のハッシュ関数 h(x)h(x)

h(x)=xmodnh(x) = x \bmod n

とすると,任意のキー aabb が衝突する条件はどれか。ここで,nn はハッシュ表の大きさであり,xmodnx \bmod nxxnn で割った余りを表す。

解答・解説を読む

正解: 選択肢

ハッシュ表において、衝突(コリジョン)とは、異なるキーが同じハッシュ値を持つことを指します。

今回のハッシュ関数は h(x)=xmodnh(x) = x \bmod n です。
キー aabb が衝突する条件は、h(a)=h(b)h(a) = h(b) となること、すなわち、amodn=bmodna \bmod n = b \bmod n となることです。
これは、aann で割った余りと、bbnn で割った余りが等しいことを意味します。

余りが等しい2つの数の差は、nn で割り切れる、つまり nn の倍数 になります。
したがって、aba - bnn の倍数となる場合が、衝突の条件となります。

各選択肢の解説

  • : a+ba+bnn の倍数
    amodn+bmodn=na \bmod n + b \bmod n = n などとなるケースであり、amodn=bmodna \bmod n = b \bmod n とは限りません。例えば n=5,a=2,b=3n=5, a=2, b=3 のとき、a+b=5a+b=5(5の倍数)ですが、h(a)=2,h(b)=3h(a)=2, h(b)=3 であり衝突しません。
  • : aba-bnn の倍数
    正解です。差が nn の倍数であれば、余りが等しくなり衝突します。例えば n=5,a=8,b=3n=5, a=8, b=3 のとき、ab=5a-b=5(5の倍数)で、h(8)=3,h(3)=3h(8)=3, h(3)=3 となり衝突します。
  • : nna+ba+b の倍数
    a+ba+bnn の約数であることを意味します。余りが一致する条件とは関係ありません。例えば n=6,a=1,b=2n=6, a=1, b=2 のとき、a+b=3a+b=366 の約数(nna+ba+b の倍数)ですが、h(1)=1,h(2)=2h(1)=1, h(2)=2 であり衝突しません。
  • : nnaba-b の倍数
    aba-bnn の約数であることを意味します。例えば n=6,a=5,b=2n=6, a=5, b=2 のとき、ab=3a-b=366 の約数(nnaba-b の倍数)ですが、h(5)=5,h(2)=2h(5)=5, h(2)=2 であり衝突しません。