ホーム用語辞典 > ハッシュ法

ハッシュ法とは?

ハッシュ法とは、キーからハッシュ関数で「格納する場所(インデックス)」を計算し、配列に直接置く方法です。探すときも同じ計算をすれば一発でたどり着くため、挿入も探索も平均 O(1) という速さになります。

ただし、たくさんのキーを少ないインデックスに割り当てるので、別々のキーが同じ位置になることが起きます。これを衝突(コリジョン)、同じ値になったキー同士をシノニム(synonym)と呼び、原理的に避けられません。

チェイン法:キー mod 7 で場所を決め、衝突は鎖でつなぐ [2] [3] [4] [5] 9 24 10 17 24・10・17 はどれも余り3=衝突(シノニム) (空) 12 5
図:別のキーが同じインデックスに来る「衝突(シノニム)」を、連結リストでつなぐのがチェイン法

衝突の解決には、同じ場所に来たキーを連結リストでつなぐチェイン法と、空いている別のマスを探すオープンアドレス法があります。キーが偏ると鎖が長くなり、最悪 O(n) まで落ちるので、よく散らばるハッシュ関数が重要です。

基本情報技術者試験では、平均計算量 O(1)、衝突・シノニム、チェイン法とオープンアドレス法の違いが定番です。

🔗 関連:ハッシュ法の可視化(チェイン法で衝突を体感)/ データ構造をやさしく図解用語辞典トップ