实施布隆过滤器时,有一些潜在的移动部件:
m =位向量的大小 n =插入过滤器的项目(预期) k =要使用的哈希数
我知道m / n和k之间存在最佳关系但是我还没有找到如何将k哈希映射到位向量上以获得更大m值的明确解释。
在几乎每个例子中,我都读过人们使用m值很小的值(> 256),并且它们显示了重叠的散列函数。对于小于256位,很容易想象有k 256bit散列函数并将它们与向量进行或运算。
随着m变大以减小n的大值的误报率,我不确定如何将散列映射到矢量。我已经看到了一些想法,例如分割矢量并对矢量的每个128位部分应用“独立”(例如不同的杂音种子)哈希。但是我没有看到如何为更大的n / m值实现布隆过滤器的具体示例。
答案 0 :(得分:0)
当我研究Bloom过滤器时,下面的页面对我有很大帮助:
http://matthias.vallentin.net/blog/2011/06/a-garden-variety-of-bloom-filters/
所有描述都是作为开源库实现的。查看其来源也非常有帮助。
答案 1 :(得分:0)
当存在大量元素时,我宁愿依赖简化的密码学哈希函数:)