Leetcode Lect7ハッシュテーブル

 

 


伝統的なハッシュテーブル

次のように格納されている長さnのハッシュテーブルのため:
    それはハッシュ値hキーに応じて算出され = ハッシュ(キー)
    の数nが想定される場合は、それは最初のキーと値のペアで配置されなければならない(時間ボックス内のn)
    ボックスは、キーと値のペアとなっている場合、競合を解決するためにジッパーオープン対処する方法やメソッドを使用します

 

 


ハッシュ衝突

文字列が異なるハッシュが同じ場所にある場合は、ハッシュ衝突と呼ばれます。衝突をハッシュする一般的な解決策は次のとおりです。

ジッパー法(オープンハッシュ)

配置されている要素のリストに対応する、各アレイ位置のため、ハッシュ衝突法を解決するために、締結具を使用する場合、すべてのキーの同じボックスに属しているがリストに配置されています。競合がある場合には、我々は競合を避けるために、リストの末尾に、この要素を挿入します。

 

 

線形検出方法(閉ハッシュ)

一つの種類は、リニアアドレス指定方法のオープン検出方法です。

競合が発生したとき、我々は決定するために競合ハッシュアドレス(配列インデックスプラスワン)のために次のチェックを挿入するかどうかは、検査位置に継続しない場合。

ハッシュテーブル法は、ため、リンクされたリストから、ファスナーを実現弾性キーと値のペアを受信することができ、ハッシュテーブルの線形検出方法、アレイの限られた大きさを直接受信キーと値のペアの数を実現します。配列が一杯になる前に、配列のサイズを調整する必要があります一般的には、キーと値のペアの合計数は、アレイの半分に到達するたびに、我々は、配列全体のサイズを2倍になります。

クローズドハッシュは下向きに挿入があったので、あまり使用しないで、衝突の増加につながることができます

 

再ハッシュ

この方法は、異なるハッシュ関数の複数を同時に構築されます。

こんにちは= RH1(キー)は、i = 1,2、...、K

ハッシュアドレスがHi = RH1(キー)の紛争、そしてこんにちは計算する場合=(キー)RH2は......、競合が発生しなくなるまで。この方法は、凝集を発生しにくくなるが、計算時間を増やします。

 


分散ハッシュテーブル

DHTを参照すると、ハッシュテーブルは、ハッシュ値によって異なるマシンに分割されます。

 

 


一貫性のあるハッシュ

動的に追加または削除されたノードが存在する場合、一般的な分散ハッシュテーブルでは、それは、データ障害の大量につながります。だから、どのようにこの状況を改善するには?

一貫性のハッシュアルゴリズムは、簡単に言えば、ハッシュ、削除時に/キャッシュを追加することです、それは可能な限り小さくすることができマッピング関係が存在して変更することが鍵となっています。考え方は同じ空間にマシンとデータのハッシュということです。

例えば、コード・アルゴリズム内の各ノードは次のノードの前領域内のデータ点をハッシュする時計方向にそれの責任です。あなたが動的なノードを持っている場合は他のマシンではないながら、2台のマシンがこの範囲内で、影響を受けることになります。この間隔のエンドポイントのみ、その後、追加/削除

 

Kademliaのと呼ばれるDHTアルゴリズムは、それがP2Pダウンロード基礎である、もあります。参照することができますhttps://colobu.com/2018/03/26/distributed-hash-table/を

 

 


参考:https://xiekeyi98.com/819591f7.html

 

おすすめ

転載: www.cnblogs.com/pdev/p/11332264.html