blog

ブルーム・フィルターに関する質問

ブルームフィルタは、大量のデータ中のビットマップの有無を検索する問題を解決するために設計されたデータ構造です。 理想的には、nビットのビットマップは$2^n$個の要素を保持することができ、既に存在する...

Oct 25, 2020 · 4 min. read
シェア

ブルームフィルタは、大量のデータ中の有無を検索する問題を解決するために設計されたデータ構造です。

理想的には、nビットのビットマップはn2n個の要素を保持することができます。

ビットマップの長さがmmで、既存のハッシュ関数がkk個あり、入力ドメインの任意の要素に対して、ハッシュによって得られる値は[0,m][0,m]に一様に分布していると仮定します。

m現在のフィルタにnn個の要素が挿入されたとき、 k*nk*n回の 挿入操作が行われたことになり、どのビットでも0になる確率は kk*nP0=k*n、1になる確率は [0,m]k*nP1=1-k*nとなります。

nこの時点で要素が挿入され、ハッシュはk個の位置を取得し、このk個の位置のすべてが既に1であれば、確率 knkP=k*n)kで偽陽性

Matlabによるグラフ,P0=(11m)knm=k=3,m=0010, nによるP傾向

m=1000の条件下でn=1000の場合、エラー率はすでに80%以上と高く、この場合、最も単純なビットマップに従っても100%正しいことがわかります。ブルームフィルタの利点は何ですか?

Read next

J41コンストラクタ

1.共通関数2.コンストラクタ1.Funcは共通関数と呼ばれなくなり、コンストラクタと呼ばれるようになりました2.返される結果もRETURNに基づいて返り値を決定するのではなく、返される結果は現在のクラスのインスタンスになります3.カスタムクラスを作成し

Oct 23, 2020 · 4 min read