2011-05-24 9 views
5

Capisco cosa rende i filtri di fioritura una struttura di dati interessante; tuttavia, trovo difficile capire veramente quando puoi usarli poiché devi ancora eseguire l'operazione costosa che stai cercando di evitare per essere certo di non aver trovato un falso positivo. A causa di ciò, in genere non aggiungerebbero un sacco di spese generali? Ad esempio l'articolo di Wikipedia per i filtri di fioritura suggerisce che possono essere utilizzati per la sincronizzazione dei dati. Vedo come sarebbe fantastico la prima volta quando il filtro bloom è vuoto ma dici che non hai cambiato nulla e vai a sincronizzare di nuovo i tuoi dati. Ora ogni ricerca del filtro di fioritura segnalerà che il file è già stato copiato, ma non dovremmo ancora preformare il task di ricerca più lento che stavamo cercando di evitare per assicurarci che fosse corretto?Quando è utile un filtro Bloom?

+0

Un collega Stacker [ha chiesto informazioni sulle applicazioni di filtro Bloom di prima mano] (http://stackoverflow.com/questions/3075301/what-problems-have-you-solved-using-bloom-filters) che potresti trovare interessante da sfogliare. – sarnold

+0

Quell'altra domanda è stata rimossa :-( – Spaceghost

risposta

5

Fondamentalmente, si utilizzano i filtri Bloom per evitare il lungo e arduo compito di provare che un elemento non esiste nella struttura dei dati. È quasi sempre più difficile determinare se manca qualcosa piuttosto che se esiste, quindi il filtro aiuta a sostenere le perdite alla ricerca di cose che comunque non troverai. Non sempre funziona, ma quando si raccoglie un enorme vantaggio.

+0

Ok, ho pensato che fosse qualcosa di simile ma questo ha contribuito a solidificarlo. Grazie. – blcArmadillo

0

I filtri di fioritura sono molto efficienti nel caso di richieste di appartenenza, cioè per scoprire se un elemento appartiene all'insieme. Il numero di elementi nel set non influisce sul rendimento della query.