Algorithm 压缩布卢姆过滤器

Algorithm 压缩布卢姆过滤器,algorithm,data-structures,bloom-filter,Algorithm,Data Structures,Bloom Filter,我对布鲁姆过滤器产生了幻想,所以我开始阅读有关它们的出版物。有一件事,我不明白。我们如何压缩Bloom过滤器,因为它是一个随机0-1向量?您不需要压缩Bloom过滤器 并不是所有的键都有一点代表它们。它们由许多位表示,这些位被重用用于其他键。这就是为什么会出现误报。添加键a、b和c时,将位数设置为1。对于下一个键d,可能表示它的所有位都已设置为1,因此您无需执行任何操作(如果您在插入a、b和c之后检查它是否插入,则会得到假阳性) 您可以将bloom过滤器大小设置为所需的任何大小。如果你把它变大,

我对布鲁姆过滤器产生了幻想,所以我开始阅读有关它们的出版物。有一件事,我不明白。我们如何压缩
Bloom过滤器
,因为它是一个随机
0-1
向量?

您不需要压缩Bloom过滤器

并不是所有的键都有一点代表它们。它们由许多位表示,这些位被重用用于其他键。这就是为什么会出现误报。添加键a、b和c时,将位数设置为1。对于下一个键d,可能表示它的所有位都已设置为1,因此您无需执行任何操作(如果您在插入a、b和c之后检查它是否插入,则会得到假阳性)

您可以将bloom过滤器大小设置为所需的任何大小。如果你把它变大,你会占用更多的空间,但你会减少误报。如果你把它变小,你也会增加误报

如果你真的需要使布卢姆过滤器变小,将它的大小设置为你能做的,然后检查假阳性率。您可以通过拾取一组不同的关键点来执行此操作,检查bloom过滤器是否表示它们已插入,然后插入它们(以某种随机顺序)。确保键的数量代表您的实际用例

你可以通过一些压缩算法,但正如你所说,这是一个随机的0-1向量,所以不要期望获得很多


通常,在进行一些昂贵的查找/读取之前,bloom过滤器被用作快速检查是否存在。你需要它在内存中是快速的(如果你不关心速度,你只需要做查找),你需要它解压缩。如果它足够小,可以保存在内存中,那么压缩它通常没有意义。

您不需要压缩bloom过滤器

并不是所有的键都有一点代表它们。它们由许多位表示,这些位被重用用于其他键。这就是为什么会出现误报。添加键a、b和c时,将位数设置为1。对于下一个键d,可能表示它的所有位都已设置为1,因此您无需执行任何操作(如果您在插入a、b和c之后检查它是否插入,则会得到假阳性)

您可以将bloom过滤器大小设置为所需的任何大小。如果你把它变大,你会占用更多的空间,但你会减少误报。如果你把它变小,你也会增加误报

如果你真的需要使布卢姆过滤器变小,将它的大小设置为你能做的,然后检查假阳性率。您可以通过拾取一组不同的关键点来执行此操作,检查bloom过滤器是否表示它们已插入,然后插入它们(以某种随机顺序)。确保键的数量代表您的实际用例

你可以通过一些压缩算法,但正如你所说,这是一个随机的0-1向量,所以不要期望获得很多

通常,在进行一些昂贵的查找/读取之前,bloom过滤器被用作快速检查是否存在。你需要它在内存中是快速的(如果你不关心速度,你只需要做查找),你需要它解压缩。如果它足够小,可以保存在内存中,那么压缩它通常是没有意义的。

这篇论文(pdf)解释了它的基本思想。在该文件第3页,他们说:

但是,假设我们选择k,以便 m位阵列为1,概率为1/3。那我们就可以占便宜了 利用这一事实来压缩m位阵列并减少传输 尺寸

因此,与其设计一个向量,使一个位被设置的概率为1/2,这将创建一个“随机向量”,不能很好地压缩,相反,他们摆弄哈希函数的数量来影响概率。生成的数组大约是1/3,0/3,这应该证明是更可压缩的。

这篇论文(pdf)解释了总体思路。在该文件第3页,他们说:

但是,假设我们选择k,以便 m位阵列为1,概率为1/3。那我们就可以占便宜了 利用这一事实来压缩m位阵列并减少传输 尺寸


因此,与其设计一个向量,使一个位被设置的概率为1/2,这将创建一个“随机向量”,不能很好地压缩,相反,他们摆弄哈希函数的数量来影响概率。生成的数组大约为三分之一1,三分之二0,这应该证明是更可压缩的。

还有另一个数据结构-压缩bloom filter。这就是我所要求的。还有另一种数据结构——压缩布鲁姆过滤器。这就是我的要求。你为什么要压缩Bloom过滤器?您是否尝试过压缩一个过滤器以查看您的假设是否正确?在许多关于
bloomfilter
filter压缩的出版物中都提到过。我甚至无法想象压缩随机向量,所以我要求阅读论文:*压缩的Bloom过滤器“他们用散列函数玩游戏,这使得数组不像随机向量,因此压缩效果更好。它已经在我的书签中:)我希望有人能解释一下压缩的这一部分。我有一种感觉,他们称之为选择最佳大小压缩。如果你首先向我提供那篇论文的链接,并明确询问你不了解的部分,那就太好了。你需要更仔细地研究那篇论文,因为你的问题的答案在第3页上已经非常清楚了。你为什么要压缩Bloom过滤器?您是否尝试过压缩一个过滤器以查看您的假设是否正确?在许多关于
bloomfilter
filter压缩的出版物中都提到过。我甚至无法想象压缩随机向量,所以我要求阅读这篇文章:*压缩的Bloom过滤器“他们用散列函数玩游戏,这使得数组不像随机向量,所以