読み方 : ハッシュほう

ハッシュ法【hashing method】ハッシュ探索ハッシュ表探索

概要

ハッシュ法とは、データ探索アルゴリズムの一つで、対象となるデータから一定の手順で算出したハッシュ値を用いてデータ本体の代わりに比較に用いる方式。対象とするデータが長い場合に処理を高速化することができる。
ハッシュ法のイメージ画像

ハッシュ値ハッシュ関数hash function)によって算出される固定長データで、任意の長さのデータから算出することができ、同じデータからは必ず同じハッシュ値が得られる。ハッシュ法ではまず各データハッシュ値を算出し、探索対象のデータハッシュ値に変換して、ハッシュ値同士で比較を行い探索する。

長い文字列データなど、毎回データ全体を比較すると比較処理自体に長い時間がかかるような場合に、短いハッシュ値で代用することにより比較処理を高速化することができる。また、広い値域を持つデータを短い配列などに格納して、高速に書き込みや読み出しを行うことができる。

ハッシュ値の算出は他のデータの存在を考慮せず行われるため、複数の異なるデータから同じハッシュ値が算出される衝突(collision)が起きることがある。同じハッシュ値を持つデータ群をシノニムsynonym)という。

シノニムを処理する方法としては、空いているハッシュ値データを振り分けて衝突を解消する「オープンアドレス法」や、同じハッシュ値を持つデータ線形リストとして保存する「直接連鎖法」などがある。

(2018.10.29更新)

資格試験などの「ハッシュ法」の出題履歴

▼ 基本情報技術者試験
令5修7 問15】 ハッシュ法の説明として,適切なものはどれか。
令4修6 問8】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
令3修12 問5】 探索方法とその実行時間のオーダの適切な組合せはどれか。ここで,探索するデータの数をnとし,ハッシュ値が衝突する(同じ値になる)確率は無視できるほど小さいものとする。
令3修7 問9】 探索表の構成法を例とともに a〜c に示す。最も適した探索手法の組合せはどれか。ここで,探索表のコードの空欄は表の空きを示す。
令3修1 問9】 次の規則に従って配列の要素 A[0],A[1],…,A[9] に正の整数kを格納する。kとして 16,43,73,24,85 を順に格納したとき,85が格納される場所はどこか。
令2修6 問18】 データ検索時に使用される,理想的なハッシュ法の説明として,適切なものはどれか。
令1秋 問10】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
令1修6 問6】 次の規則に従って配列の要素 A[0],A[1],…,A[9] に正の整数kを格納する。kとして 16,43,73,24,85 を順に格納したとき,85が格納される場所はどこか。
平31春 問18】 データ検索時に使用される,理想的なハッシュ法の説明として,適切なものはどれか。
平30修7 問6】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
平30春 問7】 表探索におけるハッシュ法の特徴はどれか。
平30修1 問6】 次の規則に従って配列の要素 A[0],A[1],…,A[9] に正の整数kを格納する。kとして 16,43,73,24,85 を順に格納したとき,85が格納される場所はどこか。
平29修7 問4】 探索方法とその実行時間のオーダの適切な組合せはどれか。ここで,探索するデータの数をnとし,ハッシュ値が衝突する(同じ値になる)確率は無視できるほど小さいものとする。
平29修1 問7】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
平28修6 問19】 ハッシュ法の説明として,適切なものはどれか。
平28修1 問4】 探索方法とその実行時間のオーダの適切な組合せはどれか。ここで,探索するデータの数をnとし,ハッシュ値が衝突する(同じ値になる)確率は無視できるほど小さいものとする。
平27修12 問7】 次の規則に従って配列の要素 A[0],A[1],…,A[9] に正の整数kを格納する。kとして 16,43,73,24,85 を順に格納したとき,85が格納される場所はどこか。
平27修7 問6】 表探索におけるハッシュ法の特徴はどれか。
平26修12 問20】 ハッシュ法の説明として,適切なものはどれか。
平26秋 問2】 0000~4999 のアドレスをもつハッシュ表があり,レコードのキー値からアドレスに変換するアルゴリズムとして基数変換法を用いる。
平26修7 問7】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
平25秋 問7】 次の規則に従って配列の要素 A[0],A[1],…,A[9] に正の整数kを格納する。kとして 16,43,73,24,85 を順に格納したとき,85が格納される場所はどこか。
平25修6 問26】 ハッシュ法の説明として,適切なものはどれか。
平25春 問7】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
平25修1 問6】 表探索におけるハッシュ法の特徴はどれか。
平24秋 問3】 探索方法とその実行時間のオーダの適切な組合せはどれか。ここで,探索するデータの数をnとし,ハッシュ値が衝突する(同じ値になる)確率は無視できるほど小さいものとする。
平24修6 問2】 0000~4999 のアドレスをもつハッシュ表があり,レコードのキー値からアドレスに変換するアルゴリズムとして基数変換法を用いる。
平23秋 問6】 次の規則に従って配列の要素 A[0],A[1],…,A[9] に正の整数kを格納する。kとして 16,43,73,24,85 を順に格納したとき,85が格納される場所はどこか。
平22秋 問7】 10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。
平22修6 問24】 ハッシュ法の説明として,適切なものはどれか。
平22春 問6】 ハッシュ表探索において,同一のハッシュ値となる確率が最も低くなるのは,ハッシュ値がどの分布で近似されるときか。
平21春 問2】 0000~4999 のアドレスをもつハッシュ表があり,レコードのキー値からアドレスに変換するアルゴリズムとして基数変換法を用いる。