密码学小知识(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一样的缺点,就是访问空间地址不连续,内存寻址消耗大
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
布隆过滤器Bloom Filter)是一种重要的数据结构,它用于快速判断一个元素是否存在于一个集合中。布隆过滤器的核心思想是通过一系列哈希函数来对元素进行多次哈希,然后将得到的哈希值映射到一个位数组中,并将对应的位置设为1。当需要判断一个元素是否存在时,同样对其进行多次哈希,检查对应位数组的值是否都为1,若都为1则可以确定元素可能存在;若存在一个0,则可以确定元素一定不存在。因此,布隆过滤器是一种基于概率的数据结构,可以高效地进行查找。 然而,布隆过滤器也存在一些问题。首先,由于多个不同的元素可能会哈希到相同的位上,因此在查询时可能出现误判,即判断一个元素存在时实际上并不存在。这种误判是由于多个元素共享了某一位的原因导致的。其次,布隆过滤器的特性决定了它无法支持元素的删除操作,因为删除一个元素可能会影响其他元素的判断结果,从而增加误判率。 要注意的是,计数布隆过滤器(Counting Bloom Filter)提供了一种实现删除操作的可能性,但并不能保证在后续查询时该值一定返回不存在。因此,不能说计数布隆过滤器支持删除,而是说计数布隆过滤器提供了实现删除的可能。 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【海量数据处理】布隆过滤器BloomFilter](https://blog.csdn.net/qq_43727529/article/details/127180864)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [Java --- redis7之布隆过滤器BloomFilter](https://blog.csdn.net/qq_46093575/article/details/130613434)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值