4

私の現在の理解では、ユニバーサルハッシングは、あらゆる種類の入力に対して妥当なパフォーマンスを保証するために、実行時にハッシュ関数がランダムに選択される方法です。

誰かが悪意のある入力を意図的に選択することによる操作を防ぐためにこれを行う可能性があることを理解しています (決定論的ハッシュ関数の可能性はわかっています)。

私の質問は次のとおりです。キーをハッシュするたびに、キーが同じアドレスにマップされることを保証する必要があるというのは本当ですか? たとえば、情報を取得したいが、ハッシュ関数がランダムに選択されている場合、データを取得できることをどのように保証しますか?

4

1 に答える 1

6

ユニバーサル ハッシュ関数は、どのハッシュ関数が選択されても、宇宙からランダムに選択された 2 つの要素が高い確率で衝突しないという特性を持つ、さまざまなハッシュ関数のファミリです。通常、これは、実装内で使用するハッシュ関数のファミリからランダムなハッシュ関数を実装に選択させることによって実装されます。このハッシュ関数を選択すると、ハッシュ テーブルは通常どおり機能します。このハッシュ関数を使用してオブジェクトのハッシュ コードを計算し、オブジェクトを適切な場所に配置します。ハッシュテーブルは、作成したハッシュ関数の選択を覚えておく必要があり、プログラム全体で一貫して使用する必要があります.

お役に立てれば!

于 2012-01-30T21:25:33.467 に答える