A análise tradicional dos filtros Bloom está errada?

17

Este artigo afirma que a análise tradicional da taxa de erro nos filtros Bloom está incorreta e fornece uma análise longa e não trivial da taxa de erro real. O artigo vinculado foi publicado em 2010, mas vi que a análise tradicional dos filtros Bloom continuava sendo ensinada em vários cursos de algoritmos e estruturas de dados.

A análise tradicional dos filtros Bloom é realmente incorreta?

Obrigado!

templatetypedef
fonte

Respostas:

36

A análise tradicional é boa. A análise "tradicional" é, se explicada corretamente, uma aproximação; baseia-se no cálculo do número esperado de células que é 0/1 quando você coloca as chaves no filtro e analisa como se esse fosse o número real. O ponto é que o número de células 0 (ou 1) está fortemente concentrado em torno de suas expectativas, portanto é uma boa aproximação. Isso era bem conhecido e acho que pode ser encontrado, mesmo em meu artigo de pesquisa com Andrei Broder.

Este artigo diz que realmente o desempenho de um filtro Bloom é uma variável aleatória (correspondente à fração real de 0/1) e, se você deseja calcular esse desempenho exatamente por algum motivo, precisa fazer as combinações. Para filtros menores, você verá uma diferença indiscutivelmente não trivial.

Eu conversei com os autores deste artigo. A análise deles é muito boa (embora eu diria que não é profunda ou nova); a motivação deles de que "a análise tradicional está errada" foi, penso eu, exagerada.

Michael Mitzenmacher
fonte
15
Agora a ordem foi restaurada no universo :). E bem-vindo à história, Michael.
Suresh Venkat
12

Deixe-me acrescentar à resposta de Michael que, para os filtros Bloom divididos , onde as funções hash têm intervalos disjuntos, a análise tradicional é realmente correta sem aproximação ou limites de concentração. Isso ocorre porque as probabilidades de erro para diferentes funções de hash se tornam independentes em vez de correlacionadas. A troca de espaço / erro dos filtros Bloom divididos é essencialmente a mesma dos filtros Bloom tradicionais, então acho que essa é uma boa variante para o ensino.

Rasmus Pagh
fonte
2
Parece a mesma ideia que o esboço de contagem-min, exceto nos filtros Bloom.
templatetypedef