Hash del filtro Bloom: più o più grandi?


15

Nell'implementazione di un filtro Bloom, l'approccio tradizionale richiede più funzioni hash indipendenti. Kirsch e Mitzenmacher hanno dimostrato che in realtà ne hai solo bisogno di due, e puoi generare il resto come combinazioni lineari.

La mia domanda è: qual è, davvero, la differenza tra due funzioni hash e una con il doppio dell'entropia?

Questo deriva dal guardare cosa realmente fai con l'output delle tue funzioni di hash: prenderai il tuo (diciamo) valore di hash a 64 bit e lo ridimensionerai alla dimensione del tuo vettore di bit, che è probabilmente significativamente inferiore a 2 64 . Questa è chiaramente una trasformazione che perde entropia (tranne nel raro caso in cui le dimensioni dell'hash e la capacità del filtro coincidano esattamente). Supponendo che il mio filtro abbia meno di 2 32 voci, cosa mi impedisce di dividere il mio valore di hash a 64 bit in due hash a 32 bit e di prendere combinazioni lineari di quelle? O utilizzarlo per seminare un PRNG?

In altre parole, quante informazioni devo effettivamente sapere su ogni elemento che inserisco in un filtro Bloom per garantire che il tasso di falsi positivi standard sia valido? O più in generale, qual è la relazione tra quanto riesco a distinguere gli elementi (quanti bit uso per descriverli) e come funziona il mio filtro Bloom?

Sembra che riesca a cavarmela con bit per una dimensione del filtro di , o equivalentemente per memorizzare elementi con probabilità falsa positiva ....2lg(m)m2(lg(-nlnp)-2lg(ln2))np

Risposte:


16

Hai ragione a pensare alle funzioni di hash in termini di "bit casuali prodotti". Quindi, se si dispone di una funzione hash che produce un hash a 64 bit, è possibile trattare come 4 hash a 16 bit (suddividendoli) e così via.

Per lo schema sopra descritto (che dovrebbe essere attribuito a Dillinger e Manolios; Kirsch / Mitzenmacher lo ha appena analizzato), ciò significa che hai ragione; se hai una singola funzione hash con bit, dovresti andare bene.2lg(m)


5
Benvenuto in cstheory, Michael :)
Suresh Venkat,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.