1
ブルームフィルタを構成しようとしています。コンストラクタでは、予測されるフィルタの必要容量(n
)、望ましいエラー率(p
)、およびハッシュ関数のリスト(サイズk
)を設定します。ブルームフィルタで適切なビット数を計算する
According to Wikipedia、以下の関係が(m
はビット数である)を保持:
p = (1 - k * n/m) ** k
Iをパラメータとしてp
、n
とk
を取得するので、私はm
ために解決する必要があります。私は次のようになります:
m = k * n/(1 - p ** (1/k))
しかし、私は何か間違ったと思ういくつかのことがあります。まず、p ** (1/k)
はk
の十分な大きさのために1
に向かいます(これは、おそらく0
によって分けることができるので、全体の分数が定義されていないことを意味します)。
もう1つお気づきのことは、p
(許容最大エラーレート)が大きくなるため、それは完全に後方にあるm
です。
どこが間違っていましたか?
あなたの代数操作は正しいように見えますが、正しい式で*開始していますか? wikipedaのページには*と似ていますが、まったく同じではありません。 – AakashM