bloom filter

Bloom Filter
m=|bit array|, n=|S|, k=# of hash functions.
false positive=\left(1-\left[1-\frac{1}{m}\right]^{kn}\right)^k \approx \left( 1-e^{-kn/m} \right)^k.
Given m and n, k = \frac{m}{n} \ln 2, will results the minimum false positive. k=-log2eps.
y=D(expression((1-exp(c*x))^x),'x')
> y
(1 - exp(c * x))^x * log((1 - exp(c * x))) - (1 - exp(c * x))^(x -     1) * (x * (exp(c * x) * c))
let y=0, we get k
let c=m/n, number of bits of each Si
 
in code: given eps and n, we get k=-log2eps, c=k/ln2, m=n/c
 Java code :
https://github.com/MagnusS/Java-BloomFilter/blob/master/src/com/skjegstad/utils/BloomfilterBenchmark.java

猜你喜欢

转载自luweimstr.iteye.com/blog/1770074