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

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

h(x)=x mod nh(x) = x \bmod n

とすると,任意のキー aa と bb が衝突する条件はどれか。ここで,nn はハッシュ表の大きさであり,x mod nx \bmod n は xx を nn で割った余りを表す。

解答・解説

正解: イ. a−ba-b が nn の倍数

ハッシュ表において、異なるキーが同じハッシュ値を持つことを衝突(シノニム)と呼びます。与えられたハッシュ関数 h(x)=x mod nh(x) = x \bmod n において、キー aa と bb が衝突する条件は、h(a)=h(b)h(a) = h(b) が成り立つことです。式で表すと、以下のようになります。 a mod n=b mod na \bmod n = b \bmod n これは、aa を nn で割った余りと、bb を nn で割った余りが等しいことを意味します。このとき、aa と bb の差をとると、余りの部分が相殺されるため、a−ba - b は nn で割り切れる、すなわち a−ba - b が nn の倍数 となります。合同式で表すと a≡b(modn)a \equiv b \pmod n となります。

各選択肢の解説

  • ア (a+ba+b が nn の倍数): 誤り。例えば n=10,a=3,b=7n=10, a=3, b=7 の場合、a+b=10a+b=10 で 1010 の倍数ですが、a mod 10=3a \bmod 10 = 3、b mod 10=7b \bmod 10 = 7 となり衝突しません。
  • イ (a−ba-b が nn の倍数): 正解。衝突する正しい条件です。
  • ウ (nn が a+ba+b の倍数): 誤り。例えば n=10,a=2,b=3n=10, a=2, b=3 の場合、a+b=5a+b=5 で nn はその倍数ですが、a mod 10=2a \bmod 10 = 2、b mod 10=3b \bmod 10 = 3 となり衝突しません。
  • エ (nn が a−ba-b の倍数): 誤り。例えば n=10,a=7,b=2n=10, a=7, b=2 の場合、a−b=5a-b=5 で nn はその倍数ですが、a mod 10=7a \bmod 10 = 7、b mod 10=2b \bmod 10 = 2 となり衝突しません。

Spineチーム