Является ли традиционный анализ фильтров Блума неправильным?


17

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

Действительно ли традиционный анализ фильтров Блума действительно неверен?

Благодарность!

Ответы:


36

Традиционный анализ в порядке. «Традиционный» анализ, если он правильно объяснен, является приближением; он основан на расчете ожидаемого количества ячеек, равных 0/1, когда вы хэшируете ключи в фильтре, а затем на анализе, как если бы это было действительное число. Дело в том, что количество ячеек, которые равны 0 (или 1), тесно сконцентрировано вокруг их ожидания, поэтому это хорошее приближение. Это было хорошо известно, и, думаю, его можно найти даже в моей обзорной статье с Андреем Бродером.

В этой статье говорится, что на самом деле производительность фильтра Блума является случайной величиной (соответствующей фактической доле записей 0/1), и если по какой-то причине вы хотите точно рассчитать эту производительность, вам нужно выполнить комбинаторику. Для более мелких фильтров вы увидите, возможно, нетривиальную разницу.

Я разговаривал с авторами этой статьи. Их анализ все хорошо и хорошо (хотя я бы сказал, что он не глубокий или новый); их мотивация, согласно которой «традиционный анализ ошибочен», я думаю, была преувеличена.


15
Порядок теперь восстановлен во вселенной :). И добро пожаловать в историю, Майкл.
Суреш Венкат

12

Позвольте мне добавить к ответу Майкла, что для расщепленных фильтров Блума, где хеш-функции имеют непересекающиеся диапазоны, традиционный анализ действительно верен без аппроксимации или каких-либо концентрационных границ. Это связано с тем, что вероятности ошибок для разных хеш-функций становятся скорее независимыми, чем коррелированными. Компромисс между пробелами и ошибками для расщепленных фильтров Блума, по сути, такой же, как и для традиционных фильтров Блума, поэтому я думаю, что это хороший вариант для обучения.


2
Это похоже на ту же идею, что и на скриншоте, за исключением фильтров Блума.
templatetypedef
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.