浅析Bloom Filter

来源 :科技资讯 | 被引量 : 0次 | 上传用户:sodney
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:Bloom Filter是一种空间和时间效率很高的二进制项量数据结构,它利用位数组很简单地表示一个集合,并能检索一个元素是否属于这个集合。Bloom Filter的高效检索是由有一定误报率换来的。因此,Bloom Filter只适合那些允许一定误报率的应用场合。
  关键词:Bloom Filter 哈希函数 漏报 误报
  中图分类号:TP311.12 文献标识码:A 文章编号:1672-3791(2013)04(a)-0011-01
  1 Bloom Filter
  Bloom Filter(布隆过滤器)是1970年由Howard Bloom提出的一个很长的二进制向量数据结构。布隆过滤器可以用于查询一个元素是否在某集合中。由于Bloom Filter在空间效率、查询效率以及安全性上的优势明显,因此被广泛的应用于各种需要查询的场合中,如Oracle的数据库,Google的Bit Table,web cache共享,拼写检查等都用了此技术。
  2 Bloom Filter原理
  假如要想判断一个元素是不是在某一个集合中,一般情况想到的是将所有元素保存起来,然后通过比较来确定。链表,树等数据结构就是这种思路。但是随着集合中元素的增加,我们需要的存储空间越来越大,利用这种思路去检索查找,效率也会越来越低。
  工作效率低下让人难以容忍,这时候我们可以考虑利用哈希表哈希函数这个数据结构。哈希函数在计算机领域,尤其是数据快速查找领域,加密领域用的极广。其作用是将一个大的数据集映射到一个小的数据集上面。哈希表是根据哈希值(Key value)而直接进行访问的数据结构。也就是说,它通过把哈希值映射到表中一个位置来访问记录,以加快查找的速度。或者也可以认为哈希表是通过一个Hash函数将一个元素映射到一个位阵列(Bit array)中的一个点。这样就简单了,只要看阵列中这个点是不是1就知道判断出他在不在集合中了。这实际上就是Bloom Filter的基本思路。
  虽然了解了Bloom Filter的基本思路但是其中要用到哈希函数,哈希函数有个很大的问题就是冲突,那么在Bloom Filter算法是怎么解决的呢?那就是在其中用多个哈希函数来解决判断一个元素,只要有一个函数判断说该元素不在此集合中那么它肯定就不在此集合中。但也有一种可能就是其中的所有函数都说该元素在此集合中,但实际上它并不在其中,这种情况是从在的,但是概率非常低。那就是它的效率很高了。我们把这种有多个哈希函数组成的数据结构称为Bloom Filter。
  下面我们举一简单的例子来看Bloom Filter是如何工作的。
  Bloom Filter是一个包含n位的位数组,初始化时每一位都置为0。存在一个具有m个元素的集合W={x1,x2,…,xm}和k个最优的相互独立的哈希函数。我们利用k{h1,h2,…hk}个哈希函数把它们分别将W集合中的每个元素映射到位数组{1,…,n}的范围中。对任意一个W集合中的元素x,第i(1≤i≤k)个哈希函数映射的位置hi(x)就会被置为1。注意,如果同一个位置多次被置为1,那么只有第一次是起作用的,后面几次置位将没有任何效果。
  如果n=20,k=3,W=(1,2),要判断3是否在W集合中的示意图(如图1)。
  首先需要把位数组通过集合元素和哈希函数的运算来置位为1,如图1。
  然后,我们开始判断3是否在w集合中。3与所有的k中的哈希函数进行运算,去看运算结果对应的位数组中的值是否为1,如果都为1则它在w中,如果有一个结果不为1,则它不在w中。图2所示是3不在集合w中,但如果碰巧3是一个误报那么就如图3所示了。
  从上面的例子可以看出Bloom Filter存在误报的可能性还是比较大的,那么怎样能使这种误报率降到最低呢?从原理上可以看出Bloom Filter要靠多个哈希函数将集合映射到位数组中,那么哈希函数的个数和位数组的位数都会影响到误报率。在哈希函数方面存在一下两种情况:一是如果哈希函数的个数多,那么在对一个不属于集合的元素进行查询时得到0的概率就大,也就是误报率低;另外,如果哈希函数的个数少,那么位数组中的0就多。
  3 Bloom Filter特点
  优点:由于它的插入时间和查询时间都是常数因此具有很高的空间效率和查询效率;在查询过程中查询元素不被保存具有良好的安全性;不存在漏报(False Negative),即某个元素在某个集合中,肯定能报出来。
  缺点:误识别率随着插入元素的增加而递增;任意元素都不能随意删除,删除将影响多个元素检测;可能存在误报(False Positive),即某个元素不在某个集合中,可能也被报出来。
  4 结语
  在计算机科学中,我们常常为了提高效率会碰到拿时间换空间或者空间换时间的情况。而Bloom Filter在时间和空间之外又引入了误识别率。在使用Bloom Filter判断一个元素是否属于某个集合时,会有一定的误识别率。Bloom Filter用少量的无识别率换来了时间和空间上的效率。自从70年代问世Bloom Filter之后,Bloom Filter就被广泛用于拼写检查和数据库系统中。随着网络的普及和发展,Bloom Filter在网络领域获得了更为广泛的应用,各种Bloom Filter的优化变种和新的应用不断涌现,在将来,Bloom Filter必将获得更大的发展。
  参考文献
  [1] 肖明忠,代亚非.Bloom Filter及应用综述[J].计算机科学,2004,31(4).
  [2] 谢鲲,文吉刚,张大方,等.布鲁姆过滤器查询算法[J].软件学报,2009,20(1).
其他文献
CFG桩具有施工工艺简单、处理效果好、全桩长发挥侧阻力、端阻力明显、对地基承载力提高幅度大等优点,应用广泛.以我公司实际施工的工程为例,介绍了的CFG桩的施工实践,探讨了
新型材料(P190-535、P210-770)具有无色透明、粘性大、耐热、抗水性能强、介电常数大、电导小等优点,用它作为粉末交流电致发光的介质,制备粉末ACEL器件,并测试了这种器件的L-V、I-V、L-f、I-f、光谱和老化等主要光
利用ABAQUS软件建立高桩码头桩-土结构体系模型,选择合理的平面尺寸、材料属性,土体屈服准则.桩土接触模型等,输出桩-土体系的应力,位移,以此来研究高桩码头中疏浚对桩基的影响。通
从数学分析出发,提出一种校正CCD光谱响应曲线的方法,给出了对钠、汞光谱的检测与校正的结果。
回 回 产卜爹仇贱回——回 日E回。”。回祖 一回“。回干 肉果幻中 N_。NH lP7-ewwe--一”$ MN。W;- __._——————》 砧叫]们羽 制作:陈恬’#陈川个美食 Back to yield
在52单片机最小系统的基础上,利用温度传感器DSl8820实时监测周围环境温度,并用LCDl2864液晶显示屏显示监测到的温度,当温度超过所设定的范围时,蜂鸣器就会响起,从而达到报警的目
目的:提高整体护理的内涵质量,确保整体护理工作落实到位。方法:把整体护理的各项工作要求作为星级护士考核的标准,定期考核动态管理,每季考评一次星级护士。结果:整体护理病区的满
案例农妇,38岁,既往无胃病史。某年9月19日右上腹被他人拳击,当时腹痛,无昏迷呕吐。6小时后在医院检查,见右上腹(肋弓下)软组织肿胀,但无皮损及青紫。回家后持续性上腹隐痛,
通过城市文化空间战略的实施来推进“文化强市”的发展理念已成为当今国内外城市文化发展的一种潮流和成功经验,城市文化空间已成为秦皇岛城市文化产业发展的必然选择.文章从