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

多肢選択式ハッシュ


  • 複数選択ハッシュは、複数のハッシュ関数の実装を採用しているため、名前が付けられています。
  • 大まかに言えば、複数のハッシュ関数がある場合、各アイテムは複数のバケットにマップされるため、Algorithmdesignerはそれらのアイテムのどれにアイテムを配置するかを自由に選択できます。
  • この自由により、単一のハッシュ関数を実装するよりもはるかにバランスの取れた割り当てを取得するアルゴリズムが可能になります。
  • これらのアルゴリズムが生成する割り当ての限界を証明するために実装されている、主要なアルゴリズムのアイデアと主要な数学ツールを紹介します。
  • 分析は、基本モデルの変動に耐えるのに十分強力であることがわかります。これは、実際のアプリケーションでのこれらのアルゴリズムの有効性を説明するものです。

多肢選択式ハッシュのアルゴリズムは、ボールイントゥビンモデルの例を引用して説明されています

  • 負荷分散プロセスについて推論するための一般的なフレームワークは、需要(キー、プロセス、ファイルなど)が「ボール」とリソースの供給(テーブルスロット、サーバー、ストレージユニットなど)は「ビン」で表されます。
  • この設定ではmno。いくつかの割り当てルールを実装することにより、ボールの数がn個のビンに順番にスローされます。
  • 目標は、プロセスの完了後のビンへのボールの割り当てを理解することです。通常、最大ロードビンの負荷(=ボールの数)を制限します。
  • このモデルによると、ボールの割り当ては、1つ以上のハッシュ関数を適用することによってビンに実行されます。
  • これらのハッシュ関数は、ボールの一意のID(通常はモデルで暗黙的)をビンのセット(通常は1 ... nの番号)にマップする役割を果たします。
  • ビンをランダムに描画するのではなく、ハッシュ関数を実装してビンをボールにマッピングすると、後でボールの位置をIDから復元する必要がある一般的なケースで役立ちます。
  • >

  1. データ構造のダブルハッシュ

    このセクションでは、オープンアドレッシングスキームでのダブルハッシュ手法とは何かを説明します。通常のハッシュ関数h´(x):U→{0、1、。 。 。、m –1}。オープンアドレッシングスキームでは、実際のハッシュ関数h(x)は、スペースが空でないときに通常のハッシュ関数h’(x)を使用し、別のハッシュ関数を実行してスペースを挿入します。 $$ h_ {1}(x)=x \:mod \:m $$ $$ h_ {2}(x)=x \:mod \:m ^ {\ prime} $$ $$ h(x、i)=(h ^ {1}(x)+ ih ^ {2})\:mod \:m $$ iの値=0、1 、。

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

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