একটি ব্লুম ফিল্টারের আনুমানিক জনসংখ্যার গণনা করা


12

সাইজের এন-বিট এবং কে হ্যাশ ফাংশনগুলির একটি ব্লুম ফিল্টার দেওয়া হয়েছে, যার মধ্যে ফিল্টারটির এম-বিটস (যেখানে এম <= এন) সেট করা আছে।

ব্লুম ফিল্টারটিতে elementsোকানো উপাদানগুলির সংখ্যা অনুমান করা সম্ভব?

সাধারণ উদাহরণ

আমি নীচের উদাহরণটি ধরে ফেলছি, 100 বিট এবং 5 হ্যাশ ফাংশন যেখানে 10-বিট সেট করা আছে তার বিএফ ধরে ...

সর্বোত্তম কেস দৃশ্য: ধরে নিচ্ছি যে হ্যাশ ফাংশনগুলি সত্যই নিখুঁত এবং কিছু এক্স মানগুলির জন্য কিছুটা মানচিত্রের জন্য অনন্যভাবে মানচিত্রযুক্ত, তারপর প্রদত্ত 10-বিট সেট করা হয়েছে আমরা বলতে পারি যে কেবলমাত্র 2 টি উপাদান বিএফের ভিতরে sertedোকানো হয়েছে

সবচেয়ে খারাপ পরিস্থিতি: ধরে নিচ্ছি যে হ্যাশ ফাংশনগুলি একই বিটের কাছে নিয়মিত মানচিত্রযুক্ত (একে অপরের মধ্যে এখনও অনন্য), তারপরে আমরা বলতে পারি যে 10 টি উপাদান বিএফ-এ beenোকানো হয়েছে

ব্যাপ্তিটি [2,10] বলে মনে হচ্ছে যেখানে এই ব্যাপ্তির অবকাশগুলি সম্ভবত ফিল্টারটির মিথ্যা-ইতিবাচক সম্ভাবনা দ্বারা নির্ধারিত হয় - আমি এই সময়ে আটকে আছি।


4
Elementsোকানো উপাদানের সংখ্যার একটি পাল্টা রাখবেন না কেন? এটি কেবলমাত্র অতিরিক্ত বিট নেয়, যদি আপনি এন উপাদানগুলি .োকান। O(logn)n
জো

@ জো, যদিও এটি একটি ভাল ধারণা, এটি একটি সত্যিই আকর্ষণীয় প্রশ্নকে নষ্ট করে দেয়।
ড্যান_ওয়াটারওয়ার্থ

ডুপ্লিকেট সহ, জোয়ের পদ্ধতিতে কিছুটা ছোট ত্রুটি হবে কারণ এটি ইতিমধ্যে উপস্থিত রয়েছে কিনা এমন কোনও উপাদান যুক্ত করার সময় আমরা সবসময় নিশ্চিতভাবে বলতে পারি না (এবং তাই আমাদের গণনাটি বাড়ানো উচিত কিনা)।
usul

উত্তর:


5

হ্যাঁ. উইকিপিডিয়া থেকে :

আপনি সন্নিবেশিত তাহলে আকারের একটি ফিল্টার মধ্যে উপাদানের এন ব্যবহার হ্যাশ ফাংশন, সম্ভাব্যতা একটি নির্দিষ্ট বিট এখনও 0ink

z=(11n)ki

আপনি আপনার ফিল্টারটিতে 0 বিটের অনুপাত হিসাবে এই সম্ভাবনাটি পরিমাপ করতে পারেন । দেয় জন্য সলভিংi

i=ln(z)kln(11n)

আমি এটি ব্যবহারে ব্যবহার করেছি এবং যতক্ষণ না আপনার ফিল্টার এর ক্ষমতা ছাড়িয়ে যায় না ততক্ষণ লক্ষ লক্ষ বিট পর্যন্ত ফিল্টারগুলির জন্য ত্রুটি সাধারণত 0.1% এর চেয়ে কম থাকে। ফিল্টারটি এর ক্ষমতা ছাড়িয়ে যাওয়ার সাথে সাথে অবশ্যই ত্রুটিটি বেড়ে যায়।


3

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)

আমি এই সূত্রটি গণনার ক্ষেত্রে আরও কার্যকর করার পদ্ধতি সম্পর্কে ঠিক নিশ্চিত নই। নিখুঁতভাবে প্রয়োগ করা হয়েছে, লিনিয়ার সময় অর্জনের জন্য মেমোজাইজেশনের মাধ্যমে এটি ক্ষুদ্রতর হলেও এটি ক্ষতিকারক সময় কার্যকর করার সময় ঘটবে। এটা তোলে তারপর সম্ভবত খুঁজে বের করার একটি ক্ষেত্রে । আমার প্রবৃত্তিটি বলেছে যে একটি একক শিখর থাকবে তাই এটি খুব দ্রুত খুঁজে পাওয়া সম্ভব হতে পারে তবে নির্বাকভাবে, আপনি অবশ্যই এম মধ্যে সম্ভবত সবচেয়ে সম্ভবত এম খুঁজে পেতে পারেন ।mO(n2)


আমি মনে করি আপনার সূত্রটি বাতিল হয়েছে (ধ্রুবক কারণগুলি উপেক্ষা করে)। আপনি বিশ্লেষণাত্মকভাবে এর সর্বাধিক গণনা করতে পারেন: দ্বিতীয় পদটির প্রথম ফ্যাক্টরটি প্রসারিত করুন এবং সমস্ত থেকে মুক্তি পাওয়ার জন্য ধ্রুবক উপাদানগুলি সরিয়ে ফেলুন এবং তারপরে আপনার সূত্রটি খুব সহজ হয়ে যায়। (ntotalnon)nonkm(ntotalnon1)(non1)kmn choose k
জুলাই

@ জুলস, দুর্দান্ত, আমি নিশ্চিত যে এরকম কিছু ঘটবে, তবে তা বের করার সময় নেই।
ড্যান_ওয়াটারওয়ার্থ

আপনি সেই সূত্রটিতে সরাসরি নিম্নলিখিত উপায়ে পৌঁছাতে পারেন: । তারপর প্লাগ ইন জন্য । P(non=x)=P(nonx)P(non<x)=P(nonx)P(nonx1)(ntotalx)(x/ntotal)kmP(nonx)
জুলাই

2

মনে করুন যে হ্যাশগুলি সমানভাবে বিতরণ করা হয়েছে।

যাক সন্নিবেশিত হ্যাশ সংখ্যা হতে হবে। যেহেতু আমরা আছে মধ্যে হ্যাশ বিন যদি আমরা আছে মধ্যে হ্যাশ bins এবং পরবর্তী হ্যাশ ঐ এক মধ্যে যায় আউট বিন অথবা যদি আমরা আছে মধ্যে হ্যাশ পরবর্তী হ্যাশ যায় bins এবং অন্য বিনের মধ্যে, আমাদের রয়েছে:iimi1mmni1m1n(m1)

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

rewriting:

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

এটির গতি বাড়ানোর জন্য আপনি কয়েকটি জিনিস করতে পারেন। of বাদ দেওয়া যেতে পারে কারণ এটি সর্বাধিকের অবস্থান পরিবর্তন করে না। চলমান সময় হ্রাস করতে আপনি সাথে একাধিক কলের সাথে ডায়নামিক প্রোগ্রামিং সারণীগুলি ভাগ করতে পারেন । আপনি যদি মনে করেন একটি একক সর্বাধিক নেই ইচ্ছুক হন, তাহলে তোমাদের উপর পুনরাবৃত্তির বন্ধ করতে পারবেন তাড়াতাড়ি এবং সময় চলমান পেতে যেখানে বিন্দু কোথায় সর্বোচ্চ লাগে, অথবা এমনকি একটি বাইনারি অনুসন্ধান এবং পেতে । পি(মি,আমি)হে(মি)আমিহে(মি)পিহে(মিলগএন)1nP(m,i)O(nm)iO(jm)jPO(mlogn)


2

মূল ধারণাটি শূন্য বিটের সংখ্যার প্রত্যাশা অনুমান করা।

প্রতিটি বিট জন্য, কে হ্যাশ ফাংশন সঙ্গে টি সন্নিবেশ পর শূন্য হচ্ছে সম্ভাবনা আছে:।(11N)KteKtN

তারপরে শূন্য বিট সংখ্যার প্রত্যাশাটি হওয়া উচিত:

এন-এমNeKtN পর্যবেক্ষণ দ্বারা অনুমানNM

অবশেষে আমরা পেয়েছিt=NKln(1MN)


1

N সন্নিবেশের পরে একটি নির্দিষ্ট বিট 1 হওয়ার সম্ভাবনা হ'ল: পি = 1 - (1 - 1 / এম) ^ (ন)

X_i কে একটি পৃথক র্যান্ডম ভেরিয়েবল হতে দিন যা 1 এর স্থানে থাকা বিটটি অন্যথায় 1 এবং 0 হয়। এক্স = এক্স_1 + এক্স_2 + .... + এক্স_মি। তারপরে, ই [এক্স] = মি * পি

যদি সেট বিটের মোট সংখ্যা এস হয়, তবে: ই [এক্স] = এস যা মি * পি = এস বোঝায় এটি এন এর জন্য সমাধান হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.