問題
ハッシュ法でハッシュ値が衝突した場合の対処法として適切なものはどれか。
選択肢
- 1元のデータを削除する
- 2チェイン法やオープンアドレス法で衝突を解決する
- 3ハッシュ値を半分にする
- 4衝突した場合は検索できないと判定する
正解
2. チェイン法やオープンアドレス法で衝突を解決する
詳しい解説を見る解説を閉じる
解説
ハッシュ法では、異なるキーから同じハッシュ値が算出される「衝突(シノニムの発生)」が起こり得る。その対処法として、同一ハッシュ値のデータを連結リストでつないで管理するチェイン法と、一定の規則で別の空き位置を探して格納するオープンアドレス法が用いられる。よって「チェイン法やオープンアドレス法で衝突を解決する」が正解である。「元のデータを削除する」のように元データを削除すれば情報が失われ、「衝突した場合は検索できないと判定する」のように検索不能と判定するのでは仕組みとして成立しない。ハッシュ値を半分にする操作は取り得る値の範囲を狭め、衝突をむしろ増やす。衝突はテーブルの使用率が高いほど発生しやすくなる点、チェイン法とオープンアドレス法の名称と仕組みの対応は科目Aで繰り返し問われる頻出事項である。
一問一答
科目A 180問+科目B 60問