布卢姆过滤器是一种数据结构,它允许计算机查看一个给定元素是否出现在一个集合中。布卢姆过滤器使用哈希函数来实现这一点。对于每一个被添加的元素,都会计算一个哈希值。当一个新元素被添加时,它的哈希值会与集合中的其他元素进行比较。布鲁姆过滤器是一种概率数据结构。有可能得到一个假阳性,但不可能得到一个假阴性。换句话说,一个查询的结果要么是"可能在集合中",要么是"绝对不在集合中"。元素可以被添加到集合中,但不能被删除。每增加一个元素,得到假阳性的概率就会增加。
爱德华-布鲁姆在1970年提出了布鲁姆过滤器。在文章中,Bloom假设有一种算法可以在行末连词。根据这个例子,大多数单词都有简单的连字符模式。但约有10%的单词需要耗时的查找来获取正确的规则。他的案例是,大约50万个单词的连字符。他看到,使用"普通"的无误哈希技术,存储连字符模式,需要大量的内存。他发现,使用他的技术,可以消除大部分查找。例如,一个只有理想的无误哈希所需的15%大小的哈希区,仍然可以消除85%的磁盘访问。
更一般来说,每个元素的假阳性概率为1%时需要少于10位,与集合中元素的大小或数量无关。