線形探査のための5つの独立したハッシュ関数の再利用


14

線形探査によって衝突を解決するハッシュテーブルでは、期待されるパフォーマンスを確保するために、ハッシュ関数が5つの独立したファミリからのものであることが必要かつ十分です。(充足性:「一定の独立性を持つ線形探査」、Paghほか、必要性:「線形探査と最小賢明な独立性に必要なk独立性について」、PătraşcuおよびThorupO1

最速の既知の5独立家族が集計を使用していることは私の理解です。そのようなファミリから関数を選択するのは高価になる可能性があるため、Crosby and Wallachの「Denial of Service by Algorithmic Complexity Attacks」で説明されているアルゴリズムの複雑さの攻撃を防ぎながら、その回数を最小限に抑えたいと思います。私はタイミング攻撃(つまり、ストップウォッチを持つ敵)についてあまり心配していません。同じ機能を再利用するとどのような結果になりますか:

  1. いっぱいになったハッシュテーブルを成長させるとき?
  2. 十分ではないハッシュテーブルを縮小する場合
  3. 「削除」ビットが多すぎるハッシュテーブルを再構築する場合
  4. では共通していくつかのキーが含まれていてもよい異なるハッシュテーブル?k
  5. では共通には、キーを含まない別のハッシュテーブル?k

これが練習に関する質問である場合...もっともらしい実用的なアプローチは、表に基づくスキームを使用する代わりに、入力にランダムな秘密を含む暗号化ハッシュ関数を使用することです。次に、同じハッシュ関数を再利用するプレッシャーが少なくなります。ハッシュテーブルごとに異なるシークレットを使用できます(そして、ハッシュテーブルを縮小/成長/再構築するときに、シークレットを変更し、すべてを再ハッシュします)。
DW

SipHash-2-4のような短い入力での高速暗号ハッシュ関数でさえ、多項式を使用する5つの独立したファミリーと比較してもかなり遅いと思います。
jbapple

回答:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.