ハッシュ法とは?はっしゅほう
ハッシュ法とは、キーの値をハッシュ関数へ入れて格納位置を直接計算する方式。比較を繰り返す線形探索や2分探索と違い、衝突が起きなければデータ件数がいくら増えても1回の計算で目的の場所に届く。異なるキーが同じ位置になる衝突(シノニム)への備えが、設計上の要点になる。
最終更新:2026-10-07
この語が出る過去問を解く →背景
探索の高速化は、比較の回数を減らす工夫の歴史でもある。2分探索は整列を前提に回数を対数まで落とすが、それでも件数が増えれば回数は増える。位置そのものを計算で決めてしまえば件数と無関係にできる——代わりに、有限の格納場所へ無数のキーを写すので衝突が必ず起きる。この衝突をどう捌くかで方式が分かれる。
具体例
h(x)=x mod 13 というハッシュ関数なら、キーの差が13の倍数になる組(3と16、5と31など)が同じ位置に入る。対処はチェイン法(同じ位置の要素をリストでつなぐ)とオープンアドレス法(空いている別の位置を順に探す)の2通り。
試験での引っ掛け
衝突条件を問う問題では、キーそのものの値ではなく「2つのキーの差が除数の倍数になるかどうか」で判断する。また平均で一定時間というのは衝突が少ない前提の話で、偏ったハッシュ関数では性能が線形探索並みに落ちる。
関連用語
出た過去問
出典:令和4年度 秋期 高度試験 午前Ⅰ 問3(IPA)
自然数をキーとするデータを、ハッシュ表を用いて管理する。キーxのハッシュ関数h(x)を h(x)=x mod n とすると、任意のキーaとbが衝突する条件はどれ…
正解:a-bがnの倍数
要点:h(x)=x mod n の衝突条件は a−b が n の倍数
ハッシュ関数がh(x)=x mod nのとき、キーaとbが衝突するのはa mod n=b mod n、すなわちaとbをnで割った余りが等しいときである。これはa−bがnで割り切れること、つまりa−bがnの倍数であることと同値である。
出典:令和5年度 春期 高度試験 午前Ⅰ 問6(IPA)
ハッシュ表の理論的な探索時間を示すグラフはどれか。ここで、複数のデータが同じハッシュ値になることはないものとする。
正解:表の中のデータの個数によらず、データ1個当たりの探索時間が一定(横一直線)のグラフ
要点:衝突のないハッシュ表の探索はデータ数によらずO(1)
衝突が起こらない理想的なハッシュ表では、キーからハッシュ関数で格納位置を直接計算できるため、格納されているデータの個数に関係なく一定回数のアクセスで目的のデータに到達できる。すなわち計算量はO(1)であり、グラフは横軸に対して水平な直線になる。
出典:令和6年度 秋期 高度試験 午前Ⅰ 問3(IPA)
自然数をキーとするデータを、ハッシュ表を用いて管理する。キーxのハッシュ関数h(x)を h(x) = x mod n とすると、任意のキーaとbが衝突する条件は…
正解:a-bがnの倍数
要点:同じ剰余になる条件は二数の差が除数の倍数であること
衝突するのはa mod n = b mod n となるときである。両者をnで割った余りが等しいということは、その差a-bがnで割り切れる、すなわちnの倍数であることと同値である。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。