Bloom Filter原理

布隆过滤器(Bloom Filter,简称BF)是用来检测某个元素是否是大数据集合的成员的一个有效方法,具有很好的空间和时间效率。

BF是一个二进制向量数据结构,可以理解为有m个抽屉的桌子。

设计一个BF需要有3个功能部件:(1)有n个元素的集合M;(2)长度为m的位数组(BF结构);(3)k个哈希函数。


初始状态:位数组各位都为0,即每个抽屉都是空的。

实现过程:依次取集合M中的元素,例如a,计算hi(a)=x ,其中1<= i <=k,1<= x <=m,并将位数组的第x位设置为1.

                   可见:对每一个元素,都使用了k个哈希函数对其进行了计算,并将相应的抽屉都设置为1。

如何判断:元素b是否在位数组中?对b,使用hi(b)=x ,其中1<= i <=k,并查看第x个抽屉是否为1。

                  如果有一个抽屉不为1,即可知道b不在集合M中;反之,表明b在M中。


误判:元素不在集合M中,但通过BF判断其在M中。

漏判:如果元素在集合M中,则通过BF判断其一定在M中。

注意:BF会产生误判,但不会发生漏判。


产生误判的原因:因为位数组中很多位都被设置成了1,使得通过哈希函数产生的数对应的位数都为1。

影响误判的因素:(1)位数组长度,位数组越长,使得剩余0的个数会越多,产生误判的概率越小;

                                 (2)集合M的元素个数n,n越大,使得位数组各位产生1的概率增大,产生误判的概率随之增大;

                                 (3)哈希函数的数量。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值