布隆过滤器(Bloom Filter)原理与应用

博客介绍了K-v存储中bloom filter可快速查找元素是否在集合中,返回false则元素一定不在,返回true则可能存在。给出最低错误概率公式,还提供相关参考介绍及C++实现链接。指出其缺点是不能删除,可通过变体CBF解决,CBF多占存储空间以增加删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

K-v存储中bloom filter能够实现快速查找一个元素是否在集合中。bloom filter返回false,证明一定该元素一定不在于该集合中;bloom filter返回true,证明该该元素可能存在该集合中,也有可能不存在,不过通过设计bloom filter一般情况下,bloom filter返回true,则该元素极大概率存在于该集合当中。
最低错误概率公式:k=m/n*ln2,k:hash function的个数,m:存储0、1状态二进制位数,n: 总元素的个数,ln(2)于等于0.69
参考介绍如下:
https://blog.youkuaiyun.com/zq602316498/article/details/40660235
https://blog.youkuaiyun.com/jiaomeng/article/details/1495500
bloom filter的C++实现:
https://blog.youkuaiyun.com/chinabhlt/article/details/49148373

bloom filter的缺点是不能删除,只能增加,但是有方法改进,方法如下:
删除元素问题可以通过布隆过滤器的变体CBF(Counting bloomfilter)解决。CBF将基本Bloom Filter每一个Bit改为一个计数器,这样就可以实现删除字符串的功能了。

它将标准Bloom Filter位数组的每一位扩展为一个小的计数器(Counter),在插入元素时给对应的k(k为哈希函数个数)个Counter的值分别加1,删除元素时给对应的k个Counter的值分别减1。Counting Bloom Filter通过多占用几倍的存储空间的代价,给Bloom Filter增加了删除操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值