布隆过滤器

✍ dations ◷ 2025-12-08 03:56:14 #函数,散列

布隆过滤器(英语: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, 这样删除元素时将计数器减掉就可以了。然而要保证安全地删除元素并非如此简单。首先我们必须保证删除的元素的确在布隆过滤器里面。这一点单凭这个过滤器是无法保证的。另外计数器回绕也会造成问题。

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

相关

  • 耶路撒冷leader_title2=市长(东) 人耶路撒冷(希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR","Ke
  • 维拉帕米维拉帕米,Verapamil(或称Isoptin),非二氢嘧啶类之钙离子通道阻断剂(Non-Dihydropyridine Calcium Channel Blocker)。
  • 昼夜节律性睡眠障碍昼夜节律睡眠障碍(CRSD)是影响睡眠时间及其他方面的一种睡眠障碍 。患有昼夜节律睡眠障碍者无法在一般工作、学校和社会需求所需要的入睡时间睡着,或起床时间起床。如果允许他
  • 卡尔·穆尔维卡兰·弗朗西斯·穆尔韦(英语:Callan Francis Mulvey,1975年2月23日-)是一位澳大利亚男演员。从1996年开始踏入影视界,最初是出演澳大利亚电视剧《心碎高中(英语:Heartbreak High)》,
  • 苏必略湖苏必利尔湖(英语:Lake Superior)是北美洲五大湖中最大的一座,被加拿大的安大略省与美国的明尼苏达州、威斯康星州和密歇根州所环绕。苏必利尔湖是世界上面积最大的淡水湖;以蓄水
  • 第82空降师第82空降师(82nd Airborne Division)是美国陆军中最早建立的空降师,该师前身是‘全美’第82步兵师(82nd Division),成立于1917年8月25日。第二次世界大战爆发后,于1942年3月重新组
  • 第七合组军团第七合组军团(英语:Legio VII Gemina)古罗马军队建制名称。由四帝之年时期的加尔巴于公元69年建立,该军团曾参加罗马帝国对日耳曼尼亚的相关战争并发挥作用,至公元4世纪末仍于历
  • 弗拉基米尔·戈尔布弗拉基米尔·亚历山德罗维奇·戈尔布(俄语:Владимир Александрович Горб,1903年12月31日-1988年10月20日),俄罗斯画家、教授,被视为列宁格勒画派(英语:Leni
  • 沙茶酱沙茶酱,是流行于潮汕地区的一种酱料,改良自马来西亚和印尼的沙嗲酱,其潮洲话读音为“沙嗲”(),与粤语地区所说的沙爹酱有同样词源,但在多年发展下,沙茶酱与沙嗲酱的调制方法已略有不
  • 地球人地球人通常是在科幻小说、电影等作品的内容与外星生物探索研究中,对于地球上的人类的称呼,以和“外星人”相对应。不直接用“人类”而是用“地球人”一词,能够以宇宙性的观点称