1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

image.png
1:ハッシュ法
 ハッシュ法は、データの格納場所を計算によって求め、短時間で目的のデータを探し出す方法です。ハッシュ法を利用するためには、事前にデータをハッシュ表に登録しておく必要があります。 
 データの格納場所を求める計算式をハッシュ関数と言います。データのキー値(社員番号、口座番号、伝票番号など)をハッシュ関数に入力し、ハッシュ値を得ます。そして、ハッシュ値をアドレス(あるいは要素番号)として扱い、該当箇所にデータを格納します。基本情報技術者試験では、ハッシュ関数として、
 キー値%N:キーチをNで割った余り
が使われることが多いです。なお、%は余剰(割った余り)を表す記号です。ハッシュ関数として余剰を使うときには、先頭要素の要素番号が0から始まる配列を用意すると便利です。

2:ハッシュ法における衝突
 異なったキーチに対して、同じハッシュ値が計算されることを衝突(コリジョン)と言います。例えば、ハッシュ関数を
 ハッシュ値=キー値%11
としましょう。このハッシュ関数を使って、データをハッシュ表に格納します。 はじめに、キー値3のデータをハッシュ表に格納しましょう。この時のハッシュ値は3ですから、ハッシュ表の[3]の場所に格納します。次に、キー値14のデータをハッシュ表に格納します。この時のハッシュ値も三となります。ハッシュ表の[3]にはすでにデータが格納されていますから、ここに格納することはできません。このように、ハッシュ値が衝突するとデータを格納できなくなります。
 この場合、後から格納しようとしたキー値14のデータをシノニムと呼びます。シノニムは、本来の場所とは違う場所に格納せざるをえません。シノニムを格納するを格納する代表的な方法には、オープンアドレス方とチェーン法があります。
 オープンアドレス法は、本来の場所から下方向へ見ていって、空いていた場所に格納する場所という方法です。
 チェーン法は、同じハッシュ値のデータをリストで管理するという方法です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?