プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

ハッシュ関数とハッシュテーブル


ハッシュは、ハッシュ関数と呼ばれる数学関数を使用して、テキストまたは数値のリストから値を生成するプロセスです。数値の数値または英数字のキーを使用するハッシュ関数は多数あります。さまざまなハッシュ関数を以下に示します。

ハッシュ関数

以下はハッシュ関数の一部です-

除算方法

これは、ハッシュ関数を作成する最も簡単な方法です。ハッシュ関数は次のように記述できます-

h(k) = k mod n

ここで、h(k)は、キー値kをハッシュテーブルnのサイズで除算して得られるハッシュ値です。キーがより均一に分散されるようにするため、nは素数であることが最善です。

除算法の例は次のとおりです-

k=1276
n=10
h(1276) = 1276 mod 10
= 6

得られたハッシュ値は6です

分割メソッドIDの欠点は、連続するキーがハッシュテーブル内の連続するハッシュ値にマップされることです。これにより、パフォーマンスが低下します。

掛け算の方法

乗算法に使用されるハッシュ関数は-

です。
h(k) = floor( n( kA mod 1 ) )

ここで、kはキーであり、Aは0から1までの任意の定数値にすることができます。kとAの両方が乗算され、それらの小数部分が分離されます。次に、これにnを掛けて、ハッシュ値を取得します。

掛け算の例は次のとおりです-

k=123
n=100
A=0.618033
h(123) = 100 (123 * 0.618033 mod 1)
= 100 (76.018059 mod 1)
= 100 (0.018059)
= 1

得られたハッシュ値は1です

乗算法の利点は、Aの任意の値で機能できることですが、一部の値は他の値よりも優れていると考えられています。

ミッドスクエア法

ミッドスクエア法は非常に優れたハッシュ関数です。これには、キーの値を2乗してから、ハッシュ値として中央のr桁を抽出することが含まれます。 rの値は、ハッシュテーブルのサイズに応じて決定できます。

ミッドスクエア法の例は次のとおりです-

ハッシュテーブルに100個のメモリ位置があるとします。したがって、 r =2 キーをメモリ位置にマップするには2桁の数字が必要なためです。

k = 50
k*k = 2500
h(50) = 50

The hash value obtained is 50

ハッシュテーブル

ハッシュテーブルは、キーを値にマップするデータ構造です。ハッシュ関数を使用してデータキーのインデックスを計算し、キーはインデックスに保存されます。

ハッシュテーブルの例は次のとおりです-

ハッシュテーブルに格納する必要のあるキーシーケンスは-

です。
35 50 11 79 76 85

使用されるハッシュ関数h(k)は次のとおりです。

h(k) = k mod 10

線形プロービングを使用して、値はハッシュテーブルに-

として格納されます

ハッシュ関数とハッシュテーブル


  1. ExcelのMIN、Max、およびAVERAGE関数の使用方法

    機能 Excelのセルの範囲で数学計算を実行します。最も一般的な機能 SUM 、平均 、カウント 、 MIN 、および MAX 。個人がデータの平均、最小、または最大を見つけたい場合は、平均を使用できます。 、 MIN 、およびMAX関数 。この投稿では、Excelで平均、最小、最大を計算する方法を紹介します。 ExcelのAVERAGE、MIN、およびMAX関数 平均 :特定のセルの数値を検索し、1つ以上の値の平均値を返します。数字を含む名前、配列、参照にすることができます。 MIN :セルの範囲で最小値を検索します。 最大 :セルの範囲で最大値を検索します。

  2. ハッシュテーブルの説明

    私のお気に入りのデータ構造の1つは、シンプルで強力なハッシュテーブルです。 キーと値のペアを格納する効率的な方法であるため、おそらく以前に使用したことがあります。 ハッシュテーブルの実装の背後には、研究する価値のある興味深いコンピュータサイエンスの概念がいくつかあります。これは、まさにこの記事で行うことです! バケットとハッシュ関数 ハッシュテーブルの基本的な考え方は、効率的に(O(1)で)できるようにすることです。 )キーでインデックス付けされたデータを取得します。 簡単に復習すると、Rubyでハッシュテーブルを使用すると次のようになります。 prices = { apple: