【发布时间】:2012-06-15 23:25:45
【问题描述】:
这个问题之前有人问过,但当时没有答案,所以我决定再问一次。
我需要在 C(不是 C++)中有效地实现 Bloom 过滤器。如果没有这样的东西可用,我不介意实施一个,如果有一些很好的参考,这样就不会花费我太多的时间。
我想按比例 (1:20k) 将此数据结构用于插入和测试,因此它主要是测试密集型的。待测数据为64位整数。
【问题讨论】:
-
这是概率性的。如果您想要确切的答案,请使用 Union Find Disjoint Set。在topcoder上搜索这个,应该有教程。
-
如果您正在编写 C,这不是您需要通用库的那种东西。它应该少于 100 行代码,并且应该比集成第三方库花费更少的时间。只需在 Wikipedia 或类似网站上阅读您最喜欢的算法描述即可。
-
@R 编写它会花费我所知道的更少的时间,但是有效地编写它以便它可以很好地扩展是一个问题。我必须以 10^7 的顺序测试数据的成员资格,并使此查询比对 equi 连接结果的 count(*) 查询更快。在我的实施过程中,我连一毫秒都无法承受
-
效率取决于您选择的任何散列函数(快速但碰撞概率低)和表示过滤器的效率(例如,如果您不进行计数,则为位图筛选);除此之外,没有什么可以做的优化了。
-
你能告诉我一些我可以读到的关于适合此目的的哈希函数的地方
标签: c bloom-filter