戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2015年 春期 午前205


問題文

自然数をキーとするデータを、ハッシュ表を用いて管理する。キーのハッシュ関数を    とすると、キーが衝突する条件はどれか。ここで、はハッシュ表の大きさであり、で割った余りを表す。

選択肢

a+bがnの倍数
a-bがnの倍数(正解)
nがa+bの倍数
nがa-bの倍数

自然数のハッシュ関数における衝突条件【午前2 解説】

要点まとめ

  • 結論:キーが衝突するのは、がハッシュ表の大きさの倍数である場合です。
  • 根拠:ハッシュ関数は、で割った余りを返すため、余りが同じなら衝突します。
  • 差がつくポイント:余りの性質を理解し、単に和がの倍数か差がの倍数かを正確に区別できるかが重要です。

正解の理由

ハッシュ関数は、で割った余りを返します。
キーが衝突するとは、であることを意味します。
つまり、となり、これを変形すると、すなわちの倍数であることが条件です。
したがって、正解はイ: a-bがnの倍数です。

よくある誤解

「和がの倍数なら衝突する」と誤解しやすいですが、ハッシュ関数は余りを比較するため、差がの倍数であることが正しい条件です。

解法ステップ

  1. ハッシュ関数の定義を確認する:
  2. 衝突の条件はであることを理解する
  3. を式変形し、を導く
  4. これよりの倍数であることを確認する
  5. 選択肢の中から条件に合致するものを選ぶ

選択肢別の誤答解説

  • ア: a+bがnの倍数
    → 和がの倍数であっても余りが同じとは限らず、衝突条件ではない。
  • イ: a-bがnの倍数
    → 正解。余りが等しいことの定義に合致する。
  • ウ: nがa+bの倍数
    の倍数であることは衝突条件と無関係。
  • エ: nがa-bの倍数
    の倍数という表現は意味が逆で、衝突条件はの倍数であること。

補足コラム

ハッシュ関数の衝突は、異なるキーが同じハッシュ値を持つ現象です。
この問題のように剰余演算を用いるハッシュ関数は単純で高速ですが、衝突が起きやすいため、衝突解決法(チェイン法や開番地法)も重要な知識です。

FAQ

Q: なぜ和ではなく差が条件になるのですか?
A: 剰余の性質上、と同値であり、和ではなく差を使うためです。
Q: 衝突が起きると何が問題ですか?
A: 衝突が多いと検索や挿入の効率が落ちるため、適切なハッシュ関数設計や衝突解決法が必要です。

関連キーワード: ハッシュ関数、衝突条件、剰余演算、ハッシュ表、データ構造
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について