ブルームフィルターと完全なハッシュ


7

A ブルームフィルタは、所与のセットのテストメンバーシップにハッシュ関数を使用して項目が指定された位置にないの存在するかどうかをチェックすることにより、。S

ハッシュの衝突の影響を緩和するために、複数の関数が使用され、ユニバーサルハッシュを使用する場合の確率的限界が生成されます。

要素あたり10ビットを使用して、「妥当な」エラー率を実現できます。

セット完全なハッシュ関数を 直接構築でき、最後の要素がに存在しない場合、要素ごとに1ビットのみを使用して完全に回復できます。S+S

この推論が間違っている根本的な理由は何ですか?


1
大きさ、および10ビットが「妥当」である理由 S
–PålGD 2013

なぜSサイズが登場するのですか?何かが足りないかもしれません。
ニコラス2013年

2
なぜあなたは自分の推論に問題があると思いますか?
JeffE 2013

@JeffEブルームフィルターの認識品質が節約である場合、大幅な省スペースを見つけるのは奇妙です。とはいえ、それらはユニバーサルハッシュ関数に依存しているため、これは驚くに値しないかもしれません。極端なケースでは、ハッシュを記述するために必要なプログラムの長さ自体に、有効性を制限するいくつかのコルモゴロフ(?)限界があると思います。同様に、「より良い」ハッシュを実行する関数を見つけた場合、これはおそらく、ゲインを相殺するプログラムスペースのコストがかかることになるでしょう。しかし、私はこれのどれも知らないので、私の質問は...
ニコラス2013

2
あなたの推論は完全に健全です。 あなたはできる完璧な完璧なハッシュ関数を要素ごとに1ビットだけを使用して回復し得ます。完全なハッシュ関数は評価に時間がかかりすぎるため、結果のデータ構造は完全に役に立たなくなりますが、多くのスペースを節約できます。
JeffE 2013年

回答:


7

あなたの推論は原則的に正しいと思います。完全なハッシュはブルームフィルターの代替手段です。ただし、古典的な動的完全ハッシュは、実際的な解決策というよりはむしろ理論的な結果です。カッコウハッシングはおそらくより「合理的な」代替手段です。

動的な完全ハッシュと標準のカッコウハッシュパフォーマンスの両方は、償却されると予想されることに注意してください(データ構造を時々完全に再構築する必要がある場合があります)。また、ブルームフィルターは実装が簡単です。これは、ブルームフィルターを使用する場合の引数になる可能性があります(特に、誤検知が発生する可能性がある場合)。


2

Bloomフィルターは完璧なハッシュ関数では得られないものを提供すると思います-それはメンバーシップをテストすることができます。

私が知っているPHFは、適用するすべてのキーに対して何らかの回答を返します。指定したキーがハッシュセットにない場合でも、いくつかの値が提供されます。セット内のすべてのキーをどこかに格納していて、PHFがポインターを提供している場合、またはPHFを使用してサイズ衛星データを検索している場合は、これは問題ありません。あなたの構造にあることを知っています。ただし、メンバーシップテストはより困難です。O(1)

特に、エラーなしで異なる要素を格納するには、ビットのストレージが必要です。nnlog2n

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