ब्लूम फ़िल्टर को एक डेटा संरचना के रूप में परिभाषित किया जाता है, जिसे एक सेट में तत्व की उपस्थिति को तीव्र और मेमोरी कुशल तरीके से पहचानने के लिए डिज़ाइन किया गया है।
एक विशिष्ट डेटा संरचना जिसका नाम संभाव्य डेटा संरचना . है ब्लूम फिल्टर के रूप में लागू किया गया है। यह डेटा संरचना हमें यह पहचानने में मदद करती है कि कोई तत्व किसी सेट में मौजूद है या अनुपस्थित है।
बिट वेक्टर को आधार डेटा संरचना के रूप में कार्यान्वित किया जाता है। यहाँ एक छोटा सा है जिसका उपयोग हम समझाने के लिए करेंगे
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
उस तालिका में प्रत्येक खाली सेल एक बिट और उसके नीचे की संख्या को उसकी अनुक्रमणिका या स्थिति निर्दिष्ट करता है। ब्लूम फ़िल्टर में एक तत्व जोड़ने के लिए, हम बस इसे कुछ बार हैश करते हैं और बिट वेक्टर में बिट्स को उन हैश की स्थिति या इंडेक्स पर 1 पर सेट करते हैं।
ब्लूम फ़िल्टर के विस्तृत कार्यान्वयन पर निम्नलिखित में चर्चा की गई है
ब्लूम फ़िल्टर दो क्रियाओं का समर्थन करते हैं, पहले ऑब्जेक्ट को जोड़ना और किसी ऑब्जेक्ट का ट्रैक रखना और फिर यह सत्यापित करना कि कोई ऑब्जेक्ट पहले देखा गया है या नहीं।
ब्लूम फ़िल्टर में ऑब्जेक्ट जोड़ना
- हम जोड़ने के लिए वस्तु के लिए हैश मानों की गणना करते हैं;
- हम इन हैश-मानों को ब्लूम फ़िल्टर स्थिति में कुछ बिट्स सेट करने के लिए लागू करते हैं (हैश मान सेट करने के लिए बिट की स्थिति है)।
सत्यापित करना कि क्या ब्लूम फ़िल्टर में कोई ऑब्जेक्ट है -
- हम जोड़ने के लिए वस्तु के लिए हैश मानों की गणना करते हैं;
- अगला हम सत्यापित करते हैं कि इन हैश मानों द्वारा अनुक्रमित बिट्स ब्लूम फ़िल्टर स्थिति में सेट हैं या नहीं।
हमें यह ध्यान रखना होगा कि किसी वस्तु का हैश मान सीधे ब्लूम फ़िल्टर स्थिति में नहीं जोड़ा जाता है; प्रत्येक हैश फ़ंक्शन बस यह निर्धारित करता है कि कौन सा बिट सेट करना है या सत्यापित करना है। उदाहरण के लिए:यदि केवल एक हैश फ़ंक्शन का उपयोग किया जाता है, तो केवल एक बिट सत्यापित या चेक किया जाता है।