Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10784
  • 博文数量: 7
  • 博客积分: 77
  • 博客等级: 民兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-29 18:30
文章分类
文章存档

2012年(2)

2011年(5)

我的朋友
最近访客

分类: LINUX

2011-12-13 16:55:22

bloom filter 对于查询某个元素key是否存在于某个元素集合s中很有用,当不要求零错误率时bloom filter在海量数据查询中性能很好。
bloom filter 由3各部分组成:元素集合key,k个hash函数,一个长度为m的位数组。位数组中的元素值为0或者1.bloom filter只支持插入和查询操作,不支持删除操纵。
插入:
每个hash函数都对要插入的key进行hash计算,将计算结果对应的位数组位置为1.例如:
key=foo;
hash1(foo)=3;
hash2(foo)=8;
hash3(foo)=13.
再把位数组的第3,8,13位置为1,如果原来是就是1则保持1,如果原来是0则改为1.
查询:
对要查询的key进行hash计算,再看位数组对应的位是否为1,如果全部为1则key可能在集合中,如果有1个或者多个数组位为0,则key不在集合中。
key=foo1;
hash1(foo1)=2;
hash2(foo1)=6;
hash(foo1)=9.
然后查看位数组的第2,6,9,位是否为1,如果全部为1,则foo1可能在集合中。
阅读(350) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~