応用情報技術者 2011年 秋期 午前2 問05
問題文
自然数をキーとするデータを、ハッシュ表を用いて管理する。キーのハッシュ関数を
とすると、キーとが衝突する条件はどれか。ここで、はハッシュ表の大きさであり、はをで割った余りを表す。
選択肢
ア:a+bがnの倍数
イ:a-bがnの倍数(正解)
ウ:nがa+bの倍数
エ:nがa-bの倍数
ハッシュ関数の衝突条件【午前2 解説】
要点まとめ
- 結論:キーとが衝突するのは、がハッシュ表の大きさの倍数のときです。
- 根拠:ハッシュ関数は、をで割った余りを返すため、余りが同じなら衝突します。
- 差がつくポイント:余りの定義と「差がの倍数であること」が衝突の本質である点を理解できるかが重要です。
正解の理由
ハッシュ関数は、をで割った余りを返します。
キーとが衝突するとは、、すなわち
が成り立つことです。これを変形すると、
つまり、がの倍数であることが衝突の条件です。
したがって、選択肢の中で「がの倍数」と表現しているイが正解です。
キーとが衝突するとは、、すなわち
が成り立つことです。これを変形すると、
つまり、がの倍数であることが衝突の条件です。
したがって、選択肢の中で「がの倍数」と表現しているイが正解です。
よくある誤解
「和がの倍数なら衝突する」と誤解しやすいですが、ハッシュ関数は余りを比較するため、差がの倍数であることが正しい条件です。
解法ステップ
- ハッシュ関数の定義を確認する:
- 衝突の意味を理解する:
- 余りの等しさを式で表す:
- これを差の形に変形:
- 結論として、がの倍数であることを導く
選択肢別の誤答解説
- ア: 「がの倍数」→和の倍数は余りの等しさとは無関係です。
- イ: 「がの倍数」→正解。余りが等しい条件そのものです。
- ウ: 「がの倍数」→ハッシュ表の大きさがキーの和の倍数であることは衝突条件ではありません。
- エ: 「がの倍数」→逆の関係であり、がの倍数である必要があります。
補足コラム
ハッシュ関数の衝突は避けられない問題であり、衝突解消法(チェイン法や開番地法)を用いて効率的に管理します。
また、のは通常、素数を選ぶことで衝突を減らす工夫がされています。
また、のは通常、素数を選ぶことで衝突を減らす工夫がされています。
FAQ
Q: なぜ「差がの倍数」でなければならないのですか?
A: 余りが等しいとは、2つの数の差がで割り切れることを意味するためです。
A: 余りが等しいとは、2つの数の差がで割り切れることを意味するためです。
Q: 「和がの倍数」ではなぜダメですか?
A: 和の倍数は余りの等しさと直接関係がなく、衝突条件としては誤りです。
A: 和の倍数は余りの等しさと直接関係がなく、衝突条件としては誤りです。
関連キーワード: ハッシュ関数、衝突条件、余り、モジュロ演算、データ構造

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

