このホワイトペーパーでは、ブルームフィルターのエラー率の従来の分析は正しくないと主張し、実際のエラー率の長くて重要な分析を提供します。リンクされた論文は2010年に公開されましたが、ブルームフィルターの従来の分析は、さまざまなアルゴリズムとデータ構造のコースで教えられ続けています。
ブルームフィルターの従来の分析は実際に間違っていますか?
ありがとう!
このホワイトペーパーでは、ブルームフィルターのエラー率の従来の分析は正しくないと主張し、実際のエラー率の長くて重要な分析を提供します。リンクされた論文は2010年に公開されましたが、ブルームフィルターの従来の分析は、さまざまなアルゴリズムとデータ構造のコースで教えられ続けています。
ブルームフィルターの従来の分析は実際に間違っていますか?
ありがとう!
回答:
従来の分析は問題ありません。「従来の」分析は、正しく説明されていれば、近似値です。これは、キーをフィルターにハッシュするときに0/1であると予想されるセルの数を計算し、それが実際の数であるかのように分析することに基づいています。要点は、0(または1)のセルの数が期待値に厳密に集中しているため、これは近似値であるということです。これはよく知られていましたが、Andrei Broderの調査記事でも確認できます。
このホワイトペーパーでは、実際にブルームフィルターのパフォーマンスはランダム変数(0/1エントリの実際の割合に対応)であり、何らかの理由でそのパフォーマンスを正確に計算する場合は、組み合わせを行う必要があります。より小さいフィルターの場合、間違いなく重要な違いが表示されます。
この論文の著者と話しました。彼らの分析はすべてうまくいっている(私はそれが深くも新しいものでもないと主張するだろうが)。「伝統的な分析が間違っている」という彼らの動機は、誇張されていたと思います。
Michaelの答えに加えて、ハッシュ関数の範囲がばらばらになっているスプリットブルームフィルターの場合、従来の分析は、近似または濃度の境界なしで実際に正しいと言えます。これは、異なるハッシュ関数のエラー確率が相関するのではなく独立するためです。スプリットブルームフィルターのスペース/エラートレードオフは、従来のブルームフィルターと本質的に同じであるため、これは教育に適したバリエーションだと思います。