Wikipedia dice:Quante funzioni hash ha bisogno del mio filtro bloom?
Un filtro Bloom vuoto è una matrice di bit di m bit, pronto a 0. Non ci deve essere k diverse funzioni di hash definite, ciascuna delle quali mappe o hash qualche elemento insieme ad una delle la matrice m si posiziona con una distribuzione casuale uniforme.
Ho letto l'articolo, ma quello che non capisco è come k è determinato. È una funzione delle dimensioni del tavolo?
Inoltre, nelle tabelle hash che ho scritto ho utilizzato un algoritmo semplice ma efficace per aumentare automaticamente le dimensioni dell'hash. Fondamentalmente, se mai più del 50% dei bucket nella tabella fosse riempito, raddopperei le dimensioni del tavolo. Ho il sospetto che potresti ancora voler fare questo con un filtro di fioritura per ridurre i falsi positivi. Corretta?
semplicemente perfetto. grazie –
Si noti che a causa dell'arrotondamento/troncamento delle differenze e/o della precisione della funzione logaritmo, è possibile che non si ottengano gli stessi numeri esatti nell'esempio se si eseguono tali equazioni tramite la lingua scelta. Per me, 'm = 2075674' e' k = 6,64'. In entrambi i casi, arrotondare entrambi i valori all'intero più vicino e il tasso di falsi positivi sarà abbastanza vicino. Sarebbe interessante avere l'equazione per ricalcolare il valore * effettivo * di 'p', usando i valori calcolati/arrotondati' m' e 'k'. Ancora una volta, non ci dovrebbe essere bisogno di preoccuparsi di avere valori precisi; ballpark è abbastanza buono. –
Trovato l'equazione per calcolare il valore effettivo di 'p' dato il proprio' m 'e' k' calcolato - interessante da confrontare per vedere come qualsiasi arrotondamento potrebbe aver influito sul tasso di falsi positivi accettabile. 'e' è la costante matematica, non un valore dinamico. 'p = e^(- (m/n) * (ln (2)^2))' - grazie a http://stackoverflow.com/a/24071581/2609094 –