Bloom Filter 系列改进之Partial Bloom Filter



Partial Bloom Filter和标准Bloom Filter唯一不同的地方在于哈希函数的映射范围。在Partial Bloom Filter中,位数组被等分成k个区域,每个哈希函数只映射到其中一个区域。也就是说,每个哈希函数映射范围都是{0, … , m/k - 1},但互不重叠,大家各自负责各自的区域。

下面我们来估算一下这种实现的错误率。位数组中某一位只可能被一个哈希函数选中,且选中的概率为k/m,所以这一位不被选中的概率为1 – k/m。假设集合有n个元素,那么这一位在存储完整个集合后还保持为0的概率为(1 – k/m)n。由于(1 – k/m)n ≈ e-kn/m,所以Partial Bloom Filter和标准Bloom Filter的错误率很近似。如果一定要分出个高下,实际上标准Bloom Filter错误率要小一些,因为对于k1时:

    在实际应用中,Partial Bloom Filter有一定的优势,因为一旦哈希函数的映射范围也独立开来,k个哈希函数就可以并行访问位数组,从而提高程序性能。具体体现在两个方面:

    Hash过程:传统bloom filter的hash范围是整个hash表,而Partial Bloom Filter的hash范围是各自负责的一小段而已,为了达到更好的均匀分布效果,简单的bloom filter需要更复杂的hash才能达到预想效果,也就是说Partial Bloom Filter在Hash时需要的移位等操作耗时更少,对应的效率也要高一些。

    插入操作:Bloom Filter无法再插入时实现并行,因为在插入时,由于其只有一个位数组,所以如果不添加互斥锁,那么在并行插入时,如果两个元素hash后对应的位数组相同将会出现race condition,相比之下,由于Partial Bloom Filter 中每个hash function 对应一段位数组,相互的Hash function之间没有交集,所以他们可以并行插入。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值