BloomFilter

BloomFilter

今天看redis面试题的时候发现了一个以前没听过的东东,于是百度了一下
BloomFilter概念和原理
我这里就记录下基本概念和技术结论

概念

Bloom Filter即利用位数组简洁的表示一个集合,并能判断元素是否属于这个集合,但是他可能会吧不属于这个集合的元素误认为属于这个集合(false positive);他不会吧属于这个集合的元素误认为不属于这个集合

原理(个人理解)

Bloom Filter是一个包含m位,且每一位都置0的数组
为了表达S={x1, x2,…,xn}这样一个n个元素的集合,使用k个相互独立的哈希函数,这些hash函数分别将集合中的每个元素映射到{1,…,m}的范围中。对任意一个元素x,地i个哈希函数映射的位置就会置1(1≤i≤k)

在判断y是否属于这个集合时,我们对y应用k次哈希函数,如果所有hi(y)的位置都是1(1≤i≤k),那么我们就认为y是集合中的元素,否则就认为y不是集合中的元素。下图中y1就不是集合中的元素。y2或者属于这个集合,或者刚好是一个false positive。

最优的哈希函数个数

位数组中0和1各一半时错误率低。最好让位数组有一半还空着。

位数组的大小

m至少需要取到最小值的1.44倍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值