布隆过滤器

✍ dations ◷ 2025-11-22 14:06:39 #函数,散列

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

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

相关

  • 常染色体显性多囊肾常染色体显性多囊肾(Autosomal dominant polycystic kidney disease,ADPKD)又称为成人型多囊肾,是一种遗传性全身性疾病,主要影响肾脏,但也可能会影响其他器官,如肝脏、胰腺、脑动
  • 伦敦大学伦敦大学(英语:University of London)是由多个行政独立的院校联合组成的学府(联邦制大学),亦是世界上规模最大的大学之一。这些院校包括不少世界上最具名望的学校(如伦敦大学学院、
  • 中国传说时代传说时代,又称传疑时代,是指依靠口耳相传所描述的远古历史时代,是中国地区古代传说和神话的一部分,在汉字记载出现之前,历史靠世世代代的口述而流传,这些内容到后来才被文字记录下
  • 诉诸人身诉诸人身(拉丁语:Ad hominem),指借由与当前论题无关之个人特质,如人格、动机、态度、地位、阶级或处境等,作为驳斥对方或支持己方论证的理据。诉诸人身又称作“对人不对事”、“因
  • 马撒葡萄园岛坐标:41°24′N 70°37′W / 41.400°N 70.617°W / 41.400; -70.617马萨葡萄园岛(英语:Martha's Vineyard),常被简称为“葡萄园岛”,是美国马萨诸塞州外海一岛屿,位于鳕鱼角(Cape C
  • 克罗地亚广播电视台克罗地亚广播电视台(克罗地亚语:Hrvatska radiotelevizija / HRT)是克罗地亚的公共广播电视系统,提供广播和电视服务。在2011年,克罗地亚广播电视80%以上的收入来自收视费。每户
  • OH-58奇奥瓦侦察直升机贝尔OH-58奇奥瓦侦察直升机 是一种直升机家族,单引擎单旋翼,可以有观测和部分攻击能力。由贝尔直升机公司根据贝尔 206A 喷射骑士改装生产。OH-58 奇奥瓦自从1968就开始在美军
  • 绥阳县绥阳县在中华人民共和国贵州省北部、芙蓉江上游,是遵义市下属的一个县。隋朝时,置绥阳县,后废。明朝政府在播州之役获胜,消灭播州杨氏土司政权后,于万历二十九年(1601年)四月设置遵
  • 长滩寺河长滩寺河,原名盐滩溪、岳池水、灵溪水,是嘉陵江的一条支流。此河发源于四川省南充市东北部金城山南坡东林寺,因流经岳池县城南长滩寺,故名长滩寺河。至岳池县朝阳乡西北接纳余家
  • 爱克发·吉华集团爱克发·吉华集团(Agfa-Gevaert N.V.)(Euronext:AGFB, FWB: AGE)是一间欧洲跨国公司,从事发展和制造用于生产、处理、复制影像的类比和数位产品,亦曾从事生产民用摄影器材,曾经是