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

テクノロジ系

ア a+b が n の倍数

なぜ違う: 和ではなく差が条件。a+b が n の倍数でも余りが一致するとは限らない。

イ a−b が n の倍数
ウ n が a+b の倍数

なぜ違う: 倍数の向きが逆。衝突条件は a−b 側が n の倍数であること。

エ n が a−b の倍数

なぜ違う: 倍数の向きが逆。a−b が n の倍数(n が a−b を割り切るのではない)が正しい。

正解: イ

要点: 衝突=h(a)=h(b)=(a mod n = b mod n)。これは a−b が n の倍数のとき。

衝突とは h(a)=h(b),すなわち a mod n = b mod n が成り立つこと。これは a と b を n で割った余りが等しい,つまり差 a−b が n で割り切れる(a−b が n の倍数)ことと同値である。

この問題に出てくる用語

関連キーワード: ハッシュ法・衝突・剰余・計算

同じ回の前後の問題

テクノロジ系の他の問題

アプリで弱点分析つきの演習ができます

App Store

応用情報技術者の学習アプリ(応用情報トレ)

出典:令和6年度 秋期 応用情報技術者試験 午前 問6