布隆过滤器

布隆过滤器是一种1970年提出的概率型数据结构,用于快速判断元素是否存在集合中。它由二进制向量和随机映射函数组成,存在误判可能但能确保不存在的判定正确。工作原理是通过多个哈希函数标记二进制位。布隆过滤器在速度和空间占用上有优势,适用于短链系统、邮件黑名单和缓存系统等场景,但不支持删除操作且存在一定的误判率。
摘要由CSDN通过智能技术生成

是什么

它由布隆于 1970 年提出,由一个很长的二进制向量和一系列随机映射函数组成。
通过它,可以帮助我们快速定位一个元素在一个集合中是否存在。但是需要指出的是,这是一种概率型数据结构(probabilistic data structure),当然,概率是单向的,当它判定元素不存在时,一定不存在,当它判断存在时,有概率存在。
布隆过滤器示意图

工作原理

我们需要准备好一个m位的二进制数组,还有k个hash函数,将内容可以映射到0~m-1这些位置上。
当新增加1个元素时,k个hash函数计算出k个值,然后将这些位置上的标识改成已占用(图示灰色)。
当需要查询一个元素是否存在,同样用k个hash函数计算出k个值,如果这k个位置上的标识都是已占用,那么这个元素被布隆过滤器判定为存在(实际仅仅是有概率存在);只要有1个位置的标识是未占用,那么这个元素一定不存在。

我们跟着一个例子走一遍,为了简单起见,我们设置k=2,m=8,即只有2个hash函数+1个8位的二进制数据,初始情况,8个位置都是未占用。
初始化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值