応用情報技術者 2022年 秋期 午前2 問05
問題文
自然数をキーとするデータを、ハッシュ表を用いて管理する。キーのハッシュ関数を
とすると、キーとが衝突する条件はどれか。ここで、はハッシュ表の大きさであり、はをで割った余りを表す。
選択肢
ア: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: 通常の剰余ハッシュ関数ではありません。和が関係するのは別のハッシュ関数設計時です。
関連キーワード: ハッシュ関数、衝突条件、剰余演算、ハッシュテーブル、モジュロ演算

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

