応用情報技術者 2019年 秋期 午前2 問07
問題文
自然数をキーとするデータを、ハッシュ表を用いて管理する。キーのハッシュ関数を
とすると、任意のキーとが衝突する条件はどれか。ここで、はハッシュ表の大きさであり、はをで割った余りを表す。
選択肢
ア:a+bがnの倍数
イ:a-bがnの倍数(正解)
ウ:nがa+bの倍数
エ:nがa-bの倍数
ハッシュ関数の衝突条件【午前2 解説】
要点まとめ
- 結論:キーとが衝突するのは、がハッシュ表の大きさの倍数のときです。
- 根拠:ハッシュ関数は、をで割った余りを返すため、余りが同じなら衝突します。
- 差がつくポイント:余りの性質を理解し、単に和ではなく差で考えることが重要です。
正解の理由
ハッシュ関数は、をで割った余りを返します。
したがって、となる条件は、、すなわちです。
これは、がの倍数であることを意味し、選択肢の中では「イ: a-bがnの倍数」が正解です。
したがって、となる条件は、、すなわちです。
これは、がの倍数であることを意味し、選択肢の中では「イ: a-bがnの倍数」が正解です。
よくある誤解
「和がの倍数なら衝突する」と誤解しやすいですが、ハッシュ関数の余りは差に注目する必要があります。
また、がやの倍数という表現は誤りで、がの倍数であることが正しい条件です。
また、がやの倍数という表現は誤りで、がの倍数であることが正しい条件です。
解法ステップ
- ハッシュ関数の定義を確認する。
- 衝突条件はであることを理解する。
- を式変形し、と導く。
- これががの倍数であることを意味する。
- 選択肢の中から該当するものを選ぶ。
選択肢別の誤答解説
- ア: a+bがnの倍数
→ 和がの倍数であっても余りが一致するとは限らず、衝突条件ではない。 - イ: a-bがnの倍数
→ 正解。余りが等しい条件を満たす。 - ウ: nがa+bの倍数
→ がの倍数という意味で、衝突条件とは無関係。 - エ: nがa-bの倍数
→ がの倍数という表現は誤り。がの倍数が正しい。
補足コラム
ハッシュ関数の衝突は、異なるキーが同じハッシュ値を持つ現象です。
のような単純な関数では、キーの差がの倍数であれば必ず衝突します。
この性質を理解することで、ハッシュ表のサイズの選び方や衝突回避策の設計に役立ちます。
のような単純な関数では、キーの差がの倍数であれば必ず衝突します。
この性質を理解することで、ハッシュ表のサイズの選び方や衝突回避策の設計に役立ちます。
FAQ
Q: なぜ和ではなく差を見るのですか?
A: ハッシュ値は余りなので、同じ余りになるのは差がの倍数のときです。和は関係ありません。
A: ハッシュ値は余りなので、同じ余りになるのは差がの倍数のときです。和は関係ありません。
Q: 衝突を避けるにはどうすればいいですか?
A: を素数にするなど、キーの分布に合わせてハッシュ表のサイズを工夫すると衝突が減ります。
A: を素数にするなど、キーの分布に合わせてハッシュ表のサイズを工夫すると衝突が減ります。
関連キーワード: ハッシュ関数、衝突条件、モジュロ演算、ハッシュ表、データ構造

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

