Bloom-Filter算法 其实可以看作 bit-map 的一种扩展。

它把已存在的元素通过多个hash 函数映射到一个 bit 序列,对于每一个元素根据hash函数的结果把相应的 位置置一(这个bit序列通常很长,但是比起记住所有元素它占用的空间是小的)。

在判断一个元素时候已存在的时候,它会把这个元素的多个hash结果对应到bit序列中查看,如果已经全部置为一,那么说明该元素已经存在。

一个Bloom Filter有以下参数:


m bit数组的宽度(bit数)
n 加入其中的key的数量
k 使用的hash函数的个数
f False Positive的比率
(假阳性)

为了把错误率控制在 f,共有 n 个元素的集合作 bloom filter 其他参数可以由以下公式来定值:

m =nlg(1/f)*lge (其中 lg 表示以2为底的对数)

k = - ln(f) / ln(2)

另外对于一个元素非常多的集合要进行 Bloom Filter 操作,必须构造一个返回值范围很大的 hash 函数。可以用 md5 算法生成十六进制的hash值,然后转成十进制:

import hashlibm=hashlib.md5()
m.update('123123123123123123')
print int(m.hexdigest(), base=16)

详见:http://blog.csdn.net/hguisu/article/details/7866173

转载于:https://www.cnblogs.com/rav009/p/5131107.html

Bloom-Filter算法 简介相关推荐

  1. Bloom Filter算法

    一.概念 Bloom Filter的中文翻译叫做布隆过滤器,是1970年由布隆提出的.它实际上是一个很长的二进制向量和一系列随机映射函数.布隆过滤器可以用于检索一个元素是否在一个集合中.它的优点是空间 ...

  2. Bloom Filter算法优化

    Bloom Filter算法优化 基于Redis的Bloom Filter去重,利用Redis的String数据结构,但Redis的String最大只能512M,所以数据过大的时候,需要申请多个去重块 ...

  3. 利用bloom filter算法处理大规模数据过滤

    Bloom Filter是由Bloom在1970年提出的一种快速查找算法,通过多个hash算法来共同判断某个元素是否在某个集合内.可以用于网络爬虫的url重复过滤.垃圾邮件的过滤等等. 它相比hash ...

  4. 布隆过滤器(Bloom Filter)算法

    布隆过滤器原理 开发一个电商项目,因为数据量一直在增加(已达亿级),所以需要重构之前开发好的秒杀功能,为了更好的支持高并发,在验证用户是否重复购买的环节,就考虑用布隆过滤器. 也顺便更加深入的去了解下 ...

  5. Scrapy 爬虫去重效率优化之 Bloom Filter的算法的对接

    From:https://cloud.tencent.com/developer/article/1084962 Python分布式爬虫打造搜索引擎Scrapy精讲-将bloomfilter(布隆过滤 ...

  6. 网页查重算法Shingling和Simhash和bloom filter研究

    网页查重算法Shingling和Simhash和bloom filter研究 在网页查重算法中 shingling 和 simhash 被认为是当前最好的两个算法. shingling算法 shing ...

  7. Bloom Filter 大规模数据处理利器

    2019独角兽企业重金招聘Python工程师标准>>> 最近工作中涉及到bloom Filter,真是一把科研利器呀,大数据.网络.云等等都可以用到! Bloom Filter是由B ...

  8. Bloom Filter与Cuckoo Filter

    Bloom Filter 背景 日常生活中,包括在设计计算机软件时,我们经常要判断一个元素是否在一个集合中.最直接的方法就是将集合中全部的元素存在计算机中,遇到一个新元素时,将它和集合中的元素直接比较 ...

  9. Bloom Filter原理及python实现

    文章目录 一.Bloom Filter存在的意义 二.Bloom Filter算法原理 三.Bloom Filter的优化 哈希函数选择 参数设计 误判率P(true) Hash Function的数 ...

  10. 大数据处理算法--Bloom Filter布隆过滤

    1. Bloom-Filter算法简介 Bloom-Filter,即布隆过滤器,1970年由Bloom中提出.它可以用于检索一个元素是否在一个集合中. Bloom Filter(BF)是一种空间效率很 ...

最新文章

  1. 在Mac配置adb命令
  2. 转: 网卡名字eth0,eth1的修改方法
  3. iOS启动屏 ➕ 闪屏的方法
  4. 人月神话第一篇阅读笔记
  5. Java SE 7 Update 25 –发行说明进行了解释。
  6. (数论)逆元的线性算法
  7. 无任何网络提供程序接受指定的网络路径解决方法
  8. 微技能|几分钟搭建网站内容平台
  9. 必杀技———SQL基础整理系列(一)
  10. 离散数学及其应用傅彦pdf_离散数学及其应用 傅彦 等 高等教育出版社
  11. 迪文屏 DGUS采坑手册
  12. windows网络排查
  13. 上瘾读书笔记:让用户养成使用习惯的四大产品逻辑
  14. 外贸客户开发系列 ,让你在领英Linkedin客户开发上事半功倍
  15. java实现gif动画效果(java显示动态图片)
  16. 解决TypeError: set_ticks() takes 2 positional arguments but 3 were given
  17. 【Antdv】input type=number去掉上下箭头、提示文字、鼠标滚轮
  18. java中I/O流之字节流和字符流学习总结
  19. 四年级计算机教案模板,小学四年级计算机教案模板.doc
  20. 上职高学计算机专业有前途吗,职高有哪些专业前途好有发展前景

热门文章

  1. JS数据结构与算法——冒泡排序(把大的数字依次往后放)
  2. 天池 在线编程 到达终点
  3. 天池 在线编程 圣杯咒语
  4. LeetCode 1361. 验证二叉树(图的出入度)
  5. LeetCode 1028. 从先序遍历还原二叉树(栈)
  6. c++ 一行输出八个数字_R语言笔记(三):数据输入与输出
  7. kafka启动_Kafka安装部署——单节点
  8. springboot设置运行内存_Docker 如何运行多个 Springboot?
  9. redis如何设置定时过期_redis补充6之Redis 设置过期时间
  10. 美团 iOS 工程 zsource 命令背后的那些事儿