Bloom Filter False Positives

时间:2017-04-24 23:58:53

标签: c++ bloom-filter

我正在实现BloomFilter并且必须通过添加[0,N]元素然后检查过滤器是否包含(n,oo)元素来计算误报的数量。我在计算正确的误报数量时遇到了问题。在我的循环中,每次可能包含()告诉我,我的过滤器包含(n,oo)中的元素,我添加到误报。 但是,例如,当我有一个16个元素的过滤器时,我得到10个误报,误报率为0。

任何帮助将不胜感激

for (int numNotInFilter =size+1; numNotInFilter<2*size; numNotInFilter++)
{
                if (myBloom.possiblyContains((const uint8_t*)(&numNotInFilter), sizeof(int)))
        {
            numOfFalsePositives+=1.0;
        }
}
    double RateOfFalsePositives = (numOfFalsePositives) / ((2 * size) - 1);

1 个答案:

答案 0 :(得分:1)

我在处理bloom filters时曾使用过这个库。有一个例子可以计算遇到误报:

https://github.com/ArashPartow/bloom/blob/master/bloom_filter_example02.cpp

从我可以看出的例子中发生的事情来看,误报概率不仅基于遇到的误报数量,而且也是布隆过滤器大小的函数。