एक ब्लूम फ़िल्टर कुशलता से यह सुनिश्चित करने के लिए संभव बनाता है कि प्रसंस्करण के दौरान पहले से ही विभिन्न मूल्यों का सामना किया गया है या नहीं। जब कई डेटा आइटम होते हैं तो ब्लूम फ़िल्टर के परिणामस्वरूप हैश टेबल पर एक महत्वपूर्ण मेमोरी सेविंग हो सकती है। ब्लूम फ़िल्टर की मुख्य विशेषता, जिसे वह हैश टेबल के साथ साझा करता है, यह है कि यह हमेशा "नया नहीं" कहता है यदि कोई आइटम नया नहीं है, लेकिन एक गैर-शून्य संभावना है कि एक आइटम को "नया नहीं" के रूप में चिह्नित किया जाएगा “तब भी जब यह नया है।
क्या एक "एंटी-ब्लूम फ़िल्टर" है, जिसका विपरीत व्यवहार है?
दूसरे शब्दों में: क्या एक कुशल डेटा संरचना है जो "नया" कहती है यदि कोई आइटम नया है, लेकिन जो कुछ वस्तुओं के लिए "नया" भी कह सकता है जो कि नया नहीं है?
पहले से देखी गई सभी वस्तुओं को रखना (उदाहरण के लिए, एक क्रमबद्ध लिंक्ड सूची में) पहली आवश्यकता को पूरा करता है, लेकिन बहुत अधिक मेमोरी का उपयोग कर सकता है। मुझे उम्मीद है कि यह अनावश्यक भी है, आराम से दूसरी आवश्यकता को देखते हुए।
जो लोग अधिक औपचारिक उपचार पसंद करते हैं, उनके लिए लिखें यदि ब्लूम फ़िल्टर सोचता है कि नया है, अन्यथा, और लिखिए यदि वास्तव में नया है और अन्यथा।
फिर ; ; ; , कुछ ।
मैं पूछ रहा हूँ: करता है एक कुशल डेटा संरचना अस्तित्व, को लागू करने के लिए एक समारोह के साथ कुछ , ऐसी है कि ; ; ; ?
संपादित करें: ऐसा लगता है कि इस सवाल को StackExchange पर पहले पूछा गया है, जैसा कि /programming/635728 और /cstheory/6596 के जवाब में "नहीं हो सकता" "के माध्यम से" किया जा सकता है, कुछ कीमत पर "से" यह करने के लिए तुच्छ है, के मूल्यों को उल्टा करके "। यह मेरे लिए अभी तक स्पष्ट नहीं है कि "सही" उत्तर क्या है। क्या है स्पष्ट है कि किसी प्रकार की एक LRU कैशिंग योजना (Ilmari कारोनेन ने सुझाव दिया एक तरह के रूप में) के बजाय अच्छी तरह से काम करता है, आसान लागू करने के लिए है, और समय मेरे कोड को चलाने के लिए ले जाया में 50% की कमी हुई।