Bloomfilter är probabilistiska datastrukturer som används för att testa om ett element är medlem i en uppsättning. De är effektiva när det gäller utrymme och hastighet, vilket gör dem lämpliga för applikationer där snabba medlemskapsfrågor krävs med några acceptabla falska positiva.
Hur Bloom Filters fungerar
Ett Bloom filter använder lite array och flera hashfunktioner. När ett element läggs till, varje hash funktion kartlägger det till en position i array, ställa in dessa bitar till 1. För att kontrollera om ett element existerar, samma hash funktioner tillämpas, och motsvarande bitar undersöks. Om alla är inställda på 1, är elementet sannolikt i uppsättningen; om någon är 0, är det definitivt inte.
Beräkningar för Bloom Filters
Den falska positiva sannolikheten beror på storleken på bit array (m), antalet infogade element (n), och antalet hashfunktioner (k). Sannolikheten (p) av ett falskt positiv kan approximeras av:
][[]]][[]]][[]][]]]]][[[[[[[[[]]]]]]]]]][[[[[[[[[[[[FLT]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
Optimala värden för k och m kan minimera falska positiva för en viss n. Vanligtvis väljs k som:
]] = (m/n) * ln 2[]
Använd fall av blomfilter
Bloomfilter används i olika områden, inklusive:
- Databassystem för snabb medlemskapstestning
- Web caching för att minska diskuppslag
- Distribuerade system för datasynkronisering
- Nätverkssäkerhet för spamfiltrering
Begränsningar av Bloom Filters
Medan effektiva, Bloom filter har begränsningar. De kan producera falska positiva men inte falska negativ. När bitar är inställda på 1, kan de inte återställas, vilket kan leda till felaktigheter över tiden. De är inte heller lämpliga för att ta bort enskilda element utan ytterligare datastrukturer.