`
coosummer
  • 浏览: 14410 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

布隆过滤器

阅读更多
作用:用来判断某个元素是否在一个集合中
优点:占用内存空间少,是使用哈希表的空间的1/8;
缺点:有一定的误判率(但不会漏判);不可删除集合中的元素;
原理:使用M个bit的数组表示集合,将待查询的元素进行Md5摘要后生成128位串,然后分成K个字串,分别和1...k结合后,再传给hash函数生成不同的数,这些生成的数作为索引查找bit数组中的值,如果都是1,则代表元素存在于集合中;
空间占用分析:以1亿个8byte的集合为例
(1)使用Hash表作为集合,需要8*10^8*2 byte=1.6GB,乘以2,是因为Hash表的空间利用率超过50%后,查找的时间复杂度比较高(使用open addressing避免hash冲突的情况下:参考http://whitesock.iteye.com/blog/707708
(2)使用布隆过滤,选k=8,当空间利用率为1/2时的误判率为万分之一,空间占用为8*10^8*2=200MB,为Hash表的1/8
参数调整:只要设置添加的元素数n和预期的误判率p,则可计算出bit数M和k
分享到:
评论

相关推荐

    python使用布隆过滤器的实现示例

    主要介绍了python使用布隆过滤器的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Python+Redis实现布隆过滤器

    布隆过滤器是什么  布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比...

    布隆过滤器(Bloom Filter)的Java实现方法

    下面小编就为大家带来一篇布隆过滤器(Bloom Filter)的Java实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    简单实现的布隆过滤器

    自动清空过滤器内部信息的使用比率,传null则表示不会自动清理,当过滤器使用率达到100%时,则无论传入什么数据,都会认为在数据已经存在了当希望过滤器使用率达到80%时自动清空重新使用,则传入0.8

    python实现布隆过滤器及原理解析

    在学习redis过程中提到一个缓存击穿的问题, 书中参考的解决方案之一是使用布隆过滤器, 那么就有必要来了解一下什么是布隆过滤器。在参考了许多博客之后, 写个总结记录一下。 一、布隆过滤器简介 什么是布隆过滤器...

    bitmap和布隆过滤器简单总结

    一、BitMap 解决的问题:大数据量下的排序、查找、去重。 1、关键 通过 bit位 表示一个数值的状态(是否存在),那么1MB能大约表示 800万数值 (1,000,000B * 8 bit ) 2、局限性: 1、内存限制:10位的数值(即99亿...

    布隆过滤器(bloom filter)及php和redis实现布隆过滤器的方法

    主要介绍了布隆过滤器(bloom filter)介绍以及php和redis实现布隆过滤器实现方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

    java实现的布隆过滤器算法

    使用java实现的布隆过滤器算法,jdk-1.7,使用java实现的布隆过滤器算法,jdk-1.7,使用java实现的布隆过滤器算法,jdk-1.7,

    BloomJS:布隆过滤器JavaScript实现

    布隆过滤器JavaScript实现 用法 要在您的项目中使用BloomJS,只需从dist目录中导入bloom.min.js文件即可! 构造函数: var bloom = new Bloom(k, m, n, hashFunction) k :散列数量,默认为Math.max(Math.round(m ...

    HashingFunctions:为布隆过滤器实现散列函数

    ###哈希函数 散列函数是一个函数,它接受一些输入(对于这个 repo,我们将处理字符串),并输出指定范围内的整数。 散列函数有四个主要属性要...布隆过滤器是空间高效的数据结构,可用于存储集合并确定元素是否是该集合

    布隆过滤器(利用布隆过滤器实现文字的嵌入和查找功能)

    布隆过滤器,大家学过数据结构的应该都清楚,一般的字典树要实现嵌入和查找都内存的消耗非常大,布隆过滤器有BloomFilter,string, BKDRHash, APHash, DJBHash> bf五个参数你要查找的元素个数,查找元素类型,三个...

    布隆过滤器算法代码

    比如说,一个象 Yahoo,Hotmail 和 Gmai 那样的公众电子邮件(email)提供商,总是需要过滤来自发送垃圾邮件的人(spamer)的垃圾邮件。一个办法就是记录下那些发垃圾邮件的 email 地址。由于那些发送者不停地在注册...

    通过实例解析布隆过滤器工作原理及实例

    布隆过滤器 布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “一定不存在或者可能存在”。 相比于传统的 List、Set、Map 等数据...

    JAVA实现较完善的布隆过滤器的示例代码

    主要介绍了JAVA实现较完善的布隆过滤器的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Redis 中的布隆过滤器的实现

    什么是『布隆过滤器』 布隆过滤器是一个神奇的数据结构,可以用来判断一个元素是否在一个集合中。很常用的一个功能是用来去重。在爬虫中常见的一个需求:目标网站 URL 千千万,怎么判断某个 URL 爬虫是否宠幸过?...

    布隆过滤器的概述及Python实现方法

    布隆过滤器是一种概率空间高效的数据结构。它与hashmap非常相似,用于检索一个元素是否在一个集合中。这篇文章主要介绍了布隆过滤器的概述及Python实现,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics