Redian新闻
>
谁对bloom filter比较熟悉?
avatar
谁对bloom filter比较熟悉?# JobHunting - 待字闺中
A*e
1
吴军的讲解:
布隆过滤器是由巴顿.布隆于一九七零年提出的。它实际上是一个很长的二进制向量和
一系列随机映射函数。我们通过上面的例子来说明起工作原理。
假定我们存储一亿个电子邮件地址,我们先建立一个十六亿二进制(比特),即两亿字
节的向量,然后将这十六亿个二进制全部设置为零。对于每一个电子邮件地址 X,我们
用八个不同的随机数产生器(F1,F2, ...,F8) 产生八个信息指纹(f1, f2, ..., f8
)。再用一个随机数产生器 G 把这八个信息指纹映射到 1 到十六亿中的八个自然数
g1, g2, ...,g8。现在我们把这八个位置的二进制全部设置为一。当我们对这一亿个
email 地址都进行这样的处理后。一个针对这些 email 地址的布隆过滤器就建成了。
现在,让我们看看如何用布隆过滤器来检测一个可疑的电子邮件地址 Y 是否在黑名单
中。我们用相同的八个随机数产生器(F1, F2, ..., F8)对这个地址产生八个信息指
纹 s1,s2,...,s8,然后将这八个指纹对应到布隆过滤器的八个二进制位,分别是 t1,
t2,...,t8。如果 Y 在黑名单中,显然,t1,t2,..,t8 对应的八个二进制一定是一。这
样在遇到任何在黑名单中的电子邮件地址,我们都能准确地发现。
问题:
1. 一亿个邮件地址,为何要十六亿的位图?
2. 这八个随机数生成器指的是散列函数?如何保证这些函数相互独立?比如一个随机
数生成器可以加参数,当八个用。但这八个结果显然是相关的。
avatar
s*c
2
1. 一亿个邮件地址,为何要十六亿的位图?
八个hash function,每一个元素(这里就是一个单独的邮件地址)分配到16个bit, 这
样保证false positive rate < 0.0574%
http://pages.cs.wisc.edu/~cao/papers/summary-cache/node8.html
2. 这八个随机数生成器指的是散列函数?如何保证这些函数相互独立?比如一个随机
数生成器可以加参数,当八个用。但这八个结果显然是相关的
使用一个随机数生成器加param生成的8个随机数都是相关的。
但是Mitzenmarcher的论文显示, 在Bloom filter的case里, 2个随机数就足够模拟出
其他N个随机数了

f8

【在 A*******e 的大作中提到】
: 吴军的讲解:
: 布隆过滤器是由巴顿.布隆于一九七零年提出的。它实际上是一个很长的二进制向量和
: 一系列随机映射函数。我们通过上面的例子来说明起工作原理。
: 假定我们存储一亿个电子邮件地址,我们先建立一个十六亿二进制(比特),即两亿字
: 节的向量,然后将这十六亿个二进制全部设置为零。对于每一个电子邮件地址 X,我们
: 用八个不同的随机数产生器(F1,F2, ...,F8) 产生八个信息指纹(f1, f2, ..., f8
: )。再用一个随机数产生器 G 把这八个信息指纹映射到 1 到十六亿中的八个自然数
: g1, g2, ...,g8。现在我们把这八个位置的二进制全部设置为一。当我们对这一亿个
: email 地址都进行这样的处理后。一个针对这些 email 地址的布隆过滤器就建成了。
: 现在,让我们看看如何用布隆过滤器来检测一个可疑的电子邮件地址 Y 是否在黑名单

avatar
j*3
3
好像在哪看过,哼哼
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。