アルゴリズムとプログラミング
ハッシュテーブルのオープンアドレス法における衝突解決の説明として正しいものはどれか。
ア.衝突が発生したとき、データをファイルに書き出して後で再挿入する。
イ.衝突が発生しないようにハッシュ関数を動的に変更する方式である。
ウ.衝突が発生したとき、そのキーをリンクリストに追加することで同じバケットに複数のデータを格納する。
エ.衝突が発生したとき、テーブル内の別の空きスロットを探してデータを格納する。正解
解説
オープンアドレス法は「駐車場が満車なら近くの空きスペースを探す」方式。チェイン法(連結リスト)と対比して理解するのが鉄則です。
なぜ エ が正解か
オープンアドレス法では、ハッシュ衝突が起きたとき同じテーブルの配列の中で別の空きスロットを探します(プロービング)。代表的な探索方法に、 ・線形探索法(Linear Probing): 1つずつ隣を調べる ・二次探索法(Quadratic Probing): 1²,2²,3²...スロット先を調べる ・ダブルハッシュ法: 別のハッシュ関数で次の位置を決める があります。テーブルが満杯になるとスロットがなくなるためロードファクター(充填率)の管理が重要です。
出典: AI生成問題(学習用)