当前位置:   article > 正文

密码学小知识(1):布隆过滤器(Bloom Filter)、混淆布隆过滤器(Garbled BF)和布谷鸟过滤器(Cuckoo Filter)

混淆布隆过滤器

一、布隆过滤器

定义

布隆过滤器(Bloom Filter,BF)从形式上看是一个bit数组,也是一种概率型的数据结构(probabilistic data structure),是一个很长的二进制位图和一系列随机映射函数或哈希函数。当插入某个元素时,使用多个不同的哈希函数生成不同的哈希值,并对指向的位置置为1。特点是高效地插入和查询,可以用来告诉你“某样东西一定不存在或者可能存在”。

优点

  • 1)相对于传统的List、Set和Map等数据结构,它更高效、占用空间小
  • 2)空间效率查询时间远远超过一般的算法

缺点

  • 1)返回的结果是概率性的,而不是确切的
  • 2)不能删除,且有误识别率(假阳率)。

在这里插入图片描述

二、混淆布隆过滤器

定义:混淆布隆过滤器(Garbled Bloom Filter,GBF)从形式上来看也是一个bit数组,当插入某个元素时,使用多个不同的哈希函数生成不同的哈希值,并对指向的位置置为1。GBF与BF不同的是,GBF的每个位置均包含定长的字符串,当插入某个元素时,该元素分成k份长度均为λ-bit的共享,每一份共享都被哈希函数映射到相应的位置上。
在这里插入图片描述

三、布谷鸟过滤器

定义:布谷鸟过滤器(Cuckoo Filter,CF)源于布谷鸟hash算法,它有两张hash表,分别为两个hash函数。当有新的数据插入的时候,它会计算这个数据在两张表中对应的两个位置,这个数据一定会被存在这两个位置之一。一旦发现其中一张表的位置被占,就将该位置的数据踢出,被踢出的数据就去另一张表找对应的位置。通过不断地踢出数据,最终所有数据都找到了自己的位置。

优点:

  • 1)在错误率小于3%的时候空间性能优于布隆过滤器
  • 2)访问内存的次数较低
  • 3)CF不同于BF,CF只会存储元素的指纹信息(Hash值)。由于不是存储了数据的全部信息,会有误判的可能;
  • 4)CF也使协议能够支持元素的删除功能
  • 5)CF具备更低的通信开销更高的插入、查询效率

缺点

  • 1)当装填数据过多时,容易出现循环的问题,即插入失败的情况;
  • 2)另外与BF一样的缺点,就是访问空间地址不连续,内存寻址消耗大
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/497542
推荐阅读
相关标签
  

闽ICP备14008679号