`
coosummer
  • 浏览: 15087 次
  • 性别: 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
分享到:
评论

相关推荐

    Go-一个简单的golang布隆过滤器

    布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。在Go语言中实现一个简单的布隆过滤器可以帮助我们高效地处理大数据集,尤其是在内存有限的情况下。以下是对这个主题的详细...

    java实现的布隆过滤器算法

    布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否在一个集合中。它可能会误判,但不会漏判,即如果它说一个元素在集合中,那可能是错误的,但如果它说一个元素不在集合中,那么...

    bloom filter(C#版自制布隆过滤器)

    布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它是由 Burton Howard Bloom 在1970年提出的,主要应用于大数据存储和检索,尤其在数据库、缓存系统和网络搜索等领域有广泛...

    转载:布隆过滤器算法

    根据给定的信息,本文将详细解释布隆过滤器的基本概念、工作原理以及通过提供的C/C++实现代码来深入了解其实际应用。 ### 布隆过滤器简介 布隆过滤器是一种空间效率极高的概率型数据结构,用于测试一个元素是否在...

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

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

    布隆过滤器之C++实现

    C++实现的布隆过滤器,其中使用到的bitset也是自己简单实现的一个BitContainer。可以处理千万条到亿条记录的存在性判断。做成dll可以在很多场合使用,如自己写爬虫,要判断一个url是否已经访问过,判断一个单词是否...

    布隆过滤器C源码-bloomfilter.rar

    布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它是由 Burton Howard Bloom 在1970年提出的,主要应用于大数据和分布式系统中,以减少内存消耗并提高查询效率。在C语言实现...

    【技术分享】Bloomfilter布隆过滤器.pptx

    布隆过滤器是一种高效的空间节省的数据结构,用于判断一个元素是否可能在一个集合中,但可能会产生一定的误判率。它由一个很长的二进制向量和多个独立的哈希函数组成。布隆过滤器的基本原理是,当一个元素被添加到...

    布隆过滤器python库

    布隆过滤器是一种概率数据结构,用于判断一个元素是否可能在一个集合中存在。它通过使用位数组和几个独立的哈希函数来实现,具有高效、节省空间的特点,但可能会产生假阳性错误,即误判一个不在集合中的元素为在集合...

    布隆过滤器的实现,以及测试用例,简单易懂并做了一些注释

    布隆过滤器是一种概率型数据结构,用于判断一个元素是否可能在一个集合中。它是由Burton Howard Bloom在1970年提出的,主要用于解决大数据集的存储和查询问题,尤其在空间效率上有着显著优势。在数据库、搜索引擎、...

    布隆过滤器BloomFilters的一个简单Java库

    布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。在Java开发中,特别是在处理大数据、内存限制或需要快速查询是否存在某个元素的场景下,布隆过滤器是一个...

    9 Redis布隆过滤器插件安装.zip

    Redis布隆过滤器插件是Redis数据库中一个非常实用的扩展功能,主要用于高效地判断一个元素是否可能存在于集合中。由于其独特的数据结构和算法,它在存储空间和查询效率之间取得了良好的平衡,尤其适用于大数据场景下...

    php + redis布隆过滤器.zip

    布隆过滤器是一种概率型数据结构,用于判断一个元素是否可能在一个集合中存在。它在处理大量数据时,能够高效地进行存在性查询,而牺牲一定的误判率。在PHP和Redis结合应用中,布隆过滤器常被用来解决缓存穿透问题,...

    基于布隆过滤器的字符串模糊匹配算法的FPGA实现.pdf

    布隆过滤器是一种高效的概率型数据结构,它用于判断一个元素是否在一个集合中,具有空间效率和时间效率高的优点。在字符串模糊匹配算法中,布隆过滤器能够用来快速排除那些肯定不匹配的字符串,从而减少不必要的精确...

    Go-布隆过滤器的一个Go实现参考bloomfilter.js

    布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它可能会产生误报(false positive),但绝不会产生漏报(false negative)。这种特性使得它在大数据处理、缓存、数据库等...

    布隆过滤器-BloomFilter

    布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。由布隆在1970年提出,它不像传统的数据结构如哈希表那样保证不误判,而是允许有一定的错误率。这种特性使得...

    布隆过滤器-详说布隆过滤器.pdf

    布隆过滤器详解 布隆过滤器是一种空间效率高、查询效率高的数据结构,用于判断某个元素是否存在于一个大型集合中。它由一个二进制向量(位数组)和一系列随机映射函数(哈希函数)组成。布隆过滤器的原理是将元素...

    布隆过滤器 java实现代码

    布隆过滤器 源码 java版 /** * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software ...

    布隆过滤器在网页去重中的应用

    布隆过滤器在网页去重中的应用 , 海量数据处理中的一个绝好应用

Global site tag (gtag.js) - Google Analytics