Bloom Filter Python

简介:

http://bitworking.org/news/380/bloom-filter-resources

The Bloom filter, conceived by Burton H. Bloom in 1970, is a space-efficient probabilistic data structure that is used to test whether an element is a member of a set. False positives are possible, but false negatives are not. Elements can be added to the set, but not removed (though this can be addressed with a counting filter). The more elements that are added to the set, the larger the probability of false positives.

 

http://www.google.com.hk/ggblog/googlechinablog/2007/07/bloom-filter_7469.html

在日常生活中,包括在设计计算机软件时,我们经常要判断一个元素是否在一个集合中。比如在字处理软件中,需要检查一个英语单词是否拼写正确(也就是要判断它是否在已知的字典中);在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上;在网络爬虫里,一个网址是否被访问过等等。

最直接的方法就是将集合中全部的元素存在计算机中,遇到一个新元素时,将它和集合中的元素直接比较即可。一般来讲,计算机中的集合是用哈希表(hash table)来存储的。它的好处是快速准确,缺点是费存储空间。布隆过滤器只需要哈希表 1/8 到 1/4 的大小就能解决同样的问题。

为什么(原文没说, 我的理解), 因为hash如果要work就要避免冲突, 要避免冲突就需要很大的bucket空间(bit). 而Bloom的优点时允许冲突, 但他通过增加hash函数的数量, 来减小同时冲突的概率, 所以可以用更小的空间.

而且hash table的实现往往用的是指针array, 用于指向集合元素, 而bloom的实现用的是bitarray, 因为你不需要得到这个集合元素, 只是知道他有没有.

pybloom 1.0.2

http://pypi.python.org/pypi/pybloom/1.0.2

>>> b = BloomFilter(capacity=100000, error_rate=0.001) 
>>> b.add("test") 
False 
>>> "test" in b 
True


本文章摘自博客园,原文发布日期:2011-07-06

目录
相关文章
|
开发者 Python
Python中的函数式编程:理解map、filter和reduce
【2月更文挑战第13天】 本文深入探讨了Python中函数式编程的三个主要工具:map、filter和reduce。我们将详细解释这些函数的工作原理,并通过实例来展示它们如何使代码更简洁、更易读。我们还将讨论一些常见的误解和陷阱,以及如何避免它们。无论你是Python新手还是有经验的开发者,本文都将帮助你更好地理解和使用这些强大的函数。
|
程序员 Python
案例学Python:filter()函数的用法,高级!
案例学Python:filter()函数的用法,高级!
203 0
|
Python
高阶函数如`map`, `filter`, `reduce`和`functools.partial`在Python中用于函数操作
【6月更文挑战第20天】高阶函数如`map`, `filter`, `reduce`和`functools.partial`在Python中用于函数操作。装饰器如`@timer`接收或返回函数,用于扩展功能,如记录执行时间。`timer`装饰器通过包裹函数并计算执行间隙展示时间消耗,如`my_function(2)`执行耗时2秒。
78 3
|
12月前
|
Python
Python函数式编程-Filter
Python函数式编程-Filter
177 64
|
11月前
|
存储 大数据 Python
案例学Python:filter()函数的用法,高级!
`filter()`函数是Python中处理序列数据的强大工具,它允许我们高效地根据条件过滤元素。通过结合匿名函数、常规函数或直接利用Python的内置逻辑,`filter()`提供了灵活且高效的过滤机制,尤其在大数据处理和内存敏感的应用中展现出其价值。掌握 `filter()`的使用,不仅能提升代码的可读性和效率,还能更好地适应Python的函数式编程风格。
296 2
|
Python
在Python中,`map()`, `filter()` 和 `reduce()` 是函数式编程中的三个核心高阶函数。
【6月更文挑战第24天】Python的`map()`应用函数到序列元素,返回新序列;`filter()`筛选满足条件的元素,生成新序列;`reduce()`累计操作序列元素,返回单一结果。
84 3
|
Python
Python教程:一文了解如何使用Lambda 表达式和 filter函数实现过滤器
在 Python 中,Lambda 表达式是一种匿名函数,也就是没有名称的函数。它允许您快速定义简单的单行函数,通常用于函数式编程中的一些场景,例如在高阶函数中作为参数传递。
565 2
|
分布式计算 Python
【python笔记】高阶函数map、filter、reduce
【python笔记】高阶函数map、filter、reduce
206 0
|
Python
python中的filter
【4月更文挑战第4天】`Python`的`filter()`函数用于从序列中过滤出符合条件的元素,返回迭代器。它接受一个判断函数和一个可迭代对象作为参数,对可迭代对象的每个元素应用函数,返回值为`True`的元素会被保留。若需得到列表,需用`list()`转换。例如,下面的代码定义了一个检测偶数的函数`is_even()`,并用它过滤出一个数字列表中的偶数,最终打印出这些偶数。
110 0
python中的filter
|
存储 数据采集 数据处理
Python filter函数
Python filter函数
Python filter函数

热门文章

最新文章

推荐镜像

更多