एक खिल फिल्टर की अनुमानित आबादी की गणना


12

आकार N- बिट्स और K हैश फ़ंक्शंस के एक ब्लूम फ़िल्टर को देखते हुए, जिनमें से फ़िल्टर के M- बिट्स (जहाँ M <= N) सेट है।

क्या खिल फिल्टर में सम्मिलित तत्वों की संख्या का अनुमान लगाना संभव है?

सरल उदाहरण

मैं निम्नलिखित उदाहरण पर विचार कर रहा हूँ, 100-बिट्स और 5 हैश फ़ंक्शंस के बीएफ को मानकर जहां 10-बिट सेट हैं ...

सबसे अच्छा मामला परिदृश्य: हैश फ़ंक्शन को मान लेना वास्तव में सही और विशिष्ट रूप से कुछ एक्स मानों के लिए थोड़ा सा नक्शा है, फिर 10-बिट्स दिए गए हैं हम कह सकते हैं कि बीएफ में केवल 2 तत्व डाले गए हैं

सबसे खराब स्थिति: हैश कार्यों को बुरा मानते हुए और एक ही बिट के लिए लगातार मानचित्र (अभी तक एक दूसरे के बीच अद्वितीय), तो हम कह सकते हैं कि 10 तत्वों को बीएफ में डाला गया है

यह सीमा [2,10] प्रतीत होती है, जहां इस सीमा के बारे में संभवतः फ़िल्टर की झूठी-सकारात्मक संभावना द्वारा निर्धारित किया जाता है - मैं इस बिंदु पर फंस गया हूं।


4
सम्मिलित किए गए तत्वों की संख्या का एक काउंटर क्यों नहीं रखें? यदि आप तत्व सम्मिलित करते हैं, तो यह केवल एक अतिरिक्त बिट्स लेता है । एनO(logn)n
जो

@Joe, जबकि यह एक अच्छा विचार है, यह वास्तव में एक दिलचस्प सवाल को बर्बाद करता है।
dan_waterworth

बस यह देखते हुए कि डुप्लिकेट के साथ, जो की विधि में कुछ छोटी त्रुटि होगी क्योंकि हम हमेशा एक तत्व जोड़ते समय यह सुनिश्चित नहीं कर सकते हैं कि क्या यह पहले से मौजूद है (और इसलिए हमें गिनती बढ़ाना चाहिए या नहीं)।
usul

जवाबों:


5

हाँ। से विकिपीडिया :

यदि आपने हैश फ़ंक्शन का उपयोग करके तत्वों को आकार फ़िल्टर में डाला है , तो संभावना है कि एक निश्चित बिट अभी भी 0 हैएन केink

z=(11n)ki

आप इस संभावना को अपने फ़िल्टर में 0 बिट्स के अनुपात के रूप में माप सकते हैं । लिए हल देता हैi

i=ln(z)kln(11n)

मैंने इसे व्यवहार में उपयोग किया है, और जब तक आपका फ़िल्टर अपनी क्षमता से अधिक नहीं होता है, तब तक त्रुटि लाखों बिट तक के फिल्टर के लिए 0.1% से कम होती है। जैसे-जैसे फ़िल्टर अपनी क्षमता से अधिक होता है, पाठ्यक्रम की त्रुटि बढ़ती जाती है।


3

यदि आप मानते हैं कि प्रत्येक ऑब्जेक्ट के लिए प्रत्येक हैश फ़ंक्शन के लिए, बिट को समान रूप से यादृच्छिक पर सेट किया गया है, और आपके पास सेट किए गए बिट्स की संख्या पर एक गणना है, तो आपको इस संभावना को बाध्य करने में सक्षम होना चाहिए कि सम्मिलित ऑब्जेक्ट की संख्या थी एक निश्चित सीमा के भीतर, शायद गेंदों और डिब्बे के निर्माण का उपयोग करना। प्रत्येक बिट एक बिन है, और यह सेट है, तो उसमें कम से कम 1 गेंद है, प्रत्येक वस्तु डाला फेंकता , गेंदों जहां हैश फंक्शन की संख्या है, और के बाद फेंक दिया गेंदों की संख्या है वस्तुओं डाला गया है। यह देखते हुए कि डिब्बे में कम से कम 1 गेंद है, क्या संभावना है कि कम से कम गेंदों को फेंक दिया गया था? मुझे लगता है कि यहां आप इस तथ्य का उपयोग कर सकते हैं कि: कश्मीर n कश्मीर एन बी टी पी ( टी  गेंदों | डिब्बे ) = पी (  डिब्बे | टी  गेंदों ) पी ( टी ) / पी ( ) पी ( टी ) पी ( ) टीkknknbt

P(t balls|b bins)=P(b bins|t balls)P(t)/P(b)
लेकिन उस समस्या के साथ समस्या यह है कि मुझे या गणना करने का एक सीधा तरीका नहीं दिखता है , लेकिन का मान खोजना जो अधिकतम संभावना को बहुत कठिन नहीं होना चाहिए।P(t)P(b)t

2

दिलचस्प सवाल, कुछ विशिष्ट मामलों को देखने की सुविधा देता है।

knonntotalmP(k,non,ntotal,m)

km<nonP(k,non,ntotal,m)0

non=1kmkm1

P(k,1,ntotal,m)=(1/ntotal)(km1)

non=2km21ntotal(ntotal1)2(2/ntotal)km2

ntotal(ntotal1)(2/ntotal)km

12

P(k,2,ntotal,m)=ntotal(ntotal1)(2/ntotal)km(1/ntotal)(km1)

मुझे लगता है कि अब हम इसे सामान्य कर सकते हैं।

P(k,non,ntotal,m)=(ntotalnon)(non/ntotal)kmi=1i<nonP(k,i,ntotal,m)

मुझे यह निश्चित नहीं है कि इस सूत्र को गणना करने के लिए अधिक उत्तरदायी कैसे बनाया जाए। Naively लागू, यह घातीय समय निष्पादन समय में परिणाम होगा, हालांकि यह तुच्छ है, ज्ञापन के माध्यम से, रैखिक समय को प्राप्त करने के लिए। यह तो सबसे अधिक संभावना खोजने का मामला है । मेरी वृत्ति कहती है कि एक एकल चोटी होगी, इसलिए इसे बहुत जल्दी ढूंढना संभव हो सकता है, लेकिन भोलेपन से, आप निश्चित रूप से में सबसे संभवत: मी पा सकते हैं ।mO(n2)


मुझे लगता है कि आपका सूत्र (लगातार कारकों की अनदेखी)। आप इस विश्लेषणात्मक की अधिकतम गणना कर सकते हैं: दूसरे शब्द के पहले कारक का विस्तार करें और सभी से छुटकारा पाने के लिए लगातार कारकों को हटा दें , और फिर आपका सूत्र बहुत सरल हो जाता है। (ntotalnon)nonkm(ntotalnon1)(non1)kmn choose k
जूल्स

@ जूल्स, महान, मुझे यकीन था कि ऐसा कुछ होगा, लेकिन यह पता लगाने का समय नहीं था।
dan_waterworth

आप उस फॉर्मूले पर सीधे निम्नलिखित तरीके से भी पहुँच सकते हैं: । फिर लिए । P(non=x)=P(nonx)P(non<x)=P(nonx)P(nonx1)(ntotalx)(x/ntotal)kmP(nonx)
जूल्स

2

मान लीजिए कि हैश समान रूप से वितरित किए गए हैं।

सम्मिलित हैश की संख्या होने दूं । चूंकि हमारे पास में हैश डिब्बे अगर हमारे पास में हैश डिब्बे और अगले हैश उन में से एक में चला जाता है से बाहर डिब्बे या अगर हमारे पास में हैश अगले हैश चला जाता है डिब्बे और अन्य डिब्बे में से एक, हमारे पास है:iimi1mmni1m1n(m1)

P(m,i)=P(m,i1)(m/n)+P(m1,i1)(n(m1))/n

पुनर्लेखन:

P(m,i)=1n(mP(m,i1)+(nm+1)P(m1,i1))

हमारे पास और जब और जब । यह आपको एक देता की गणना कर रहा पी की गणना के लिए गतिशील प्रोग्रामिंग एल्गोरिथ्म कि अधिकतम आप अधिकतम संभावना सुविधा देता है।P(0,0)=1P(m,0)=0m0P(0,i)=0i0O(mi)iP(m,i)

अगर हमें पता है कि हमने इस ब्लॉम फ़िल्टर को बार में हैश किया है और हमारे पास हैश प्रति आइटम है, तो आइटम की संख्या ।iki/k

इसे गति देने के लिए आप कुछ चीजें कर सकते हैं। का कारक छोड़ा जा सकता है क्योंकि यह अधिकतम की स्थिति को नहीं बदलता है। आप लिए चलने वाले (asymptotic) को कम करने के लिए को कई कॉल के साथ डायनामिक प्रोग्रामिंग टेबल साझा कर सकते हैं । यदि आप यह मानने को तैयार हैं कि एक ही अधिकतम है, तो आप जल्दी से रोक सकते हैं और रनिंग टाइम प्राप्त कर सकते हैं, जहाँ वह बिंदु है जहाँ अपनी अधिकतम पर ले जाता है, या यहाँ तक कि एक द्विआधारी खोज भी करता है और प्राप्त करता है । P(m,i)O(nm)iO(jm)jPO(mlogn)1nP(m,i)O(nm)iO(jm)jPO(mlogn)


2

प्रमुख विचार शून्य बिट की संख्या की अपेक्षा को अनुमानित करना है।

प्रत्येक बिट के लिए, K हैश फ़ंक्शंस के साथ t सम्मिलन के बाद शून्य होने की संभावना है: ।(11N)KteKtN

फिर शून्य बिट संख्या की अपेक्षा होनी चाहिए:

एन-एमNeKtN अवलोकन द्वारा अनुमानित हैNM

अंत में हमेंt=NKln(1MN)


1

संभावना है कि n सम्मिलन के बाद एक विशेष बिट 1 है: P = 1 - (1 - 1 / m) ^ (kn)

बता दें कि X_i एक असतत रैंडम वैरिएबल है जो 1 है अगर i'th पोजिशन में बिट 1 या 0 है। X = X_1 + X_2 + .... + X_m। फिर, ई [एक्स] = एम * पी।

यदि सेट बिट्स की कुल संख्या एस है, तो: ई [एक्स] = एस जिसका अर्थ है एम * पी = एस। यह एन के लिए हल किया जा सकता है।

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