ब्लूम फ़िल्टर हैश: अधिक या बड़ा?


15

ब्लूम फ़िल्टर को लागू करने में, पारंपरिक दृष्टिकोण कई स्वतंत्र हैश कार्यों के लिए कहता है। किर्स्च और मिटज़ेनमाकर ने दिखाया कि आपको वास्तव में केवल दो की आवश्यकता है, और बाकी को रैखिक संयोजनों के रूप में उत्पन्न कर सकते हैं।

मेरा सवाल है: क्या, वास्तव में, दो हैश कार्यों और एक दो बार एन्ट्रापी के बीच अंतर है?

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

दूसरे शब्दों में, मानक झूठी सकारात्मक दर धारण सुनिश्चित करने के लिए मुझे वास्तव में प्रत्येक तत्व के बारे में जानने की आवश्यकता है जो मैं ब्लूम फ़िल्टर में सम्मिलित करता हूं? या अधिक आम तौर पर, मैं कितनी अच्छी तरह से तत्वों को अलग कर सकता हूं (मैं उनका वर्णन करने के लिए कितने बिट्स का उपयोग करता हूं) और मेरा ब्लूम फ़िल्टर कैसे तय करता है?

यह यकीन है कि जैसे मैं के साथ भाग प्राप्त कर सकते हैं लगता है के टुकडों से फिल्टर आकार के लिए , या समतुल्य की दुकान में बिट्स पॉजिटिव पॉसिबिलिटी साथ तत्व ...।2एलजी()2(एलजी(-nlnपी)-2एलजी(ln2))nपी

जवाबों:


16

आप "यादृच्छिक बिट्स" के संदर्भ में हैश कार्यों के बारे में सोचने के लिए सही हैं। इसलिए यदि आपके पास एक हैश फ़ंक्शन है जो 64 बिट हैश का उत्पादन करता है, तो आप इलाज कर सकते हैं 4 16-बिट हैश (विभाजन करके), और इसी तरह।

2एलजी()


5
Cstheory, माइकल :) में आपका स्वागत है
सुरेश वेंकट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.