具有固定误报概率的压缩布隆过滤器

时间:2016-11-10 15:53:06

标签: math hash bloom-filter

我正在尝试根据本文Compressed Bloom Filters by Michael Mitzenmacher实现压缩布隆过滤器实现。我需要计算 m - 位数和 k - 给定的固定误报概率的散列函数数。例如: 我知道如果我有 n = 1000个元素(要插入布隆过滤器)并且给定概率 p = 0.01,那么“最佳”位数将用于布隆过滤器将是(-n * Math.log(p) / (Math.log(2) * Math.log(2))) = 9585 而且我还需要 k =(9585/1000)* Math.log(2)= 7 - 哈希函数。也就是说,我会得到假阳性率0.01。 为了“压缩”布隆过滤器,我们需要构建更多的“稀疏”过滤器 - 获得更少的散列函数和更多的向量位数。 但我没有想到如何计算这个稀疏滤波器的散列函数数和位数。如果我们将k减少1怎么会增加位数?比例是多少?

1 个答案:

答案 0 :(得分:0)

好吧,我没有发现散列函数的数量和具有固定误报率的位数之间的任何具体比率。但是我找到了这些值的预先计算表。 Here您可以找到散列函数数量和位向量长度的值以及相应的误报率。由于我们有这样的表,我们可以找到多个散列函数(小于最优)和相应的位向量长度,误差率小于或等于给定。 Here是用于构建“稀疏”布隆过滤器的实现。 希望这将节省一些人将来的时间。