Флуоресцентный фильтр

62
2

Я реализую 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);

спросил(а) 2021-01-25T21:22:29+03:00 4 месяца, 3 недели назад
1
Решение
63

Я использовал эту библиотеку в прошлом при работе с фильтрами цветения. Есть пример, в котором вычисляются ложные срабатывания:

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

Из того, что я могу сказать о том, что происходит в примере, скорость ложноположительной вероятности основана не только на количестве ложных срабатываний, но также зависит от размера фильтра цветения.

ответил(а) 2021-01-25T21:22:29+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема