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

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

