C语言中bloom过滤器的通用哈希函数实现

C语言中bloom过滤器的通用哈希函数实现,c,bloom-filter,universal-hashing,C,Bloom Filter,Universal Hashing,im使用bloom过滤器模拟集合相交近似。我尝试了很多简单的散列函数来将值散列到过滤器中。但它不善于避免碰撞。所以有人提出了一个通用哈希函数。但我不确定它是如何工作的。我的程序设计为只将密钥传递给哈希函数,哈希函数返回哈希。有人能帮我写代码吗? 谢谢当与bloom过滤器一起使用时,不要担心哈希函数的冲突。在这种情况下,您不必处理碰撞。只需获取k个不同的函数,在插入元素时,这些函数在m位数组中设置k位。在查询时,再次使用所有k哈希函数检查所有k位;如果其中任何一个未设置,则搜索为false。如果所

im使用bloom过滤器模拟集合相交近似。我尝试了很多简单的散列函数来将值散列到过滤器中。但它不善于避免碰撞。所以有人提出了一个通用哈希函数。但我不确定它是如何工作的。我的程序设计为只将密钥传递给哈希函数,哈希函数返回哈希。有人能帮我写代码吗?
谢谢

当与bloom过滤器一起使用时,不要担心哈希函数的冲突。在这种情况下,您不必处理碰撞。只需获取k个不同的函数,在插入元素时,这些函数在m位数组中设置k位。在查询时,再次使用所有k哈希函数检查所有k位;如果其中任何一个未设置,则搜索为false。如果所有这些都设置好了,则无法得出任何结论(假阳性结果)。这在wiki中有明确的解释:


具体来说,问题出在哪里?你走错了方向。如果您有一个完美的通用哈希函数,那么使用bloom过滤器将毫无意义。如果你有不完美的,它们是有用的。而非通用的,它需要一组散列函数。