ब्लूम निस्यंदक

ब्लूम फ़िल्टर एक अंतरिक्ष-कुशल संभाव्य डेटा संरचना है, जिसे 1970 में बर्टन हावर्ड ब्लूम द्वारा परिकल्पित किया गया था, जिसका उपयोग यह परीक्षण करने के लिए किया जाता है कि क्या कोई तत्व (गणित) एक सेट (कंप्यूटर विज्ञान) का सदस्य है। टाइप I और टाइप II त्रुटियां संभव हैं, लेकिन टाइप I और टाइप II त्रुटियां नहीं हैं - दूसरे शब्दों में, एक क्वेरी संभवतः सेट में या निश्चित रूप से सेट में नहीं लौटती है। तत्वों को सेट में जोड़ा जा सकता है, लेकिन हटाया नहीं जा सकता (हालांकि इसे #Counting ब्लूम फिल्टर संस्करण के साथ संबोधित किया जा सकता है); जितने अधिक आइटम जोड़े जाते हैं, झूठी सकारात्मकता की संभावना उतनी ही अधिक होती है।

ब्लूम ने उन अनुप्रयोगों के लिए तकनीक का प्रस्ताव दिया जहां पारंपरिक त्रुटि मुक्त हैश फंकशन तकनीकों को लागू करने पर स्रोत डेटा की मात्रा में अव्यावहारिक रूप से बड़ी मात्रा में मेमोरी की आवश्यकता होगी। उन्होंने 500,000 शब्दों के शब्दकोश के लिए एक हाइफेनेशन एल्गोरिदम का उदाहरण दिया, जिसमें से 90% सरल हाइफ़नेशन नियमों का पालन करते हैं, लेकिन शेष 10% को विशिष्ट हाइफ़नेशन पैटर्न को पुनः प्राप्त करने के लिए महंगे डिस्क एक्सेस की आवश्यकता होती है। पर्याप्त कोर मेमोरी के साथ, सभी अनावश्यक डिस्क एक्सेस को समाप्त करने के लिए एक त्रुटि-मुक्त हैश का उपयोग किया जा सकता है; दूसरी ओर, सीमित कोर मेमोरी के साथ, ब्लूम की तकनीक एक छोटे हैश क्षेत्र का उपयोग करती है लेकिन फिर भी अधिकांश अनावश्यक पहुंच को समाप्त कर देती है। उदाहरण के लिए, एक आदर्श त्रुटि-मुक्त हैश के लिए आवश्यक आकार का केवल 15% हैश क्षेत्र अभी भी 85% डिस्क एक्सेस को समाप्त कर देता है।

आम तौर पर, सेट में तत्वों के आकार या संख्या से स्वतंत्र, 1% झूठी सकारात्मक संभावना के लिए प्रति तत्व 10 अंश  से कम की आवश्यकता होती है।

एल्गोरिथम विवरण
एक खाली ब्लूम फिल्टर का एक सा सरणी है $w$ बिट्स, सभी 0 पर सेट। वहाँ भी होना चाहिए $m$ अलग-अलग हैश फ़ंक्शंस परिभाषित किए गए हैं, जिनमें से प्रत्येक मैप (गणित) या हैश में से किसी एक के लिए कुछ सेट एलिमेंट है $k$ सरणी स्थिति, एक समान यादृच्छिक वितरण उत्पन्न करना। आमतौर पर, $m$ एक छोटा स्थिरांक है जो वांछित झूठी त्रुटि दर पर निर्भर करता है $k$, जबकि $ε$ के लिए आनुपातिक है $m$ और जोड़े जाने वाले तत्वों की संख्या।

एक तत्व जोड़ने के लिए, इसे प्रत्येक को खिलाएं $k$ हैश फ़ंक्शन प्राप्त करने के लिए $k$ सरणी स्थिति। इन सभी स्थितियों पर बिट्स को 1 पर सेट करें।

किसी तत्व के लिए पूछताछ करने के लिए (परीक्षण करें कि यह सेट में है या नहीं), इसे प्रत्येक को फ़ीड करें $k$ हैश फ़ंक्शन प्राप्त करने के लिए $k$ सरणी स्थिति। यदि इन स्थितियों में से कोई भी बिट 0 है, तो तत्व निश्चित रूप से सेट में नहीं है; यदि ऐसा होता, तो सभी बिट्स को सम्मिलित करते समय 1 पर सेट किया गया होता। यदि सभी 1 हैं, तो या तो तत्व सेट में है, या बिट्स को अन्य तत्वों के सम्मिलन के दौरान संयोग से 1 पर सेट किया गया है, जिसके परिणामस्वरूप एक गलत सकारात्मक है। एक साधारण ब्लूम फ़िल्टर में, दो मामलों के बीच अंतर करने का कोई तरीका नहीं है, लेकिन अधिक उन्नत तकनीकें इस समस्या का समाधान कर सकती हैं।

डिजाइनिंग की आवश्यकता $k$ अलग-अलग स्वतंत्र हैश फ़ंक्शंस बड़े के लिए निषेधात्मक हो सकते हैं $k$. एक विस्तृत आउटपुट के साथ एक अच्छे हैश फ़ंक्शन के लिए, ऐसे हैश के विभिन्न बिट-फ़ील्ड के बीच कोई संबंध होने पर बहुत कम होना चाहिए, इसलिए इस प्रकार के हैश का उपयोग कई अलग-अलग हैश फ़ंक्शंस उत्पन्न करने के लिए किया जा सकता है, इसके आउटपुट को कई बिट फ़ील्ड में विभाजित करके। वैकल्पिक रूप से, कोई पास कर सकता है $k$ विभिन्न प्रारंभिक मान (जैसे 0, 1, ..., $k$ − 1) एक हैश फ़ंक्शन के लिए जो प्रारंभिक मान लेता है; या इन मानों को कुंजी में जोड़ें (या जोड़ें)। बड़े के लिए $k$ और/या $m$, झूठी सकारात्मक दर में नगण्य वृद्धि के साथ हैश कार्यों के बीच आजादी को आराम दिया जा सकता है। (विशेष रूप से, व्युत्पन्न करने की प्रभावशीलता दिखाएं $k$ दोहरे हैशिंग का उपयोग करने वाले सूचकांक#वर्धित डबल हैशिंग और डबल हैशिंग#ट्रिपल हैशिंग, डबल हैशिंग के वेरिएंट जो प्रभावी रूप से दो या तीन हैश मानों के साथ सरल यादृच्छिक संख्या जेनरेटर हैं।)

इस सरल ब्लूम फ़िल्टर से किसी तत्व को हटाना असंभव है क्योंकि यह बताने का कोई तरीका नहीं है कि कौन सा है $k$ जिन बिट्स पर यह मैप करता है उन्हें साफ़ किया जाना चाहिए। हालांकि उनमें से किसी एक को सेट करना $k$ बिट्स को शून्य करने के लिए तत्व को हटाने के लिए पर्याप्त है, यह उस बिट पर मैप करने के लिए होने वाले किसी अन्य तत्व को भी हटा देगा। चूंकि सरल एल्गोरिदम यह निर्धारित करने का कोई तरीका नहीं प्रदान करता है कि क्या कोई अन्य तत्व जोड़ा गया है जो तत्व को हटाने के लिए बिट्स को प्रभावित करता है, किसी भी बिट को साफ़ करने से झूठी नकारात्मकता की संभावना उत्पन्न होगी।

ब्लूम फ़िल्टर से किसी तत्व को एक बार हटाने के लिए एक दूसरे ब्लूम फ़िल्टर का अनुकरण किया जा सकता है जिसमें हटाए गए आइटम शामिल हैं। हालांकि, दूसरे फिल्टर में झूठी सकारात्मक समग्र फिल्टर में झूठी नकारात्मक बन जाती है, जो अवांछित हो सकती है। इस दृष्टिकोण में पहले से हटाए गए आइटम को फिर से जोड़ना संभव नहीं है, क्योंकि किसी को इसे हटाए गए फ़िल्टर से हटाना होगा।

अक्सर ऐसा होता है कि सभी कुंजियाँ उपलब्ध होती हैं, लेकिन गणना करना महंगा होता है (उदाहरण के लिए, कई डिस्क पढ़ने की आवश्यकता होती है)। जब झूठी सकारात्मक दर बहुत अधिक हो जाती है, तो फ़िल्टर को पुन: उत्पन्न किया जा सकता है; यह एक अपेक्षाकृत दुर्लभ घटना होनी चाहिए।

अंतरिक्ष और समय के फायदे
झूठी सकारात्मकताओं को जोखिम में डालते हुए, ब्लूम फिल्टर के पास सेट का प्रतिनिधित्व करने के लिए अन्य डेटा संरचनाओं पर पर्याप्त स्थान लाभ होता है, जैसे स्व-संतुलन बाइनरी सर्च ट्री, प्रयास, हैश तालिका, या सरल सरणी डेटा संरचना या प्रविष्टियों की लिंक्ड सूची। इनमें से अधिकांश को कम से कम स्वयं डेटा आइटम को संग्रहीत करने की आवश्यकता होती है, जिसके लिए बिट्स की एक छोटी संख्या से, छोटे पूर्णांकों के लिए, बिट्स की मनमानी संख्या के लिए कहीं भी आवश्यकता हो सकती है, जैसे स्ट्रिंग्स के लिए (tries अपवाद हैं क्योंकि वे समान उपसर्ग वाले तत्वों के बीच भंडारण साझा कर सकते हैं)। हालाँकि, ब्लूम फ़िल्टर डेटा आइटम को बिल्कुल भी संग्रहीत नहीं करता है, और वास्तविक संग्रहण के लिए एक अलग समाधान प्रदान किया जाना चाहिए। लिंक्ड संरचनाओं में पॉइंटर्स के लिए एक अतिरिक्त रैखिक स्थान ओवरहेड होता है। 1% त्रुटि और इष्टतम मान के साथ एक ब्लूम फ़िल्टर $k$, इसके विपरीत, तत्वों के आकार की परवाह किए बिना प्रति तत्व केवल लगभग 9.6 बिट्स की आवश्यकता होती है। यह लाभ आंशिक रूप से इसकी कॉम्पैक्टनेस से आता है, जो सरणियों से विरासत में मिला है, और आंशिक रूप से इसकी संभाव्य प्रकृति से। प्रति तत्व केवल 4.8 बिट्स जोड़कर 1% झूठी-सकारात्मक दर को दस के कारक से कम किया जा सकता है।

हालाँकि, यदि संभावित मानों की संख्या कम है और उनमें से कई सेट में हो सकते हैं, तो ब्लूम फ़िल्टर को नियतात्मक बिट सरणी द्वारा आसानी से पार कर लिया जाता है, जिसके लिए प्रत्येक संभावित तत्व के लिए केवल एक बिट की आवश्यकता होती है। हैश तालिकाएँ स्थान और समय का लाभ प्राप्त करती हैं यदि वे टक्करों को नज़रअंदाज़ करना शुरू करती हैं और केवल तभी स्टोर करती हैं जब प्रत्येक बकेट में एक प्रविष्टि हो; इस मामले में, वे प्रभावी रूप से ब्लूम फ़िल्टर बन गए हैं ${x, y, z}$.

ब्लूम फ़िल्टर में असामान्य संपत्ति भी होती है कि आइटम जोड़ने या यह जांचने के लिए समय की आवश्यकता होती है कि कोई आइटम सेट में है या नहीं, यह एक निश्चित स्थिरांक है, ${x, y, z}$, सेट में पहले से मौजूद आइटम्स की संख्या से पूरी तरह स्वतंत्र। किसी अन्य निरंतर-स्थान सेट डेटा संरचना में यह गुण नहीं है, लेकिन विरल हैश तालिकाओं का औसत एक्सेस समय उन्हें कुछ ब्लूम फ़िल्टर की तुलना में तेज़ बना सकता है। हार्डवेयर कार्यान्वयन में, हालांकि, ब्लूम फ़िल्टर चमकता है क्योंकि इसकी $k$ लुकअप स्वतंत्र हैं और इन्हें समानांतर किया जा सकता है।

इसकी अंतरिक्ष दक्षता को समझने के लिए, सामान्य ब्लूम फ़िल्टर की तुलना उसके विशेष मामले से करना शिक्षाप्रद है जब $m = 18$. अगर $k = 3$, फिर झूठी सकारात्मक दर को पर्याप्त रूप से कम रखने के लिए, बिट्स का एक छोटा सा अंश सेट किया जाना चाहिए, जिसका अर्थ है कि सरणी बहुत बड़ी होनी चाहिए और इसमें शून्य के लंबे रन होने चाहिए। इसके आकार के सापेक्ष सरणी की सूचना सामग्री कम है। सामान्यीकृत ब्लूम फ़िल्टर ($k$ 1 से अधिक) कम झूठी सकारात्मक दर को बनाए रखते हुए कई और बिट्स को सेट करने की अनुमति देता है; यदि पैरामीटर ($k$ और $k$) अच्छी तरह से चुने गए हैं, लगभग आधे बिट सेट हो जाएंगे, और ये स्पष्ट रूप से यादृच्छिक होंगे, अतिरेक को कम करेंगे और सूचना सामग्री को अधिकतम करेंगे।

झूठी सकारात्मकता की संभावना
मान लें कि एक हैश फ़ंक्शन प्रत्येक सरणी स्थिति को समान संभावना के साथ चुनता है। यदि एम सरणी में बिट्स की संख्या है, संभावना है कि तत्व के सम्मिलन के दौरान एक निश्चित हैश फ़ंक्शन द्वारा एक निश्चित बिट 1 पर सेट नहीं किया जाता है
 * $$1-\frac{1}{m}.$$

यदि k हैश फ़ंक्शंस की संख्या है और प्रत्येक का एक दूसरे के बीच कोई महत्वपूर्ण संबंध नहीं है, तो संभावना है कि बिट किसी भी हैश फ़ंक्शन द्वारा 1 पर सेट नहीं है
 * $$\left(1-\frac{1}{m}\right)^k.$$

हम ई (गणितीय स्थिरांक) के लिए प्रसिद्ध पहचान का उपयोग कर सकते हैं-1
 * $$\lim_{m\to\infty} \left(1 - \frac{1}{m}\right)^m = \frac{1}{e}$$

यह निष्कर्ष निकालने के लिए कि, बड़े m के लिए,
 * $$\left(1-\frac{1}{m}\right)^k = \left(\left(1-\frac{1}{m}\right)^m\right)^{k/m} \approx e^{-k/m}.$$

अगर हमने एन तत्व डाले हैं, संभावना है कि एक निश्चित बिट अभी भी 0 है


 * $$\left(1-\frac{1}{m}\right)^{kn} \approx e^{-kn/m};$$

इसलिए संभावना है कि यह 1 है


 * $$1-\left(1-\frac{1}{m}\right)^{kn} \approx 1 - e^{-kn/m}.$$

अब उस तत्व की सदस्यता का परीक्षण करें जो सेट में नहीं है। हैश फ़ंक्शंस द्वारा गणना की गई प्रत्येक k सरणी स्थिति ऊपर की संभावना के साथ 1 है। उन सभी के 1 होने की प्रायिकता, जो कलन विधि  को गलत तरीके से दावा करने का कारण बनेगी कि तत्व सेट में है, अक्सर इस रूप में दिया जाता है


 * $$\varepsilon = \left(1-\left[1-\frac{1}{m}\right]^{kn}\right)^k \approx \left( 1-e^{-kn/m} \right)^k.$$

यह सख्ती से सही नहीं है क्योंकि यह प्रत्येक बिट की सेट होने की संभावनाओं के लिए स्वतंत्रता मानता है। हालाँकि, यह मानते हुए कि यह एक निकट सन्निकटन है, हमारे पास यह है कि झूठी सकारात्मकता की संभावना घट जाती है क्योंकि m (सरणी में बिट्स की संख्या) बढ़ जाती है, और बढ़ जाती है जैसे n (सम्मिलित तत्वों की संख्या) बढ़ जाती है।

स्वतंत्रता ग्रहण किए बिना, झूठी सकारात्मकता की वास्तविक संभावना है


 * $$\frac{1}{m^{k(n+1)}}\sum_{i=1}^m i^k i! {m \choose i} \left\{ {kn \atop i}\right\}$$

जहां {ब्रेसिज़} दूसरी तरह की स्टर्लिंग संख्या को दर्शाता है। स्वतंत्रता की धारणा के बिना एक ही सन्निकटन पर पहुंचने वाला एक वैकल्पिक विश्लेषण मिट्ज़ेनमाकर और उपफाल द्वारा दिया गया है। ब्लूम फ़िल्टर में सभी n आइटम जोड़े जाने के बाद, q को उन m बिट्स का अंश होने दें जो 0 पर सेट हैं। (अर्थात, अभी भी 0 पर सेट किए गए बिट्स की संख्या qm है।) तत्व सेट में नहीं है, किसी भी k हैश फ़ंक्शन द्वारा दी गई सरणी स्थिति के लिए, संभावना है कि बिट 1 पर सेट पाया जाता है $$1-q$$. तो संभावना है कि सभी k हैश फ़ंक्शन उनके बिट को 1 पर सेट करते हैं $$(1 - q)^k$$. इसके अलावा, क्यू का अपेक्षित मूल्य संभावना है कि दी गई सरणी स्थिति प्रत्येक एन आइटम के लिए प्रत्येक के हैश फ़ंक्शन से छूटी हुई है, जो (ऊपर के रूप में) है
 * $$E[q] = \left(1 - \frac{1}{m}\right)^{kn}$$.

यह साबित करना संभव है कि स्वतंत्रता की धारणा के बिना, क्यू अपने अपेक्षित मूल्य के आसपास बहुत दृढ़ता से केंद्रित है। विशेष रूप से, Azuma-Hoeffding असमानता से, वे यह साबित करते हैं
 * $$ \Pr(\left|q - E[q]\right| \ge \frac{\lambda}{m}) \le 2\exp(-2\lambda^2/kn) $$

इस वजह से, हम कह सकते हैं कि झूठी सकारात्मकता की सटीक संभावना है
 * $$ \sum_{t} \Pr(q = t) (1 - t)^k \approx (1 - E[q])^k = \left(1-\left[1-\frac{1}{m}\right]^{kn}\right)^k \approx \left( 1-e^{-kn/m} \right)^k$$

पहले जैसा।

हैश फ़ंक्शंस की इष्टतम संख्या
हैश फ़ंक्शंस की संख्या, k, एक धनात्मक पूर्णांक होना चाहिए। इस बाधा को एक तरफ रखते हुए, किसी दिए गए एम और एन के लिए, के मूल्य जो झूठी सकारात्मक संभावना को कम करता है


 * $$k = \frac{m}{n} \ln 2.$$

बिट्स की आवश्यक संख्या, m, दिए गए n (सम्मिलित तत्वों की संख्या) और एक वांछित झूठी सकारात्मक संभावना ε (और k के इष्टतम मान का उपयोग किया जाता है) की गणना ऊपर की संभावना अभिव्यक्ति में k के इष्टतम मान को प्रतिस्थापित करके की जा सकती है। :
 * $$\varepsilon = \left( 1-e^{-(\frac m n \ln 2) \frac n m} \right)^{\frac m n\ln 2}$$

जिसे सरल बनाया जा सकता है:
 * $$\ln\varepsilon = -\frac{m}{n} \left(\ln 2\right)^2.$$

इस में यह परिणाम:
 * $$m=-\frac{n\ln\varepsilon}{(\ln 2)^2}$$ तो प्रति तत्व बिट्स की इष्टतम संख्या है
 * $$\frac{m}{n}=-\frac{\log_2\varepsilon}{\ln 2}\approx-1.44\log_2\varepsilon$$

हैश फ़ंक्शन k की संगत संख्या के साथ (अखंडता को अनदेखा करते हुए):
 * $$k=-\frac{\ln\varepsilon}{\ln 2}=-\log_2\varepsilon.$$

इसका मतलब यह है कि दी गई झूठी सकारात्मक संभावना ε के लिए, ब्लूम फ़िल्टर एम की लंबाई फ़िल्टर किए जाने वाले तत्वों की संख्या के अनुपात में है और हैश फ़ंक्शंस की आवश्यक संख्या केवल लक्ष्य झूठी सकारात्मक संभावना ε पर निर्भर करती है। सूत्र $$m=-\frac{n\ln\varepsilon}{(\ln 2)^2}$$ तीन कारणों से अनुमानित है। सबसे पहले, और कम से कम चिंता की बात है, यह अनुमानित है $$1 - \frac{1}{m}$$ जैसा $$e^{-\frac{1}{m}}$$, जो एक अच्छा स्पर्शोन्मुख सन्निकटन है (अर्थात, जो m →∞ के रूप में धारण करता है)। दूसरा, अधिक चिंता का विषय, यह मानता है कि सदस्यता परीक्षण के दौरान एक परीक्षण बिट 1 पर सेट होने की घटना इस घटना से स्वतंत्र है कि कोई अन्य परीक्षण बिट 1 पर सेट है। तीसरा, सबसे अधिक चिंता का विषय, यह मानता है कि $$k = \frac{m}{n} \ln 2$$ सौभाग्य से अभिन्न है।

गोयल और गुप्ता, हालाँकि, एक कठोर ऊपरी सीमा दें जो कोई सन्निकटन नहीं करता है और किसी धारणा की आवश्यकता नहीं है। वे दिखाते हैं कि एम बिट्स के साथ एक सीमित ब्लूम फ़िल्टर के लिए झूठी सकारात्मक संभावना ($$ m > 1$$), n तत्व, और k हैश फ़ंक्शन अधिकतम है


 * $$\varepsilon \leq \left( 1-e^{-\frac{k(n+0.5)}{m-1}} \right)^k.$$

इस बाउंड की व्याख्या यह कहकर की जा सकती है कि अनुमानित सूत्र $$\left( 1-e^{-\frac{kn}m} \right)^k$$ अधिक से अधिक आधे अतिरिक्त तत्व और अधिक से अधिक एक कम बिट के दंड पर लागू किया जा सकता है।

ब्लूम फिल्टर में वस्तुओं की संख्या का अनुमान लगाना
ने दिखाया कि ब्लूम फ़िल्टर में आइटम्स की संख्या को निम्न सूत्र से अनुमानित किया जा सकता है,


 * $$ n^* = -\frac{m}{k} \ln \left[ 1 - \frac{X}{m} \right], $$

कहाँ <वर>$$n^*$$ फ़िल्टर में आइटम्स की संख्या का अनुमान है, m फ़िल्टर की लंबाई (आकार) है, k हैश फ़ंक्शन की संख्या है, और X एक पर सेट बिट्स की संख्या है।

सेट का संघ और प्रतिच्छेदन
ब्लूम फिल्टर वस्तुओं के एक समूह को संक्षिप्त रूप से प्रस्तुत करने का एक तरीका है। दो सेटों के बीच प्रतिच्छेदन या संघ के आकार की गणना करने का प्रयास करना आम बात है। ब्लूम फिल्टर का उपयोग चौराहे के आकार और दो सेटों के मिलन का अनुमान लगाने के लिए किया जा सकता है। ने दिखाया कि लंबाई के दो ब्लूम फिल्टर के लिए $m$, उनकी गिनती, क्रमशः के रूप में अनुमान लगाया जा सकता है


 * $$ n(A^*) = -\frac{m}{k} \ln \left[ 1 - \frac{|A|} m \right] $$

और


 * $$ n(B^*) = -\frac{m}{k} \ln \left[ 1 - \frac{|B|} m \right]. $$

उनके संघ के आकार का अनुमान लगाया जा सकता है


 * $$ n(A^*\cup B^*) = -\frac{m}{k} \ln \left[ 1 - \frac{|A \cup B|} m \right], $$

कहाँ $$n(A \cup B)$$ दो ब्लूम फिल्टरों में से किसी एक में सेट बिट्स की संख्या है। अंत में, चौराहे का अनुमान लगाया जा सकता है


 * $$ n(A^*\cap B^*) = n(A^*) + n(B^*) - n(A^* \cup B^*),$$

तीन सूत्रों का एक साथ उपयोग करना।

दिलचस्प गुण

 * हैश टेबल का उपयोग कर एक मानक हैश तालिका के विपरीत # टक्कर समाधान योजना के लिए ओपन एड्रेसिंग, एक निश्चित आकार का ब्लूम फ़िल्टर मनमाने ढंग से बड़ी संख्या में तत्वों के साथ एक सेट का प्रतिनिधित्व कर सकता है; डेटा संरचना भरने के कारण कोई तत्व जोड़ना कभी विफल नहीं होता है। हालाँकि, जब तक फ़िल्टर में सभी बिट्स 1 पर सेट नहीं हो जाते, तब तक तत्वों को जोड़े जाने पर झूठी सकारात्मक दर लगातार बढ़ती जाती है, जिस बिंदु पर सभी प्रश्न सकारात्मक परिणाम देते हैं। ओपन एड्रेसिंग हैशिंग के साथ, झूठी सकारात्मकता कभी उत्पन्न नहीं होती है, लेकिन जब तक यह रैखिक खोज तक नहीं पहुंचती तब तक प्रदर्शन लगातार बिगड़ता जाता है।
 * समान आकार और हैश फ़ंक्शंस के सेट वाले ब्लूम फ़िल्टर के संघ (सेट सिद्धांत) और इंटरसेक्शन (सेट सिद्धांत) को क्रमशः बिटवाइज़ ऑपरेशन OR और AND संचालन के साथ लागू किया जा सकता है। ब्लूम फिल्टर पर यूनियन ऑपरेशन इस अर्थ में दोषरहित है कि परिणामी ब्लूम फिल्टर दो सेटों के मिलन का उपयोग करके स्क्रैच से बनाए गए ब्लूम फिल्टर के समान है। इंटरसेक्ट ऑपरेशन एक कमजोर संपत्ति को संतुष्ट करता है: परिणामी ब्लूम फिल्टर में झूठी सकारात्मक संभावना अधिक से अधिक एक घटक ब्लूम फिल्टर में झूठी सकारात्मक संभावना है, लेकिन स्क्रैच से बनाए गए ब्लूम फिल्टर में झूठी सकारात्मक संभावना से बड़ा हो सकता है। दो सेटों का प्रतिच्छेदन।
 * कुछ प्रकार के आरोपित कोड  को फिजिकल धार नोकदार कार्ड के साथ लागू किए गए ब्लूम फिल्टर के रूप में देखा जा सकता है। एक उदाहरण ज़ेटोकोडिंग है, जिसे 1947 में केल्विन मूर्स द्वारा आविष्कृत किया गया था, जिसमें जानकारी के एक टुकड़े से जुड़ी श्रेणियों का सेट एक कार्ड पर निशानों द्वारा दर्शाया गया है, जिसमें प्रत्येक श्रेणी के लिए चार निशानों का एक यादृच्छिक पैटर्न है।

उदाहरण

 * ड्रोसोफिला मेलानोगास्टर गंध की नवीनता का पता लगाने के लिए ब्लूम फिल्टर के एक संशोधित संस्करण का उपयोग करता है, जिसमें अतिरिक्त विशेषताएं शामिल हैं, जिसमें पहले से अनुभव किए गए उदाहरणों की नई गंध की समानता, और उसी गंध के पिछले अनुभव के बाद का समय शामिल है।
 * एक सामग्री वितरण प्रदाता, स्मार्ट टेक्नोलॉजीज  के सर्वर, वन-हिट-वंडर्स को अपने डिस्क कैश में संग्रहीत होने से रोकने के लिए ब्लूम फिल्टर का उपयोग करते हैं। वन-हिट-वंडर्स वे वेब ऑब्जेक्ट हैं जिनका उपयोगकर्ताओं द्वारा केवल एक बार अनुरोध किया जाता है, कुछ ऐसा जिसे अकामाई ने पाया कि यह उनके कैशिंग इंफ्रास्ट्रक्चर के लगभग तीन-चौथाई पर लागू होता है। वेब ऑब्जेक्ट के लिए दूसरे अनुरोध का पता लगाने के लिए ब्लूम फ़िल्टर का उपयोग करना और उस ऑब्जेक्ट को केवल उसके दूसरे अनुरोध पर कैश करना डिस्क कैश में प्रवेश करने से एक-हिट चमत्कार को रोकता है, डिस्क वर्कलोड को काफी कम करता है और डिस्क कैश हिट दरों में वृद्धि करता है।
 * Google Bigtable, Apache HBase और Apache Cassandra और PostgreSQL गैर-मौजूद पंक्तियों या स्तंभों के लिए डिस्क लुकअप को कम करने के लिए ब्लूम फ़िल्टर का उपयोग करें। महंगे डिस्क लुकअप से बचने से डेटाबेस क्वेरी ऑपरेशन का प्रदर्शन काफी बढ़ जाता है।
 * Google Chrome वेब ब्राउज़र पहले दुर्भावनापूर्ण URL की पहचान करने के लिए ब्लूम फ़िल्टर का उपयोग करता था। किसी भी यूआरएल को पहले एक स्थानीय ब्लूम फिल्टर के खिलाफ जांचा गया था, और केवल अगर ब्लूम फिल्टर ने एक सकारात्मक परिणाम दिया था, तो यूआरएल की पूरी जांच की गई थी (और उपयोगकर्ता ने चेतावनी दी थी, अगर वह भी सकारात्मक परिणाम देता है)।
 * माइक्रोसॉफ्ट बिंग (सर्च इंजन) अपने सर्च इंडेक्स, बिटफनल के लिए मल्टी-लेवल पदानुक्रमित ब्लूम फिल्टर का उपयोग करता है। ब्लूम फिल्टर पिछले बिंग इंडेक्स की तुलना में कम लागत प्रदान करते हैं, जो उलटी फाइलों पर आधारित था।
 * स्क्वीड (सॉफ्टवेयर) वर्ल्ड वाइड वेब प्रॉक्सी वेब कैश कैश डाइजेस्ट के लिए ब्लूम फिल्टर का उपयोग करता है।
 * जब तक ब्लूम फिल्टर के कार्यान्वयन के साथ गोपनीयता भेद्यता का पता नहीं चला, तब तक Bitcoin  ने वॉलेट सिंक्रोनाइज़ेशन को गति देने के लिए ब्लूम फिल्टर का उपयोग किया।
 * हवाओं अभिलेखीय भंडारण प्रणाली पहले से संग्रहीत डेटा का पता लगाने के लिए ब्लूम फिल्टर का उपयोग करती है।
 * SPIN मॉडल चेकर बड़ी सत्यापन समस्याओं के लिए पहुंच योग्य स्थिति स्थान को ट्रैक करने के लिए ब्लूम फ़िल्टर का उपयोग करता है।
 * कैस्केडिंग (सॉफ्टवेयर) एनालिटिक्स फ्रेमवर्क असममित जोड़ को गति देने के लिए ब्लूम फिल्टर का उपयोग करता है, जहां शामिल किए गए डेटा सेट में से एक दूसरे की तुलना में काफी बड़ा होता है (जिसे अक्सर ब्लूम जॉइन डेटाबेस साहित्य में कहा जाता है)।
 * एग्जिम मेल ट्रांसफर एजेंट (एमटीए) अपने रेट-लिमिट फीचर में ब्लूम फिल्टर का इस्तेमाल करता है।
 * मध्यम (प्रकाशन प्लेटफॉर्म) उपयोगकर्ता द्वारा पहले पढ़े गए लेखों की सिफारिश करने से बचने के लिए ब्लूम फिल्टर का उपयोग करता है।
 * Ethereum ब्लॉकचेन पर लॉग को जल्दी से खोजने के लिए एथेरियम ब्लूम फिल्टर का उपयोग करता है।
 * ग्राफाना टेम्पो प्रत्येक बैकएंड ब्लॉक के लिए ब्लूम फिल्टर्स को स्टोर करके क्वेरी प्रदर्शन को बेहतर बनाने के लिए ब्लूम फिल्टर्स का उपयोग करता है। आपूर्ति किए गए खोज मानदंडों को पूरा करने वाले डेटा वाले ब्लॉक को निर्धारित करने के लिए इन्हें प्रत्येक क्वेरी पर एक्सेस किया जाता है

विकल्प
क्लासिक ब्लूम फ़िल्टर उपयोग करते हैं $$1.44\log_2(1/\varepsilon)$$ प्रति सम्मिलित की गई जगह के बिट्स, जहां $$\varepsilon$$ ब्लूम फ़िल्टर की झूठी सकारात्मक दर है। हालाँकि, वह स्थान जो किसी भी डेटा संरचना के लिए ब्लूम फ़िल्टर के समान भूमिका निभाने के लिए कड़ाई से आवश्यक है $$\log_2(1/\varepsilon)$$ प्रति कुंजी। इसलिए ब्लूम फ़िल्टर समतुल्य इष्टतम डेटा संरचना की तुलना में 44% अधिक स्थान का उपयोग करते हैं। इसके बजाय, पग एट अल। एक इष्टतम-स्थान डेटा संरचना प्रदान करें। इसके अलावा, ब्लूम फिल्टर के विपरीत, उनकी डेटा संरचना में झूठी सकारात्मक दर से स्वतंत्र संदर्भ की निरंतर स्थानीयता होती है, जहां कम झूठी सकारात्मक दर होती है $$\varepsilon$$ प्रति क्वेरी अधिक संख्या में मेमोरी एक्सेस की ओर जाता है, $$\log(1/\varepsilon)$$. इसके अलावा, यह ब्लूम फिल्टर के विपरीत, तत्वों को स्पेस पेनल्टी के बिना हटाने की अनुमति देता है। इष्टतम स्थान उपयोग, संदर्भ की निरंतर स्थानीयता, और तत्वों को हटाने की क्षमता के समान बेहतर गुण भी कोयल फ़िल्टर द्वारा प्रदान किए जाते हैं, जिसका एक खुला स्रोत कार्यान्वयन उपलब्ध है।

हैश टेबल, हैश संघनन के आधार पर एक संभाव्य संरचना का वर्णन करें, जो ब्लूम फ़िल्टर की तुलना में महत्वपूर्ण रूप से अधिक सटीक पहचान करें, जब प्रत्येक को इष्टतम रूप से कॉन्फ़िगर किया गया हो। डिलिंगर और मैनोलिओस, हालांकि, बताते हैं कि किसी भी दिए गए ब्लूम फ़िल्टर की उचित सटीकता कई प्रकार की परिवर्धन पर अज्ञात आकार के राज्य रिक्त स्थान की संभावित गणना के लिए आकर्षक बनाती है। हैश संघनन, इसलिए आकर्षक है जब परिवर्धन की संख्या का सटीक अनुमान लगाया जा सकता है; हालाँकि, सॉफ़्टवेयर में बहुत तेज़ होने के बावजूद, हैश संघनन सबसे खराब स्थिति वाले रैखिक पहुँच समय के कारण हार्डवेयर के लिए खराब रूप से अनुकूल है।

ने ब्लूम फ़िल्टर के कुछ रूपों का अध्ययन किया है जो क्लासिक ब्लूम फ़िल्टर की तुलना में या तो तेज़ हैं या कम जगह का उपयोग करते हैं। तेज संस्करण का मूल विचार प्रोसेसर की मेमोरी कैश ब्लॉक (आमतौर पर 64 बाइट्स) के समान आकार वाले एक या दो ब्लॉक में प्रत्येक कुंजी से जुड़े k हैश मान का पता लगाना है। यह संभवतः संभावित मेमोरी कैश मिस की संख्या को कम करके प्रदर्शन में सुधार करेगा। हालांकि प्रस्तावित वेरिएंट में क्लासिक ब्लूम फिल्टर की तुलना में लगभग 32% अधिक जगह का उपयोग करने की खामी है।

अंतरिक्ष कुशल संस्करण एकल हैश फ़ंक्शन का उपयोग करने पर निर्भर करता है जो प्रत्येक कुंजी के लिए श्रेणी में एक मान उत्पन्न करता है $$\left[0,n/\varepsilon\right]$$ कहाँ $$\varepsilon$$ अनुरोधित झूठी सकारात्मक दर है। मूल्यों के अनुक्रम को गोलोम्ब कोडिंग (या कुछ अन्य संपीड़न तकनीक) का उपयोग करके एक स्थान पर कब्जा करने के लिए क्रमबद्ध और संपीड़ित किया जाता है $$n\log_2(1/\varepsilon)$$ बिट्स। किसी दी गई कुंजी के लिए ब्लूम फ़िल्टर को क्वेरी करने के लिए, यह जाँचना पर्याप्त होगा कि क्या इसका संबंधित मूल्य ब्लूम फ़िल्टर में संग्रहीत है। प्रत्येक क्वेरी के लिए संपूर्ण ब्लूम फ़िल्टर को डीकंप्रेस करने से यह संस्करण पूरी तरह से अनुपयोगी हो जाएगा। इस समस्या को दूर करने के लिए मानों के अनुक्रम को समान आकार के छोटे ब्लॉकों में विभाजित किया जाता है जो अलग-अलग संकुचित होते हैं। क्वेरी समय पर केवल आधे ब्लॉक को औसतन डीकंप्रेस करने की आवश्यकता होगी। विसंपीड़न ओवरहेड के कारण, यह संस्करण क्लासिक ब्लूम फिल्टर की तुलना में धीमा हो सकता है लेकिन इसकी भरपाई इस तथ्य से की जा सकती है कि एकल हैश फ़ंक्शन की गणना करने की आवश्यकता है।

क्लासिक ब्लूम फ़िल्टर का एक अन्य विकल्प कोयल फ़िल्टर है, जो कोयल हैशिंग के अंतरिक्ष-कुशल रूपों पर आधारित है। इस मामले में, एक हैश टेबल का निर्माण किया जाता है, जिसमें न तो कुंजियाँ होती हैं और न ही मान, लेकिन कुंजियों के छोटे फ़िंगरप्रिंट (छोटे हैश)। यदि कुंजी को देखने से मिलान करने वाला फ़िंगरप्रिंट मिलता है, तो कुंजी संभवतः सेट में है। कोयल फिल्टर की एक उपयोगी संपत्ति यह है कि वे अद्यतन करने योग्य हैं; प्रविष्टियों को गतिशील रूप से जोड़ा जा सकता है (हैश तालिका पूर्ण होने के कारण विफलता की एक छोटी संभावना के साथ) और हटा दी गई।

xor फ़िल्टर नामक एक दृष्टिकोण का वर्णन करता है, जहाँ वे एक विशेष प्रकार की सही हैश तालिका में फ़िंगरप्रिंट संग्रहीत करते हैं, एक फ़िल्टर का निर्माण करते हैं जो अधिक मेमोरी कुशल है ($$1.23\log_2(1/\varepsilon)$$ बिट्स प्रति कुंजी) और ब्लूम या कोयल फिल्टर की तुलना में तेज़। (समय की बचत इस तथ्य से होती है कि एक लुकअप के लिए बिल्कुल तीन मेमोरी एक्सेस की आवश्यकता होती है, जो सभी समानांतर में निष्पादित हो सकते हैं।) हालांकि, ब्लूम और कोयल फिल्टर की तुलना में फ़िल्टर निर्माण अधिक जटिल है, और निर्माण के बाद सेट को संशोधित करना संभव नहीं है।

एक्सटेंशन और एप्लिकेशन
ब्लूम फिल्टर के 60 से अधिक प्रकार हैं, क्षेत्र के कई सर्वेक्षण, और अनुप्रयोगों का एक सतत मंथन (देखें, उदाहरण के लिए, लुओ, एट अल ). मूल डेटा संरचना और उसके दर्शन के उल्लंघन या कांटे होने के लिए कुछ संस्करण मूल प्रस्ताव से पर्याप्त रूप से भिन्न हैं। यादृच्छिक अनुमान, कंप्रेसिव सेंसिंग और स्थानीयता संवेदनशील हैशिंग  पर अन्य काम के साथ ब्लूम फिल्टर को एकीकृत करने वाला एक उपचार किया जाना बाकी है (हालांकि दासगुप्ता, एट अल देखें) तंत्रिका विज्ञान से प्रेरित एक प्रयास के लिए)।

कैश फ़िल्टरिंग
सामग्री वितरण नेटवर्क बेहतर प्रदर्शन और विश्वसनीयता के साथ उपयोगकर्ताओं को कैश और वेब सामग्री प्रदान करने के लिए दुनिया भर में वेब कैश तैनात करते हैं। ब्लूम फिल्टर का एक प्रमुख अनुप्रयोग यह है कि इन वेब कैश में कौन से वेब ऑब्जेक्ट को स्टोर करना है, यह कुशलतापूर्वक निर्धारित करने में उनका उपयोग होता है। एक विशिष्ट वेब कैश से एक्सेस किए गए लगभग तीन-चौथाई URL एक-हिट-चमत्कार हैं जो उपयोगकर्ताओं द्वारा केवल एक बार एक्सेस किए जाते हैं और फिर कभी नहीं। वेब कैश में वन-हिट-वंडर्स को स्टोर करने के लिए डिस्क संसाधनों की स्पष्ट रूप से बर्बादी है, क्योंकि उन्हें फिर कभी एक्सेस नहीं किया जाएगा। वन-हिट-वंडर्स को कैशिंग से बचाने के लिए, उपयोगकर्ताओं द्वारा एक्सेस किए जाने वाले सभी URL का ट्रैक रखने के लिए ब्लूम फ़िल्टर का उपयोग किया जाता है। एक वेब ऑब्जेक्ट को तभी कैश किया जाता है जब इसे कम से कम एक बार पहले एक्सेस किया गया हो, यानी ऑब्जेक्ट को उसके दूसरे अनुरोध पर कैश किया गया हो। इस तरीके से ब्लूम फिल्टर का उपयोग डिस्क राइट वर्कलोड को काफी कम कर देता है, क्योंकि अधिकांश वन-हिट-वंडर्स डिस्क कैश में नहीं लिखे जाते हैं। इसके अलावा, वन-हिट-वंडर्स को फ़िल्टर करने से डिस्क पर कैश स्थान की बचत होती है, जिससे कैशे हिट दर बढ़ जाती है।

एक परिमित ब्रह्मांड में झूठी सकारात्मकता से बचना
चुंबन एट अल ब्लूम फ़िल्टर के लिए एक नए निर्माण का वर्णन किया गया है जो झूठे नकारात्मक के विशिष्ट गैर-अस्तित्व के अलावा झूठी सकारात्मकता से बचाता है। निर्माण एक परिमित ब्रह्मांड पर लागू होता है जिसमें से सेट तत्व लिए जाते हैं। यह एपस्टीन, गुडरिक और हिर्शबर्ग द्वारा मौजूदा गैर-अनुकूली संयोजी समूह परीक्षण योजना पर निर्भर करता है। विशिष्ट ब्लूम फ़िल्टर के विपरीत, तत्वों को नियतात्मक, तेज़ और सरल-से-गणना कार्यों के माध्यम से एक बिट सरणी में हैश किया जाता है। अधिकतम सेट आकार जिसके लिए झूठे सकारात्मक से पूरी तरह से बचा जाता है, ब्रह्मांड के आकार का एक कार्य है और आवंटित स्मृति की मात्रा से नियंत्रित होता है।

वैकल्पिक रूप से, प्रारंभिक ब्लूम फ़िल्टर मानक तरीके से बनाया जा सकता है और फिर, एक परिमित और ट्रैक्टेबल-गणनीय डोमेन के साथ, सभी झूठे सकारात्मकों को व्यापक रूप से पाया जा सकता है और फिर उस सूची से एक दूसरा ब्लूम फ़िल्टर बनाया जा सकता है; दूसरे फ़िल्टर में झूठी सकारात्मकताओं को इसी तरह तीसरे और इसी तरह से संभाला जाता है। जैसा कि ब्रह्मांड परिमित है और झूठी सकारात्मकता का सेट प्रत्येक चरण के साथ सख्ती से सिकुड़ता है, इस प्रक्रिया के परिणामस्वरूप ब्लूम फिल्टर का एक सीमित झरना होता है जो (इस बंद, परिमित डोमेन पर) केवल सच्चे सकारात्मक और सच्चे नकारात्मक का उत्पादन करेगा। फ़िल्टर कैस्केड में सदस्यता की जाँच करने के लिए, प्रारंभिक फ़िल्टर से पूछताछ की जाती है, और यदि परिणाम सकारात्मक होता है, तो दूसरे फ़िल्टर से परामर्श किया जाता है, और इसी तरह। इस निर्माण का उपयोग CRLite में किया जाता है, वेब पीकेआई के लिए एक प्रस्तावित प्रमाणपत्र निरस्तीकरण स्थिति वितरण तंत्र, और मौजूदा प्रमाणपत्रों के सेट को बंद करने के लिए प्रमाणपत्र पारदर्शिता का उपयोग किया जाता है।

ब्लूम फिल्टर की गिनती
काउंटिंग फिल्टर, ब्लूम फिल्टर को नए सिरे से बनाए बिना डिलीट ऑपरेशन को लागू करने का एक तरीका प्रदान करते हैं। एक काउंटिंग फिल्टर में, एरे पोजीशन (बाल्टी) को सिंगल बिट से मल्टीबिट काउंटर तक बढ़ाया जाता है। वास्तव में, नियमित ब्लूम फिल्टर को एक बिट के बकेट आकार के साथ गिनती फिल्टर के रूप में माना जा सकता है। काउंटिंग फिल्टर किसके द्वारा पेश किए गए थे.

इन्सर्ट ऑपरेशन को बकेट के मान को बढ़ाने के लिए बढ़ाया जाता है, और लुकअप ऑपरेशन यह जाँचता है कि प्रत्येक आवश्यक बकेट गैर-शून्य है। इसके बाद डिलीट ऑपरेशन में संबंधित बकेट में से प्रत्येक के मान को कम करना शामिल है।

बाल्टियों का अंकगणितीय अतिप्रवाह एक समस्या है और इस मामले को दुर्लभ बनाने के लिए बाल्टियों को पर्याप्त रूप से बड़ा होना चाहिए। यदि ऐसा होता है तो ब्लूम फ़िल्टर के गुणों को बनाए रखने के लिए वृद्धि और कमी के संचालन को बाल्टी सेट को अधिकतम संभव मान पर छोड़ देना चाहिए।

काउंटरों का आकार आमतौर पर 3 या 4 बिट्स होता है। इसलिए काउंटिंग ब्लूम फिल्टर स्टैटिक ब्लूम फिल्टर की तुलना में 3 से 4 गुना अधिक जगह का उपयोग करते हैं। इसके विपरीत, की डेटा संरचनाएं और  हटाने की अनुमति भी देता है लेकिन स्थिर ब्लूम फ़िल्टर की तुलना में कम जगह का उपयोग करता है।

गिनती फिल्टर के साथ एक और मुद्दा सीमित मापनीयता है। क्‍योंकि काउंटिंग ब्‍लूम फिल्‍टर टेबल को विस्‍तारित नहीं किया जा सकता है, फिल्‍टर में एक साथ संग्रहित की जाने वाली चाबियों की अधिकतम संख्‍या पहले से ज्ञात होनी चाहिए। एक बार जब तालिका की डिज़ाइन की गई क्षमता पार हो जाती है, तो झूठी सकारात्मक दर तेजी से बढ़ेगी क्योंकि अधिक कुंजियाँ डाली जाती हैं।

ने डी-लेफ्ट हैशिंग पर आधारित एक डेटा संरचना पेश की जो कार्यात्मक रूप से समतुल्य है लेकिन ब्लूम फिल्टर की गणना के रूप में लगभग आधी जगह का उपयोग करती है। इस डेटा संरचना में स्केलेबिलिटी समस्या उत्पन्न नहीं होती है। एक बार डिज़ाइन की गई क्षमता पार हो जाने के बाद, कुंजियों को दोहरे आकार की एक नई हैश तालिका में फिर से डाला जा सकता है।

द्वारा अंतरिक्ष कुशल संस्करण सम्मिलन और विलोपन का समर्थन करके गिनती फ़िल्टर लागू करने के लिए भी उपयोग किया जा सकता है।

ने चर वृद्धि पर आधारित एक नया सामान्य तरीका पेश किया, जो अभी भी विलोपन का समर्थन करते हुए, ब्लूम फ़िल्टर और उनके वेरिएंट की गिनती की झूठी सकारात्मक संभावना में काफी सुधार करता है। ब्लूम फिल्टर की गिनती के विपरीत, प्रत्येक तत्व सम्मिलन पर, हैश किए गए काउंटरों को एक इकाई वृद्धि के बजाय एक हैशेड चर वृद्धि द्वारा बढ़ाया जाता है। किसी तत्व को क्वेरी करने के लिए, काउंटरों के सटीक मानों पर विचार किया जाता है, न कि केवल उनकी सकारात्मकता पर। यदि किसी काउंटर मान द्वारा दर्शाई गई राशि को क्वेरी किए गए तत्व के लिए संबंधित चर वृद्धि से नहीं बनाया जा सकता है, तो एक नकारात्मक उत्तर को क्वेरी में वापस किया जा सकता है।

किम एट अल। (2019) दिखाता है कि काउंटिंग ब्लूम फिल्टर का फाल्स पॉजिटिव k=1 से परिभाषित बिंदु तक घटता है $$k_{opt}$$, और से बढ़ता है $$k_{opt}$$सकारात्मक अनंत तक, और पाता है $$k_{opt}$$गिनती दहलीज के एक समारोह के रूप में।

विकेंद्रीकृत एकत्रीकरण
कुल कार्यों की पूरी तरह से विकेंद्रीकृत संगणना करने के लिए ब्लूम फिल्टर को वितरित डेटा संरचनाओं में व्यवस्थित किया जा सकता है। विकेंद्रीकृत एकत्रीकरण इस उद्देश्य के लिए केंद्रीकृत कम्प्यूटेशनल इकाई को शामिल किए बिना वितरित नेटवर्क के प्रत्येक नोड में स्थानीय रूप से सामूहिक माप उपलब्ध कराता है।

वितरित ब्लूम फिल्टर
साझा-कुछ नहीं वास्तुकला | पैरेलल शेयर्ड-नथिंग मशीनों में मौजूद मल्टीपल प्रसंस्करण तत्व ्स (पीई) का लाभ उठाने के लिए समानांतर ब्लूम फिल्टर लागू किए जा सकते हैं। समानांतर ब्लूम फ़िल्टर के लिए मुख्य बाधाओं में से एक अनियंत्रित डेटा का संगठन और संचार है, जो सामान्य रूप से, शुरुआत में या बैच सम्मिलन पर सभी पीई पर समान रूप से वितरित किया जाता है। डेटा को ऑर्डर करने के लिए दो दृष्टिकोणों का उपयोग किया जा सकता है, या तो प्रत्येक पीई पर संग्रहीत किए जा रहे सभी डेटा पर ब्लूम फ़िल्टर का परिणाम होता है, जिसे ब्लूम फ़िल्टर की प्रतिकृति कहा जाता है, या ब्लूम फ़िल्टर को सभी डेटा को समान भागों में विभाजित किया जाता है, प्रत्येक पीई इसका एक हिस्सा संग्रहीत करता है. दोनों दृष्टिकोणों के लिए एक सिंगल शॉट ब्लूम फ़िल्टर का उपयोग किया जाता है जो संचार मात्रा को कम करने के लिए केवल एक हैश की गणना करता है, जिसके परिणामस्वरूप प्रति तत्व एक फ़्लिप बिट होता है।

वितरित ब्लूम फ़िल्टर पहले उनके स्थानीय पीई पर सभी तत्वों को हैश करके और फिर उन्हें स्थानीय स्तर पर हैश द्वारा सॉर्ट करके शुरू किया जाता है। यह रैखिक समय में किया जा सकता है उदा। बाल्टी छँटाई  और स्थानीय डुप्लिकेट डिटेक्शन की भी अनुमति देता है। छँटाई का उपयोग प्रत्येक समूह के लिए एक ब्लूम फ़िल्टर बनाने के लिए विभाजक के रूप में उनके असाइन किए गए पीई के साथ हैश को समूहित करने के लिए किया जाता है। इन ब्लूम फिल्टर को एनकोड करने के बाद उदा। गोलोम्ब कोडिंग प्रत्येक ब्लूम फ़िल्टर को पीई को पैकेट के रूप में भेजा जाता है जो हैश मानों के लिए जिम्मेदार होता है जहां इसे डाला जाता है। एक पीई पी मूल्यों के बीच सभी हैश के लिए जिम्मेदार है $$p*(s/|\text{PE}|)$$ और $$(p+1)*(s/|\text{PE}|)$$, जहां s सभी डेटा पर ब्लूम फ़िल्टर का कुल आकार है। क्योंकि प्रत्येक तत्व केवल एक बार हैश किया जाता है और इसलिए केवल एक बिट सेट किया जाता है, यह जांचने के लिए कि क्या कोई तत्व ब्लूम फ़िल्टर में डाला गया था, तत्व के हैश मान के लिए जिम्मेदार PE को ही संचालित करने की आवश्यकता है। सिंगल इंसर्शन ऑपरेशंस को कुशलता से भी किया जा सकता है क्योंकि ब्लूम फिल्टर की नकल करने की तुलना में केवल एक पीई के ब्लूम फिल्टर को बदलना पड़ता है, जहां हर पीई को अपने ब्लूम फिल्टर को अपडेट करना होगा। वैश्विक ब्लूम फ़िल्टर को प्रत्येक पीई पर अलग से संग्रहीत करने के बजाय सभी पीई पर वितरित करके ब्लूम फ़िल्टर का आकार बहुत बड़ा हो सकता है, जिसके परिणामस्वरूप बड़ी क्षमता और कम झूठी सकारात्मक दर होती है।

डुप्लिकेट डिटेक्शन एल्गोरिदम को बेहतर बनाने के लिए वितरित ब्लूम फिल्टर का उपयोग किया जा सकता है सबसे 'अद्वितीय' तत्वों को फ़िल्टर करके। इनकी गणना केवल तत्वों के हैश को संप्रेषित करके की जा सकती है, न कि स्वयं उन तत्वों को जो मात्रा में बहुत बड़े हैं, और उन्हें सेट से हटाकर, बाद में उपयोग किए जाने वाले डुप्लिकेट डिटेक्शन एल्गोरिदम के कार्यभार को कम कर सकते हैं।

हैश के संचार के दौरान पीई बिट्स की खोज करते हैं जो एक से अधिक प्राप्त पैकेटों में सेट होते हैं, क्योंकि इसका मतलब यह होगा कि दो तत्वों में एक ही हैश था और इसलिए डुप्लिकेट हो सकते हैं। यदि ऐसा होता है तो एक संदेश जिसमें बिट का इंडेक्स होता है, जो उस तत्व का हैश भी होता है जो डुप्लिकेट हो सकता है, पीई को भेजा जाता है जिसने सेट बिट के साथ एक पैकेट भेजा था। यदि एक प्रेषक द्वारा एक ही पीई को कई सूचकांक भेजे जाते हैं तो सूचकांकों को भी एन्कोड करना फायदेमंद हो सकता है। सभी तत्व जिनके हैश को वापस नहीं भेजा गया था, अब गारंटी है कि वे डुप्लिकेट नहीं होंगे और आगे मूल्यांकन नहीं किया जाएगा, शेष तत्वों के लिए एक पुनर्विभाजन एल्गोरिथम इस्तेमाल किया जा सकता है। पहले वे सभी तत्व जिनका हैश मान वापस भेजा गया था, पीई को भेजे जाते हैं, जिसके लिए उनका हैश जिम्मेदार है। कोई भी तत्व और उसका डुप्लिकेट अब उसी पीई पर होने की गारंटी है। दूसरे चरण में प्रत्येक पीई प्राप्त तत्वों पर डुप्लिकेट पहचान के लिए अनुक्रमिक एल्गोरिदम का उपयोग करता है, जो शुरुआती तत्वों की मात्रा का केवल एक अंश है। डुप्लिकेट के लिए झूठी सकारात्मक दर की अनुमति देकर, संचार की मात्रा को और कम किया जा सकता है क्योंकि पीई को डुप्लिकेट हैश वाले तत्वों को भेजने की ज़रूरत नहीं है और इसके बजाय डुप्लिकेट हैश वाले किसी भी तत्व को डुप्लिकेट के रूप में चिह्नित किया जा सकता है। नतीजतन, डुप्लिकेट डिटेक्शन के लिए झूठी सकारात्मक दर प्रयुक्त ब्लूम फ़िल्टर की झूठी सकारात्मक दर के समान होती है।

प्रत्येक फ़िल्टरिंग चरण में हैश फ़ंक्शन को बदलकर सबसे 'अद्वितीय' तत्वों को फ़िल्टर करने की प्रक्रिया को कई बार दोहराया जा सकता है। यदि केवल एक फ़िल्टरिंग चरण का उपयोग किया जाता है, तो उसे एक छोटी झूठी सकारात्मक दर संग्रहित करनी होती है, हालाँकि यदि फ़िल्टरिंग चरण को एक बार दोहराया जाता है, तो पहला चरण एक उच्च झूठी सकारात्मक दर की अनुमति दे सकता है, जबकि बाद वाले के पास उच्च होता है, लेकिन कम तत्वों पर भी काम करता है। जितने पहले के फ़िल्टरिंग चरण द्वारा पहले ही हटा दिए गए हैं। जबकि दो से अधिक पुनरावृत्तियों का उपयोग संचार की मात्रा को और कम कर सकता है यदि एक सेट में डुप्लिकेट की संख्या कम है, तो अतिरिक्त जटिलताओं के लिए भुगतान कम है।

ब्लूम फिल्टर की नकल करने वाले अपने डेटा को गॉसिपिंग के लिए एक प्रसिद्ध अतिविम  एल्गोरिथम का उपयोग करके व्यवस्थित करते हैं, उदा। पहले प्रत्येक पीई सभी स्थानीय तत्वों पर ब्लूम फ़िल्टर की गणना करता है और इसे संग्रहीत करता है। एक लूप को दोहराते हुए जहां प्रत्येक चरण में पीई अपने स्थानीय ब्लूम फिल्टर को डायमेंशन i पर भेजते हैं और ब्लूम फिल्टर को अपने स्थानीय ब्लूम फिल्टर के साथ डायमेंशन पर प्राप्त करते हैं, प्रत्येक पुनरावृत्ति में प्रत्येक ब्लूम फिल्टर में शामिल तत्वों को दोगुना करना संभव है। ब्लूम फिल्टर भेजने और प्राप्त करने के बाद $$\log |\text{PE}|$$ आयाम प्रत्येक पीई में सभी तत्वों पर वैश्विक ब्लूम फ़िल्टर होता है।

ब्लूम फ़िल्टर की प्रतिकृति तब अधिक कुशल होती है जब प्रश्नों की संख्या ब्लूम फ़िल्टर में शामिल तत्वों की संख्या से बहुत अधिक होती है, वितरित ब्लूम फ़िल्टर की तुलना में ब्रेक ईवन बिंदु लगभग बाद में होता है $$|\text{PE}| * |\text{Elements}| / \log_{f^\text{+}} |\text{PE}|$$ पहुँचता है, के साथ $$f^\text{+}$$ ब्लूम फिल्टर की झूठी सकारात्मक दर के रूप में।

डेटा तुल्यकालन
ब्लूम फिल्टर का उपयोग अनुमानित डेटा तुल्यकालन के लिए किया जा सकता है. काउंटिंग ब्लूम फिल्टर का उपयोग दो सेटों के बीच अंतर की संख्या का अनुमान लगाने के लिए किया जा सकता है और इस दृष्टिकोण का वर्णन में किया गया है.

स्ट्रीमिंग डेटा के लिए ब्लूम फ़िल्टर 
ब्लूम फिल्टर को स्ट्रीमिंग डेटा के संदर्भ में अनुकूलित किया जा सकता है। उदाहरण के लिए, प्रस्तावित स्थिर ब्लूम फ़िल्टर, जिसमें एक काउंटिंग ब्लूम फ़िल्टर होता है, जहाँ एक नए तत्व का सम्मिलन संबंधित काउंटरों को एक मान पर सेट करता है $m$, और उसके बाद केवल एक निश्चित राशि $c$ काउंटर 1 से कम हो जाते हैं, इसलिए मेमोरी में ज्यादातर हाल के तत्वों के बारे में जानकारी होती है (सहजता से, कोई यह मान सकता है कि एसबीएफ के अंदर एक तत्व का जीवनकाल $s$ काउंटर आसपास है $$c \tfrac s N$$). एजिंग ब्लूम फिल्टर एक अन्य समाधान है, जिसमें दो ब्लूम फिल्टर होते हैं, जिनमें से प्रत्येक कुल उपलब्ध मेमोरी का आधा हिस्सा घेरता है: जब एक फिल्टर भर जाता है, तो दूसरा फिल्टर मिटा दिया जाता है और नए तत्वों को इस नए खाली फिल्टर में जोड़ दिया जाता है। हालाँकि, दिखाया गया है फ़िल्टर के बाद कोई फर्क नहीं पड़ता $N$ सम्मिलन, झूठी सकारात्मक का योग $$FP$$ और झूठा नकारात्मक $$FN$$ संभावनाओं से नीचे घिरा है $\scriptstyle FP + FN \geq 1 - \frac{1 - \left(1 - \frac {1}{L} \right)^m}{1 - \left( 1 - \frac {1}{L} \right)^{n}}$ कहाँ $n$ सभी संभावित तत्वों की मात्रा है (वर्णमाला का आकार), $L$ स्मृति आकार (बिट्स में), मानते हुए $$n > m$$. यह परिणाम दर्शाता है कि के लिए $m$ काफी बड़ा और $L$ अनंत तक जा रहा है, फिर निचली सीमा में परिवर्तित हो जाता है $$FP + FN = 1$$, जो एक यादृच्छिक फिल्टर का विशिष्ट संबंध है। इसलिए, पर्याप्त सम्मिलन के बाद, और यदि स्मृति में संग्रहीत करने के लिए वर्णमाला बहुत बड़ी है (जो कि संभाव्य फ़िल्टर के संदर्भ में माना जाता है), फ़िल्टर के लिए यादृच्छिकता से बेहतर प्रदर्शन करना असंभव है। इस परिणाम को पूरी धारा के बजाय केवल एक स्लाइडिंग विंडो पर संचालित करने के लिए फ़िल्टर की अपेक्षा करके लीवरेज किया जा सकता है। इस मामले में, प्रतिपादक n}उपरोक्त सूत्र में } द्वारा प्रतिस्थापित किया गया है $n$, जो एक सूत्र देता है जो 1 से विचलित हो सकता है, यदि $w$ बहुत छोटा नहीं है।

ब्लूमियर फ़िल्टर
ने ब्लूम फिल्टर का एक सामान्यीकरण तैयार किया है जो एक साहचर्य सरणी को लागू करते हुए, सम्मिलित किए गए प्रत्येक तत्व के साथ एक मान को जोड़ सकता है। ब्लूम फिल्टर की तरह, ये संरचनाएं झूठी सकारात्मकता की एक छोटी संभावना को स्वीकार करके एक छोटी सी जगह ओवरहेड प्राप्त करती हैं। ब्लूमियर फिल्टर के मामले में, एक झूठी सकारात्मक को एक परिणाम के रूप में परिभाषित किया जाता है जब कुंजी मानचित्र में नहीं होती है। मानचित्र में मौजूद कुंजी के लिए मानचित्र कभी भी गलत मान नहीं लौटाएगा। <!-- too wordy for an alternative to the article topic. commented out in case someone wants to move it to a new article. The simplest Bloomier filter is near-optimal and fairly simple to describe. Suppose initially that the only possible values are 0 and 1. We create a pair of Bloom filters A0 and B0 which contain, respectively, all keys mapping to 0 and all keys mapping to 1. Then, to determine which value a given key maps to, we look it up in both filters. If it is in neither, then the key is not in the map. If the key is in A0 but not B0, then it does not map to 1, and has a high probability of mapping to 0. Conversely, if the key is in B0 but not A0, then it does not map to 0 and has a high probability of mapping to 1.

A problem arises, however, when both filters claim to contain the key. We never insert a key into both, so one or both of the filters is lying (producing a false positive), but we don't know which. To determine this, we have another, smaller pair of filters A1 and B1. A1 contains keys that map to 0 and which are false positives in B0; B1 contains keys that map to 1 and which are false positives in A0. But whenever A0 and B0 both produce positives, at most one of these cases must occur, and so we simply have to determine which if any of the two filters A1 and B1 contains the key, another instance of our original problem.

It may so happen again that both filters produce a positive; we apply the same idea recursively to solve this problem. Because each pair of filters only contains keys that are in the map and produced false positives on all previous filter pairs, the number of keys is extremely likely to quickly drop to a very small quantity that can be easily stored in an ordinary deterministic map, such as a pair of small arrays with linear search. Moreover, the average total search time is low, because almost all queries will be resolved by the first pair, almost all remaining queries by the second pair, and so on. The total space required is in practice independent of n, and is almost entirely occupied by the first filter pair.

Now that we have the structure and a search algorithm, we also need to know how to insert new key/value pairs. The program must not attempt to insert the same key with both values. If the value is 0, insert the key into A0 and then test if the key is in B0. If so, this is a false positive for B0, and the key must also be inserted into A1 recursively in the same manner. If we reach the last level, we simply insert it. When the value is 1, the operation is similar but with A and B reversed.

Now that we can map a key to the value 0 or 1, how does this help us map to general values? This is simple. We create a single such Bloomier filter for each bit of the result. If the values are large, we can instead map keys to hash values that can be used to retrieve the actual values. The space required for a Bloomier filter with n-bit values is typically slightly more than the space for 2n Bloom filters.

A very simple way to implement Bloomier filters is by means of minimal perfect hashing. A minimal perfect hash function h is first generated for the set of n keys. Then an array is filled with n pairs (signature,value) associated with each key at the positions given by function h when applied on each key. The signature of a key is a string of r bits computed by applying a hash function g of range $$2^r$$ on the key. The value of r is chosen such that $$2^r>=1/\varepsilon$$, where $$\varepsilon$$ is the requested false positive rate. To query for a given key, hash function h is first applied on the key. This will give a position into the array from which we retrieve a pair (signature,value). Then we compute the signature of the key using function g. If the computed signature is the same as retrieved signature we return the retrieved value. The probability of false positive is $$1/2^r$$.

Another alternative to implement static Bloomier and Bloom filters based on matrix solving has been simultaneously proposed in, and. The space usage of this method is optimal as it needs only $$\log_2(\varepsilon)$$ bits per key for a Bloom filter. However time to generate the Bloom or Bloomier filter can be very high. The generation time can be reduced to a reasonable value at the price of a small increase in space usage.

Dynamic Bloomier filters have been studied by. They proved that any dynamic Bloomier filter needs at least around $$\log(l)$$ bits per key where l is the length of the key. A simple dynamic version of Bloomier filters can be implemented using two dynamic data structures. Let the two data structures be noted S1 and S2. S1 will store keys with their associated data while S2 will only store signatures of keys with their associated data. Those signatures are simply hash values of keys in the range $$[0,n/\varepsilon]$$ where n is the maximal number of keys to be stored in the Bloomier filter and $$\varepsilon$$ is the requested false positive rate. To insert a key in the Bloomier filter, its hash value is first computed. Then the algorithm checks if a key with the same hash value already exists in S2. If this is not the case, the hash value is inserted in S2 along with data associated with the key. If the same hash value already exists in S2 then the key is inserted into S1 along with its associated data. The deletion is symmetric: if the key already exists in S1 it will be deleted from there, otherwise the hash value associated with the key is deleted from S2. An issue with this algorithm is on how to store efficiently S1 and S2. For S1 any hash algorithm can be used. To store S2 golomb coding could be applied to compress signatures to use a space close to $$\log2(1/\varepsilon)$$ per key. -->

कॉम्पैक्ट सन्निकटन
ने ब्लूम फिल्टर के जाली (आदेश) आधारित सामान्यीकरण का प्रस्ताव रखा। एक कॉम्पैक्ट सन्निकटन प्रत्येक कुंजी को एक जाली के एक तत्व से जोड़ता है (मानक ब्लूम फिल्टर बूलियन दो-तत्व जाली का मामला है)। बिट सरणी के बजाय, उनके पास जाली तत्वों की सरणी होती है। कुंजी और जाली के एक तत्व के बीच एक नया जुड़ाव जोड़ते समय, वे जाली तत्व के साथ कुंजी से जुड़े k सरणी स्थानों की वर्तमान सामग्री की अधिकतम गणना करते हैं। किसी कुंजी से संबद्ध मान को पढ़ते समय, वे कुंजी से संबद्ध k स्थानों में पाए जाने वाले न्यूनतम मानों की गणना करते हैं। परिणामी मान मूल मान के ऊपर से अनुमानित होता है।

समानांतर विभाजित ब्लूम फ़िल्टर
यह कार्यान्वयन प्रत्येक हैश फ़ंक्शन के लिए एक अलग सरणी का उपयोग करता है। यह विधि सम्मिलन और पूछताछ दोनों के लिए समांतर हैश गणनाओं की अनुमति देती है।

स्केलेबल ब्लूम फ़िल्टर
ने ब्लूम फिल्टर का एक प्रकार प्रस्तावित किया जो न्यूनतम झूठी सकारात्मक संभावना सुनिश्चित करते हुए गतिशील रूप से संग्रहीत तत्वों की संख्या के अनुकूल हो सकता है। यह तकनीक बढ़ती क्षमता और कड़ी झूठी सकारात्मक संभावनाओं के साथ मानक ब्लूम फिल्टर के अनुक्रम पर आधारित है, ताकि यह सुनिश्चित किया जा सके कि सम्मिलित किए जाने वाले तत्वों की संख्या की परवाह किए बिना अधिकतम झूठी सकारात्मक संभावना पहले से निर्धारित की जा सकती है।

स्थानिक ब्लूम फिल्टर
स्थानिक ब्लूम फ़िल्टर (एसबीएफ) मूल रूप से किसके द्वारा प्रस्तावित किया गया था? विशेष रूप से स्थान सूचना गोपनीयता के लिए क्रिप्टोग्राफ़िक प्रोटोकॉल के संदर्भ में स्थान जानकारी संग्रहीत करने के लिए डिज़ाइन की गई डेटा संरचना के रूप में। हालांकि, एसबीएफ की मुख्य विशेषता एक ही डेटा संरचना में कई सेटों को स्टोर करने की उनकी क्षमता है, जो उन्हें कई अलग-अलग एप्लिकेशन परिदृश्यों के लिए उपयुक्त बनाती है। एक विशिष्ट सेट के लिए एक तत्व की सदस्यता को पूछताछ की जा सकती है, और झूठी सकारात्मक संभावना सेट पर निर्भर करती है: निर्माण के दौरान फ़िल्टर में दर्ज किए जाने वाले पहले सेटों में अंत में दर्ज किए गए सेटों की तुलना में उच्च झूठी सकारात्मक संभावनाएं होती हैं। यह संपत्ति सेट की प्राथमिकता की अनुमति देती है, जहां अधिक महत्वपूर्ण तत्वों वाले सेट को संरक्षित किया जा सकता है।

स्तरित ब्लूम फ़िल्टर
एक स्तरित ब्लूम फ़िल्टर में कई ब्लूम फ़िल्टर परतें होती हैं। स्तरित ब्लूम फ़िल्टर यह जाँचने की अनुमति देता है कि कितनी बार आइटम में कितनी परतें हैं, यह जाँच कर ब्लूम फ़िल्टर में एक आइटम को कितनी बार जोड़ा गया था। एक स्तरित ब्लूम फ़िल्टर के साथ एक चेक ऑपरेशन सामान्य रूप से सबसे गहरी परत संख्या लौटाएगा जिसमें आइटम पाया गया था।

{{Anchor|ATTENUATED}क्षीणित ब्लूम फिल्टर
गहराई डी के एक कमजोर ब्लूम फिल्टर को डी सामान्य ब्लूम फिल्टर की एक सरणी के रूप में देखा जा सकता है। एक नेटवर्क में सेवा की खोज के संदर्भ में, प्रत्येक नोड स्थानीय रूप से नियमित और क्षीण ब्लूम फ़िल्टर को संग्रहीत करता है। नियमित या स्थानीय ब्लूम फ़िल्टर इंगित करता है कि नोड द्वारा कौन सी सेवाएं प्रदान की जाती हैं। स्तर I का क्षीणित फ़िल्टर इंगित करता है कि कौन सी सेवाएँ उन नोड्स पर पाई जा सकती हैं जो वर्तमान नोड से i-hops दूर हैं। i-th मान नोड से दूर i-hops नोड्स के लिए स्थानीय ब्लूम फ़िल्टर का एक संघ लेकर बनाया गया है।

आइए एक उदाहरण के रूप में नीचे दिए गए ग्राफ़ पर दिखाए गए एक छोटे से नेटवर्क को लें। कहते हैं कि हम एक सेवा A की खोज कर रहे हैं जिसकी आईडी 0,1, और 3 (पैटर्न 11010) बिट्स के लिए हैश है। n1 नोड को शुरुआती बिंदु होने दें। सबसे पहले, हम जाँचते हैं कि सेवा A को n1 द्वारा उसके स्थानीय फ़िल्टर की जाँच करके पेश किया जाता है या नहीं। चूंकि पैटर्न मेल नहीं खाते हैं, इसलिए हम यह निर्धारित करने के लिए कमजोर ब्लूम फ़िल्टर की जांच करते हैं कि अगला हॉप कौन सा नोड होना चाहिए। हम देखते हैं कि n2 सेवा A की पेशकश नहीं करता है, लेकिन यह करने वाले नोड्स के रास्ते पर है। इसलिए, हम n2 पर जाते हैं और उसी प्रक्रिया को दोहराते हैं। हम जल्दी से पाते हैं कि n3 सेवा प्रदान करता है, और इसलिए गंतव्य स्थित है।

कई परतों वाले क्षीणित ब्लूम फ़िल्टर का उपयोग करके, एक से अधिक हॉप दूरी पर सेवाओं की खोज की जा सकती है, जबकि ब्लूम फ़िल्टर की संतृप्ति से बचने के लिए स्रोतों द्वारा निर्धारित बिट्स को क्षीण (स्थानांतरित) करके दूर किया जा सकता है।

रासायनिक संरचना खोज
ब्लूम फिल्टर का उपयोग अक्सर बड़े रासायनिक संरचना डेटाबेस (रासायनिक समानता देखें) को खोजने के लिए किया जाता है। सबसे सरल मामले में, फिल्टर में जोड़े गए तत्व (इस क्षेत्र में एक फिंगरप्रिंट कहा जाता है) अणु में मौजूद परमाणु संख्याएं हैं, या प्रत्येक परमाणु की परमाणु संख्या और उसके बंधनों की संख्या और प्रकार के आधार पर एक हैश है। उपयोगी होने के लिए यह मामला बहुत आसान है। अधिक उन्नत फिल्टर भी परमाणु की संख्या, कार्बोक्सिल समूहों जैसे बड़े उप-संरचना सुविधाओं और छल्ले की संख्या जैसे ग्राफ गुणों को कूटबद्ध करते हैं। हैश-आधारित फ़िंगरप्रिंट्स में, परमाणु और बॉन्ड गुणों पर आधारित एक हैश फ़ंक्शन का उपयोग एक सबग्राफ को छद्म यादृच्छिक संख्या जनरेटर बीज में बदलने के लिए किया जाता है, और पहले आउटपुट मान ब्लूम फ़िल्टर में बिट्स सेट करने के लिए उपयोग किए जाते हैं।

आणविक उंगलियों के निशान 1940 के दशक के अंत में छिद्रित कार्डों पर खोजी गई रासायनिक संरचनाओं की खोज के रूप में शुरू हुए। हालांकि, 1990 के आसपास ऐसा नहीं था कि डेलाइट केमिकल इंफॉर्मेशन सिस्टम्स, इंक. ने पूर्व संगणित तालिका का उपयोग करने के बजाय बिट्स उत्पन्न करने के लिए एक हैश-आधारित पद्धति की शुरुआत की। डिक्शनरी दृष्टिकोण के विपरीत, हैश विधि उप-संरचनाओं के लिए बिट्स निर्दिष्ट कर सकती है जो पहले नहीं देखी गई थी। 1990 के दशक की शुरुआत में, फ़िंगरप्रिंट शब्द को संरचनात्मक कुंजी से अलग माना जाता था, लेकिन तब से यह शब्द अधिकांश आणविक विशेषताओं को शामिल करने के लिए विकसित हो गया है, जिसका उपयोग संरचनात्मक कुंजी, विरल गिनती फ़िंगरप्रिंट और 3D फ़िंगरप्रिंट सहित समानता तुलना के लिए किया जा सकता है। ब्लूम फिल्टर के विपरीत, डेलाइट हैश विधि सुविधा आकार के एक फ़ंक्शन होने के लिए प्रति सुविधा निर्दिष्ट बिट्स की संख्या की अनुमति देती है, लेकिन डेलाइट-जैसे फ़िंगरप्रिंट के अधिकांश कार्यान्वयन प्रति सुविधा बिट्स की एक निश्चित संख्या का उपयोग करते हैं, जो उन्हें ब्लूम फ़िल्टर बनाता है। मूल डेलाइट फिंगरप्रिंट का उपयोग समानता और स्क्रीनिंग उद्देश्यों दोनों के लिए किया जा सकता है। लोकप्रिय ECFP2 जैसे कई अन्य फ़िंगरप्रिंट प्रकारों का उपयोग समानता के लिए किया जा सकता है, लेकिन स्क्रीनिंग के लिए नहीं, क्योंकि उनमें स्थानीय पर्यावरणीय विशेषताएँ शामिल होती हैं, जो स्क्रीन के रूप में उपयोग किए जाने पर गलत नकारात्मक प्रस्तुत करती हैं। भले ही इनका निर्माण एक ही तंत्र के साथ किया गया हो, ये ब्लूम फ़िल्टर नहीं हैं क्योंकि इन्हें फ़िल्टर करने के लिए उपयोग नहीं किया जा सकता है।

यह भी देखें

 * काउंट-मिन स्केच
 * फ़ीचर हैशिंग
 * मिनहाश
 * भागफल फिल्टर
 * सूची छोड़ें
 * जैव सूचना विज्ञान में ब्लूम फिल्टर
 * कोयल फिल्टर

संदर्भ

 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.
 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.
 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.
 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.
 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.
 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.
 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.
 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.
 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.
 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.
 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.
 * . Open source implementation available on github.
 * . A preliminary version appeared at SIGCOMM '98.


 * . Prototype implementation available on github.
 * . Prototype implementation available on github.
 * . Prototype implementation available on github.
 * . Prototype implementation available on github.
 * . Prototype implementation available on github.
 * . Prototype implementation available on github.
 * . Prototype implementation available on github.
 * . Prototype implementation available on github.
 * . Prototype implementation available on github.
 * . Prototype implementation available on github.
 * . Prototype implementation available on github.

बाहरी संबंध

 * "Using Bloom Filters" Detailed Bloom Filter explanation using Perl
 * Why Bloom filters work the way they do (Michael Nielsen, 2012)
 * Bloom Filters — A Tutorial, Analysis, and Survey (Blustein & El-Maazawi, 2002) at Dalhousie University
 * Table of false-positive rates for different configurations from a University of Wisconsin–Madison website
 * "More Optimal Bloom Filters", Ely Porat (Nov/2007) Google TechTalk video on YouTube