ハッシュ表(Hash Table)は、キー(Key)と値(Value)のペアを効率的に格納し、高速に検索するためのデータ構造です。データを格納する際、キーとなる情報(文字列や数値など)を「ハッシュ関数」と呼ばれる特殊な関数に入力し、固定長の整数値(ハッシュ値)を得ます。このハッシュ値を配列の「インデックス(格納アドレス)」として使用し、その位置に値を保存します。この仕組みにより、データの検索時にはキーをハッシュ関数に通すだけで格納先のアドレスが一発で判明するため、データ数がどれだけ増えても、ほぼ一定の時間(計算量O(1))で瞬時に目的のデータにアクセスできます。ただし、異なるキーから同じハッシュ値が計算されてしまう「ハッシュ衝突(コリジョン)」という問題が必ず発生するため、同じアドレスにリストを繋いでいく「チェイン法」や、空いている別のアドレスを探す「オープンアドレス法(クローズドハッシュ法)」などの衝突回避策をあらかじめ組み込んでおく必要があります。
試験では、ハッシュ表の基本原理(キーからハッシュ値を作成し、それを格納先インデックスとする)に加えて、「ハッシュ衝突(衝突/コリジョン)」が発生したときの解決方法である「チェイン法(連結リストで繋ぐ)」と「オープンアドレス法(再ハッシュ等で空きを探す)」のそれぞれの特徴を理解しておくことが求められます。また、ハッシュ関数の要件として「計算が高速であること」や「ハッシュ値が均一に分散すること(特定の場所に偏らないこと)」といった性質についての選択肢もよく登場します。
ハッシュ関数(任意のデータを固定長の数値に変換する関数)、ハッシュ衝突(異なるキーから同一のハッシュ値が生成されてしまう現象)、チェイン法(ハッシュ衝突時にデータを連結リストで繋ぐ回避策)。