¿Está mal el análisis tradicional de los filtros Bloom?

17

Este documento afirma que el análisis tradicional de la tasa de error en los filtros Bloom es incorrecto, luego proporciona un análisis extenso y no trivial de la tasa de error real. El documento vinculado se publicó en 2010, sin embargo, he visto que el análisis tradicional de los filtros Bloom continuó siendo enseñado en varios algoritmos y cursos de estructuras de datos.

¿Es el análisis tradicional de los filtros Bloom realmente incorrecto?

¡Gracias!

templatetypedef
fuente

Respuestas:

36

El análisis tradicional está bien. El análisis "tradicional" es, si se explica correctamente, una aproximación; se basa en calcular el número esperado de celdas que son 0/1 cuando hash las claves en el filtro, y luego analizar como si ese fuera el número real. El punto es que el número de celdas que son 0 (o 1) están estrechamente concentradas alrededor de sus expectativas, por lo que es una buena aproximación. Esto era bien conocido y creo que se puede encontrar, incluso en mi artículo de la encuesta con Andrei Broder.

Este documento dice que realmente el rendimiento de un filtro Bloom es una variable aleatoria (correspondiente a la fracción real de entradas 0/1), y si desea calcular ese rendimiento exactamente por alguna razón, debe hacer la combinatoria. Para filtros más pequeños, verá una diferencia posiblemente no trivial.

He hablado con los autores de este artículo. Su análisis está muy bien (aunque diría que no es profundo ni nuevo); su motivación de que el "análisis tradicional está mal" fue, creo, exagerada.

Michael Mitzenmacher
fuente
15
El orden ahora ha sido restaurado al universo :). Y bienvenido a la teoría, Michael.
Suresh Venkat
12

Permítanme agregar a la respuesta de Michael que para los filtros Bloom divididos , donde las funciones hash tienen rangos disjuntos, el análisis tradicional es correcto sin aproximación ni límites de concentración. Esto se debe a que las probabilidades de error para diferentes funciones hash se vuelven independientes en lugar de correlacionadas. La compensación de espacio / error para los filtros Bloom divididos es esencialmente la misma que para los filtros Bloom tradicionales, así que creo que esta es una buena variante para la enseñanza.

Rasmus Pagh
fuente
2
Esa parece ser la misma idea que el boceto de conteo min, excepto con los filtros de Bloom.
templatetypedef