为什么bloom过滤器对所有k个散列算法使用相同的数组

时间:2018-03-06 21:08:31

标签: algorithm bloom-filter

据我所知,为了减少单个散列切换导致误报布隆过滤器使用多个(k)哈希值的可能性。

使用k数组是不是更有利,每个哈希算法都有一个,所以如果通过硬币计算,许多输入键被算法A映射到相同的值并存储在同一个数组单元中,然后另一个键是由Alorithm B映射到相同的值 - 这是一个有价值的信息,应该单独标记。 我认为大小为m / k的k个数组应该比单个m大小的数组提供更好的结果。 我错了吗?

1 个答案:

答案 0 :(得分:2)

假设k << m,无所谓。

我们是否使用一个大小为mk大小为m/k的数组,过滤器中存储的内容的单个位将平均碰撞k/m与另一件事存储在同一过滤器中的时间。由于这些单独的成对碰撞基本上是独立的,每个钻头与其他物体碰撞的次数遵循相同的泊松分布,因此碰撞的几率是相同的,因此每个钻头碰撞的几率是相同的,因此假阳性的几率是相同的。

因此,所有这些都与实现简单性有关。