Tor*_*ten 16 hash function bloom-filter
我有关于为Bloom过滤器选择哈希函数的以下问题:
在几乎每篇文档/论文中,您都可以读到Bloom过滤器中使用的散列函数应该是独立且均匀分布的.
我知道这是什么意思(独立和统一分布),但我很难找到论证或讨论,哪些散列函数满足这些要求,因此是合适的.在很多帖子中,我已经阅读了关于使用FNV或Murmur哈希函数的建议,但不是为什么(或者至少没有证明)它们是合适的.
提前致谢!
小智 15
在构建Java Bloom过滤器库时,我问自己同样的问题.请参阅Github自述文件,详细了解我对Bloom过滤器的哈希函数的分析.
我从两个角度看问题:
通过随机输入的基准可以轻松测量速度.统一性有点困难,需要一些统计数据.使用卡方拟合优度检验我测量了散列值的分布与均匀分布的相似程度.
结果是:
如果您的实现使用Java,我建议使用我们的Bloom过滤器哈希库.它有详细记录并经过全面测试.有关详细信息,包括不同哈希函数的基准测试结果及其根据卡方检验的不一致性,请参阅回购的Github自述文件.