You are on page 1of 1

4.

1 Partitioned Bloom Filters A variant of Bloom filters consists in partitioning the array A of m elements among the k hash functions, creating k slices of m' = m/k elements ( see [9] and [10] ). Every hash function hi, 1<=i <=k will produce an output in the interval [1,m'] bits so every element inserted will be surely characterized by k bits as different hash functions insist on different portion of th filter. Hence a more robust filter derives as no element is particularly sensitive to false positive. For every slice the probability of a bit to become 1 after inserting an element is 1/m' and the probability of remaining 0 is 1 - 1/m' . After inserting n element we will have ( 1 1/m')^n and so the probability of having an element set to 1 is p = 1 - ( 1- 1/m')^n (5)

So for the whole filter this probability P = p^k. This probability increases with n and decreases with m' and k. In order to maximum the number of elements n and keep the error rate P below a certain value the following formula ( see [10] ) can be used n ~ ~ m*(lnp*ln(1-p)/-lnP (6)

For any given P and size m this n is maximized when p = ( i.e. the fill factor of every slice is equal to ). Using that value the number of elements than can be stored in the filter is given by this formula: n ~ ~ m*( (hn)^2/| lmP | ) (7)

and for the same p the number of hash functions k can be calculated as described in [10]. k = log2 1/P (8)

You might also like