Bloom Filter(布隆过滤器)主要用于判断某个元素是否属于集合内,但是这种判断不是一定正确的。
经典问题:
假设你有数量非常庞大的URL集合,现在给你一个新的URL,要你快速判断这个URL是否在上述的URL集合中。
解决这个问题比较原始的方法是:先用一个数组把所有URL存起来,然后再扫描这个数组,判断里面是否有元素与新的这个URL相同。这样做会耗费非常大的空间和时间,是非常不妥的一种...
分类:
其他好文 时间:
2015-04-20 09:32:32
阅读次数:
186
布隆过滤器在很多场合能发挥很好的效果,比如:网页URL的去重,垃圾邮件的判别,集合重复元素的判别,查询加速(比如基于key-value的存储系统)等,下面举几个例子:
有两个URL集合A,B,每个集合中大约有1亿个URL,每个URL占64字节,有1G的内存,如何找出两个集合中重复的URL。
很显然,直接利用Hash表会超出内存限制的范围。这里给出两种思路:
第一种:如果不允许...
分类:
其他好文 时间:
2015-04-18 16:13:57
阅读次数:
123
算法介绍
Bloom Filter的中文名称叫做布隆过滤器,因为他最早的提出者叫做布隆(Bloom),因而而得此名。布隆过滤器简单的说就是为了检索一个元素是否存在于某个集合当中,以此实现数据的过滤。也许你会想,这还不简单,判断元素是否存在某集合中,遍历集合,一个个去比较不就能得出结果,当然这没有任何的问题,但是当你面对的是海量数据的时候,在空间和时间上的代价是非常恐怖的,显然需要更好的办法来...
分类:
编程语言 时间:
2015-04-07 09:58:58
阅读次数:
281
Bloom Filter的中文翻译叫做布隆过滤器,是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。如文章标题所述,本文只是做简单介绍,属于...
分类:
编程语言 时间:
2015-03-29 07:02:02
阅读次数:
214
今天中邪了, 觉得看看bloom filter。 看看海量数据处理的经典算法。
这是1970年提出来。 是用于检测一个元素是不是一个集合的成员。 如果检测结果为True, 则该元素不一定在该集合中。 如果检测结果为False, 表明该元素一定在这个集合中。 这说明bloom filter 具有 100%的召回率。 每个检测请求返回的结果只有两种, 也就是“在集合内(可能错误)” 和 “绝对不...
分类:
其他好文 时间:
2015-03-20 18:47:25
阅读次数:
163
学习网络爬虫讲到布隆过滤器,把算法记录下来。 布隆过滤器是哈希算法的一种改进,以书本过滤email的需求为例子,使用MD5码(128bit,16字节),1亿的数据需要128亿比特(1.6GB的内存)。我们有1亿的数据,如果完全不...
分类:
其他好文 时间:
2015-03-14 15:30:58
阅读次数:
149
2015年2月26日 15:44:41原因: 想用PHP实现一个布隆过滤器算法, 其中要用到位运算, 但是PHP的内置的int类型不给力, 不能支持大整数的位运算 数据一旦太大, 就会变为浮点数表示, 浮点数无法参与位运算... 也试过nodejs, redis 都不行. 用java吧, 还得...
分类:
Web程序 时间:
2015-02-26 16:31:36
阅读次数:
195
【引言】
在日常生活中,包括在设计计算机软件时,我们经常要判断一个元素是否在一个集合中。比如在字处理软件中,需要检查一个英语单词是否拼写正确(也就是要判断 它是否在已知的字典中);在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上;在网络爬虫里,一个网址是否被访问过等等。最直接的方法就是将集合中全部的元素存在计算机中,遇到一个新 元素时,将它和集合中的元素直接比较即可。一般来讲,计算机中的集合是用...
分类:
编程语言 时间:
2015-02-04 12:56:17
阅读次数:
214
我们都知道布隆过滤是用来判断一个元素是否在一个集合中的很有效的方法。比如在WPS字处理软件中,需要检查一个单词是否拼写正确;在FBI中需要判断一个嫌疑犯的名字是否在嫌疑名单上;在网络爬虫里,判断一个网址是否被访问过。最简单的解决办法就是采用HashTable的方法来存储,它的好处是快速且精确,缺点是耗费大量内存空间。所以针对耗费空间大的问题,提出了布隆过滤。但是布隆过滤是有误识别率的,也就是说在集...
分类:
其他好文 时间:
2015-01-01 19:50:29
阅读次数:
222
看见了海量数据去重,找到停留时间最长的IP等问题,有博友提到了Bloom Filter,我就查了查,不过首先想到的是大叔,下面就先看看大叔的风采。 一、布隆过滤器概念引入 (Bloom Filter)是由布隆(Burton Howard Bloom)在1970年提出的。它实际上是由一个很长的二进制....
分类:
其他好文 时间:
2014-12-21 11:28:35
阅读次数:
267