简述bloom filter的作用及原理

处理大数据,比如hbase中常常会提到bloom filter 的概念。这个精简的数据结构是干嘛的呢?

 他的作用就是判断某个元素是否属于这个集合。

方法是:对于集合A ,设置一个m位的位数组b。并给定k个hash函数。

     for i in 0...k

       for elem in A(遍历整个集合)

            setbit(maparray,hash(k,elem)) (根据第k个hash函数计算出一个值,并将该位设置为1,如果已经设置为1,则不重复设置)。

  如果要判断一个元素是否是属于这个集合的话,依次调用k个hash函数,当然会映射到位数组b的k个位置,如果映射到的位置不为1,那么就说明他不是该集合当中的。


 但是bloom filter 的致命伤是他的计算并不是每次都是准确的,可能会有失误,将不属于这个集合的元素识别为这个集合的元素。比如y1 映射到的地方出现了0,说明y1不为这个集合的元素,y2就是这个集合的元素,因为y2映射的地方都是1.


  这是典型的以错误率换空间和时间的例子。

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(167) | 评论(0) | 转发(0) |
1

上一篇:mmap优缺点

下一篇:合并IO代码分析

给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值