本文认为,对布隆过滤器中错误率的传统分析是不正确的,然后对实际错误率进行了冗长而平凡的分析。链接论文发表于2010年,但我已经看到在各种算法和数据结构课程中仍继续教授Bloom Bloom过滤器的传统方法。
布隆过滤器的传统分析确实不正确吗?
谢谢!
本文认为,对布隆过滤器中错误率的传统分析是不正确的,然后对实际错误率进行了冗长而平凡的分析。链接论文发表于2010年,但我已经看到在各种算法和数据结构课程中仍继续教授Bloom Bloom过滤器的传统方法。
布隆过滤器的传统分析确实不正确吗?
谢谢!
Answers:
传统分析很好。如果正确解释,则“传统”分析是近似值;它是基于当您将键散列到过滤器中时,计算期望的单元格数量为0/1,然后进行分析,就好像那是实际数量一样。关键是0(或1)个像元的数量紧紧围绕其期望值,因此这是一个很好的近似值。这是众所周知的,我认为甚至可以在我与Andrei Broder的调查文章中找到。
本文说的是,Bloom过滤器的性能实际上是一个随机变量(对应于0/1项的实际分数),如果出于某种原因要精确地计算该性能,则需要进行组合。对于较小的过滤器,您会发现可以说是不平凡的差异。
我已经与本文的作者进行了交谈。他们的分析很好,也很不错(尽管我认为这不是深入的或新的)。我认为他们夸大了“传统分析是错误的”的动机。
让我补充到迈克尔的回答,对于分裂布隆过滤器,其中散列函数具有不相交的范围,传统的分析是没有近似或任何浓度界限确实是正确的。这是因为不同哈希函数的错误概率变得独立而不是相关。拆分布隆过滤器的空间/错误权衡与传统布隆过滤器基本相同,因此我认为这是一个很好的教学方法。