布隆过滤器

✍ dations ◷ 2025-11-18 15:38:28 #函数,散列

布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。

如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路。但是随着集合中元素的增加,我们需要的存储空间越来越大。同时检索速度也越来越慢,上述三种结构的检索时间复杂度分别为 O ( n ) , O ( log n ) , O ( 1 ) {\displaystyle O(n),O(\log n),O(1)}

布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检元素很可能在。这就是布隆过滤器的基本思想。

相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数( O ( k ) {\displaystyle O(k)} )。另外,散列函数相互之间没有关系,方便由硬件并行实现。布隆过滤器不需要存储元素本身,在某些对保密要求非常严格的场合有优势。

布隆过滤器可以表示全集,其它任何数据结构都不能;

k {\displaystyle k} m {\displaystyle m} 相同,使用同一组散列函数的两个布隆过滤器的交并运算可以使用位操作进行。

但是布隆过滤器的缺点和优点一样明显。误算率是其中之一。随着存入的元素数量增加,误算率随之增加。但是如果元素数量太少,则使用散列表足矣。

另外,一般情况下不能从布隆过滤器中删除元素。我们很容易想到把位数组变成整数数组,每插入一个元素相应的计数器加1, 这样删除元素时将计数器减掉就可以了。然而要保证安全地删除元素并非如此简单。首先我们必须保证删除的元素的确在布隆过滤器里面。这一点单凭这个过滤器是无法保证的。另外计数器回绕也会造成问题。

在降低误算率方面,有不少工作,使得出现了很多布隆过滤器的变种。

相关

  • 类鼻疽类鼻疽(Melioidosis),又称惠特莫尔氏病(Whitmore disease),奈特克里夫园丁病(Nightcliff gardener's disease),由类鼻疽伯克氏菌造成的人畜共通传染病,但是人传人的例子很少。病原体可
  • 转移酶转移酶是一种催化一个分子(称为供体)的官能团(如甲基或磷酸盐团)转移至另一个分子(称为受体)的酶。 举例来说,一种酶催化以下的化学反应就是转移酶:在这例子中的A就是供体,而B就是受
  • 码表计时马表,或称马表(英语:chronograph),是一种有计时功能的手表,是将秒表的功能结合于手表之中。计时码表于1720年由英国人乔治·格林汉(英语:George Graham)发明。无论是机械手表,石英
  • 无夏之年无夏之年(英语:Year Without a Summer),指1816年。因为受1815年印尼坦博拉火山爆发的影响,北半球天气出现的严重反常。欧洲、北美洲及亚洲都出现灾情,夏天出现罕见低温;欧洲及美洲
  • 真核细胞的真核生物(学名:Eukaryota)是其细胞具有细胞核的单细胞生物和多细胞生物的总称,它包括所有动物、植物、真菌和其他具有由膜包裹着的复杂亚细胞结构的生物,而不包括细菌和古菌,因它
  • 核辐射电离辐射(英语:ionizing radiation)是指波长短、频率高、能量高的射线(粒子或波的双重形式)。辐射可分为电离辐射和非电离辐射,电离辐射可以从原子或分子里面电离过程(Ionization)中
  • 原槐叶萍藻属Protosalvinia arnoldii † Protosalvinia braziliensis † Protosalvinia furcata † Protosalvinia ravenna †原槐叶萍藻属是一种史前植物,一般会在泥盆纪初期时的海岸线
  • 埼玉县第10区埼玉县第10区是日本众议院的选区,设立于1994年。北海道 13 | 山形县 4 | 静冈县 9 | 岛根县 3 | 大分县 4福井县 3 | 山梨县 3 | 德岛县 3 | 高知县 3 | 佐贺县 3青森县 4 |
  • 乌克兰希腊礼天主教伦敦圣家教区乌克兰希腊礼天主教伦敦圣家教区(乌克兰语:Єпархія Пресвятої Родини у Лондоні;罗马化:Yeparkhiya Presvyatoyi Rodyny u Londoni)是大不列颠的
  • 名人故里之争名人故里之争是中国各地方对名人故乡(主要指出生地)进行争夺的文化现象。现代以来,地方及地方政府因经济效益的缘故对名人故里争夺现象愈演愈烈。除了生平不详的情况外,中国文化