Filtro de floración: evaluando tasa de falsos positivos

Dado un número fijo de bits (por ejemplo, ranura) (m) y un número fijo de función hash (k), ¿cómo se calcula la tasa teórica de falsos positivos (p)?

Segun wikipediahttp://en.wikipedia.org/wiki/Bloom_filter, para una tasa de falsos positivos (p) y un número de elemento (n), el número de bits (m) necesarios viene dado porm = - n * l(p) / (l(2)^2) y el número óptimo de función hash (k) está dado pork = m / n * l(2).

De la fórmula dada en la página de Wikipedia, creo que podría evaluar la tasa teórica de falsos positivos (p) de la siguiente manera:p = (1 - e(-(k * n/m)))^k

Pero Wikipedia tiene otra fórmula para (p):p = e(-m/n*(l(2)^2)) lo cual, supongo, supone que (k) es el número óptimo de función hash.

Para mi ejemplo, tomén = 1000000 ym = n * 2, el valor óptimo para (k) sería 1.386, y la tasa teórica de falsos positivos (p) sería 0.382 según la fórmula anterior. Vamos a elegir el número de funciones, calcular la tasa teórica de falsos positivos (p) dada una fija (k) y calcular el número teórico de bits necesarios (m '):

for k = 1, p = .393 and m' = 1941401
for k = 2, p = .399 and m' = 1909344
for k = 3, p = .469 and m' = 1576527
for k = 4, p = .559 and m' = 1210636

Cuantos más bits se rellenan en el filtro, más falsos positivos obtendremos. Parece lógico.

Pero ¿podría uno confirmar esa fórmula?p = (1 - e(-(k * n/m)))^k ¿Es correcto obtener la tasa teórica de falsos positivos dada una fija (k), (m) y (n)?

Nota: la pregunta parece ya formulada aquí:Con un número fijo de funciones, ¿cómo puedo calcular el tamaño de un filtro Bloom dada la probabilidad de falsos positivos? pero no hay respuesta que coincida con mi pregunta exacta.¿Cuántas funciones hash necesita mi filtro bloom? puede ser de interés, pero de nuevo no es exactamente lo mismo.

Saludos

Respuestas a la pregunta(1)

Su respuesta a la pregunta