কোনও সম্ভাব্য সেট নেই কোনও মিথ্যা ধনাত্মক?


35

সুতরাং, ব্লুম ফিল্টারগুলি বেশ দুর্দান্ত - এগুলি এমন সেট যা কোনও সদস্যহীন চেককে মিথ্যা নেগেটিভ সমর্থন করে না, তবে মিথ্যা ধনাত্মক হওয়ার একটি ছোট সুযোগ রয়েছে। যদিও সম্প্রতি, আমি একটি "ব্লুম ফিল্টার" চাই যা এর বিপরীতে গ্যারান্টি দেয়: কোনও মিথ্যা ধনাত্মক নয়, তবে সম্ভাব্য মিথ্যা নেতিবাচক।

আমার অনুপ্রেরণাটি সহজ: প্রক্রিয়া করার জন্য আইটেমগুলির একটি বিশাল স্ট্রিম দেওয়া হয়েছে (নকল সহ), আমরা এর আগে দেখেছি এমন আইটেমগুলি প্রক্রিয়াকরণ এড়াতে চাই। এটি কোনও সদৃশ প্রক্রিয়া করতে ক্ষতি করে না, এটি কেবল সময়ের অপচয়। তবুও, আমরা যদি কোনও উপাদানকে প্রক্রিয়া করতে অবহেলা করি তবে তা বিপর্যয়কর হবে। একটি "বিপরীত ব্লুম ফিল্টার" দিয়ে, কেউ অল্প জায়গার ওভারহেডের সাথে দেখা আইটেমগুলি সংরক্ষণ করতে পারে এবং সেটে সদস্যতার জন্য পরীক্ষা করে উচ্চ সম্ভাবনার সাথে ডুপ্লিকেটগুলি প্রক্রিয়াকরণ এড়াতে পারে।

তবুও আমি সাজানোর কিছু খুঁজে পাচ্ছি না। সবচেয়ে কাছের আমি খুঁজে পেয়েছি " রিচুড ব্লুম ফিল্টারস ", যা একজনকে উচ্চতর মিথ্যা নেতিবাচক হারের জন্য নির্বাচিত মিথ্যা ধনাত্মক ব্যবসায়ের সুযোগ দেয়। যাইহোক, যখন কেউ সমস্ত মিথ্যা ধনাত্মকতা সরাতে চায় তখন তাদের ডেটা স্ট্রাকচার কতটা কার্যকরভাবে কাজ করে তা আমি জানি না ।

কেউ কি এরকম কিছু দেখেছেন? :)


3
আমি যে সেটে আগ্রহী সেটির পরিপূরক অসীম। আমি কীভাবে এটি সঞ্চয় করব?
ক্রিস্টোফার মনসান্টো

11
আমি সমস্যাটি দেখতে পাই (আধুনিক ডিস্কগুলি এখনও যথেষ্ট বড় নয়)।
ডেভ ক্লার্ক

8
আপনার যদি এই জাতীয় ডেটা কাঠামো থাকে তবে আপনি এটি ব্যবহার করে "প্রতারণা" করতে পারেন এটি ব্যবহার করে ডাব্লু / নিয়মিত ব্লুম ফিল্টার এবং সঠিক সেট সদস্যতা সঞ্চয় করতে।
মার্ক রিটব্ল্যাট

1
@ মারক্রেইটব্ল্যাট ব্লুম ফিল্টার এবং ক্যাশে উভয়ই সম্ভাবনাময়, এবং এর কোনও সংমিশ্রণই সম্ভাব্য, অর্থাৎ সঠিক সেট সদস্যপদ পরীক্ষা অর্জন করতে সক্ষম হবে না। :)
awdz9nld

উত্তর:


25

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


উত্তর করার জন্য ধন্যবাদ. হ্যাঁ, এটি সুস্পষ্ট সমাধান - যদি এটি স্ট্যান্ডার্ড সমাধানও হয় তবে মনে হয় আমি ভাগ্যের বাইরে আছি। আচ্ছা ভালো.
ক্রিস্টোফার মনসান্টো

2
একে ডাইরেক্ট-ম্যাপযুক্ত ক্যাশে বলা হয় এবং এটি সাধারণত সিপিইউতে ব্যবহৃত হয়। (যে কোনও ক্যাশে বা ক্ষতিকারক হ্যাশ সেট বিভিন্ন ডিগ্রীতে প্রয়োজনীয়তা ফিট করে)। ত্রুটি হার হ্যাশ ফাংশন বিতরণ (তুষারপাত) এর একটি ফাংশন এবং ক্যাশে / সেটে উপলভ্য স্লটের সংখ্যা - সেই অনুসারে সামঞ্জস্য করুন। :)
awdz9nld

এছাড়াও মনে রাখবেন যে কেবল ভারব্যাটিম কীগুলি মিথ্যা ধনাত্মক পরিচয় না দিয়ে সংরক্ষণ করা যেতে পারে (উদাহরণস্বরূপ একটি হ্যাশ কী সংরক্ষণ করা)
awdz9nld

20

এই প্রশ্নের উত্তর নেই". কেন তা দেখতে, আমরা একটি অত্যন্ত চরম কেস সম্পর্কে চিন্তা করতে পারি এবং একটি নিয়মিত ব্লুম ফিল্টার কীভাবে বনাম একটি তাত্ত্বিক "বিজারো ওয়ার্ল্ড" ব্লুম ফিল্টারটি কাজ করবে, আমরা একটি "গ্লোম ফিল্টার" বলতে পারি।

একটি ব্লুম ফিল্টার সম্পর্কে দুর্দান্ত যে আপনি ত্রুটি হওয়ার সম্ভাবনা এবং সঞ্চিত আইটেমের সংখ্যার ক্ষেত্রে একটি নির্দিষ্ট আকারের একটি ডেটা স্ট্রাকচার ব্যবহার করে আইটেমগুলির সদস্যতার জন্য (মিথ্যা পজিটিভ সহ) একতরফা পরীক্ষা করতে পারেন । মাপ আইটেম নিজেদের এ সব কোন ব্যাপার না। উদাহরণস্বরূপ, যদি আমরা 3% এরও কম ত্রুটি সহ 1000 টি আইটেম সংরক্ষণ করতে একটি ব্লুম ফিল্টার স্থাপন করে থাকি, তবে আমরা উইকিপিডিয়ায় পুরো কর্পসের 1000 টি ভিন্ন সংস্করণ সংরক্ষণ করতে পারি, যার প্রতিটি অক্ষরে একটি পরিবর্তন ছিল এবং আমরা এখনও আমাদের যে মেট্রিকগুলি চান তা পান এবং ডেটা কাঠামো খুব ছোট (কিলোবাইটের চেয়ে কম) হবে। অবশ্যই, এই হ্যাশগুলির গণনা করা একটি চ্যালেঞ্জ হবে, তবে নীতিটি এখনও ধরে রেখেছে।

এখন, সেই একই বৃহত্তর স্ট্রিংগুলি একটি গ্লোব ফিল্টারে সংরক্ষণের বিবেচনা করুন! আমরা এখন কেবল মিথ্যা নেতিবাচক থাকতে পারি। সুতরাং আমরা যদি "হ্যাঁ, উইকিপিডিয়াটির পুরো কর্পাসের সেই সংস্করণটি এই সেটটিতে রয়েছে", তবে আমাদের সে সম্পর্কে একেবারে সঠিক হতে হবে। এর অর্থ হ্যাশিং আমাদের সাহায্য করবে না, কারণ সর্বদা একই জাতীয় মানটিতে থাকা কিছু অন্যান্য স্ট্রিং থাকবে। "হ্যাঁ" বলার এবং নিশ্চিত হওয়ার একমাত্র উপায় হ'ল সম্পূর্ণ স্ট্রিং বা একই দৈর্ঘ্যের কিছু সমতুল্য ডেটা সংরক্ষণ করা। আমরা সবসময় এটি সঞ্চয় করতে এবং "না" বলতে পারি না, তবে শেষ পর্যন্ত ত্রুটির হারটি আমাদের সাথে ধরা দেবে। আমরা যেটা করতে পারি তা হ'ল সংকোচন, স্ট্রাকচারের আকারটি সঞ্চিত ডেটা এনট্রপির পণ্য এবং সঠিকভাবে যা আমরা চাচ্ছি তার চেয়ে কম।

সুতরাং, দুর্ভাগ্যক্রমে গ্লোম ফিল্টার উপস্থিত নেই। ক্যাচিং একমাত্র সমাধান, তবে এটি কোনও ব্লুম ফিল্টারের বিপরীতে নয়, কারণ এর আকারটি যে পরিমাণ তথ্য সংরক্ষণ করা হচ্ছে এবং ফিল্টারটির কাঙ্ক্ষিত নির্ভুলতার হারের সাথে তার সমানুপাতিক হবে। অবশ্যই, অনেক বাস্তব-জগতের পরিস্থিতিতে, বড় ডেটা কোনও আইডি দ্বারা উপস্থাপন করা যায়, তাই ক্যাশে করা এখনও যথেষ্ট গ্রহণযোগ্য হতে পারে। তবে এটি শক্তিশালী ব্লুম ফিল্টারের তুলনায় মূলত আলাদা।


চেকআউট somethingsimar.com/2012/05/21/the-opposite-of-a-bloom-filter - এই বাস্তবায়ন কি ভুল /
ইয়াহোসেফ

@ ইয়াহোসেফ এটি ঠিক আছে এবং আপনার প্রয়োজনের জন্য কাজ করতে পারে তবে আপনি লক্ষ্য করবেন যে লেখক সেখানে "কয়েকটি আইডি যা ইভেন্টটিকে পুরোপুরি সনাক্ত করে" বলে কথা বলেছে। সুতরাং, যা বাস্তবায়িত হয় কার্যকরভাবে এখনও পুরো বস্তুটি সংরক্ষণ করে। সুতরাং, এটি একটি ক্যাশের বৈকল্পিক। সত্যিকারের "একটি ব্লুম ফিল্টারের বিপরীতে", যদি এটি বিদ্যমান থাকে তবে পুরো বস্তুগুলি সংরক্ষণ করার প্রয়োজন হবে না।
পেন্টস 90

তিনি কয়েকটি আইডির উল্লেখ করেছিলেন যা এই ইভেন্টটি সনাক্ত করে - পুরো বস্তুটি নয়। আমার কেবল "ক্যাশে "টি সেশন_আইডিতে রাখা দরকার - সম্পূর্ণ ইন্টারঅ্যাকশন রেকর্ড নয়। তবে আমি শুনেছি যে এটি পুষ্প বা হাইপারলগ হিসাবে একই ধরণের পদ্ধতির নয়।
ইয়েসোসফ

আপনার "প্রমাণ" এ আপনি ধরে নিয়েছেন যে সম্ভাব্য এন্ট্রিগুলির সীমাহীন সংখ্যা রয়েছে। যাইহোক, এমন কিছু ক্ষেত্রে রয়েছে যেখানে সম্ভাব্য এন্ট্রিগুলির সেটটি আগে থেকেই জানা ছিল। উদাহরণস্বরূপ, মেমরি পৃষ্ঠার আবর্জনা সংগ্রহের জন্য: আপনি জানেন যে এটিতে কোন এন্ট্রি রয়েছে। এখন আপনি একটি "গ্লোম ফিল্টার" তৈরি করেন যা প্রতিটি সূচি 0..n তে প্রতিটি প্রবেশের মানচিত্র করে। এখন যখন কোনও এন্ট্রি সরানো হবে তখন সেই সূচকে কিছুটা সেট করুন। সমস্ত বিট সেট হয়ে গেলে, আপনি পৃষ্ঠাটি আবর্জনা সংগ্রহ করতে পারেন। "গ্লোম ফিল্টার" একটি এমপিএইচএফ। মিথ্যা নেতিবাচক জন্য অনুমতি দিতে, এমপিএইচএফ পরিবর্তন করুন যাতে কিছু এন্ট্রি n + 1 এ ম্যাপ করা হয়।
টমাস মোলার

@ থমাস মিয়েলার সঠিক, আমি সবচেয়ে খারাপ / অ্যাডভারসিয়েরিয়াল কেস ধরে নিচ্ছি, এটি স্ট্যান্ডার্ড সিএস থিওরি পয়েন্ট। এটি সত্য যে আপনার যদি কেবলমাত্র এন সম্ভাব্য এন্ট্রিগুলির একটি নির্দিষ্ট সেট থাকে, তবে প্রতিটি আইটেমের জন্য কেবল লগ এন স্থান সহ প্রচুর সরল সমাধান রয়েছে। যদিও ব্লুম ফিল্টারটির তেমন কোনও সীমাবদ্ধতা নেই।
পেন্টস 90

13

আপনি কেবল একটি ক্যাশে চান , তবে একটি অদ্ভুত উপায়ে এটি সম্পর্কে চিন্তা করছেন।


1
... বিশদ যত্ন? অবশ্যই একটি ক্যাশে কাজ করবে, তবে এটি আদর্শ নয়, সুতরাং সম্ভাব্য ডেটা স্ট্রাকচারগুলিতে শিল্পের অবস্থা সম্পর্কে একটি প্রশ্ন। আরও সুনির্দিষ্ট হওয়ার জন্য: ক্যাশিংয়ের কৌশলগুলি সম্পর্কে আমি জানি যে প্রচুর পরিমাণে স্টোরেজ প্রয়োজন। যত বেশি ক্যাশের স্তর, তত বেশি স্টোরেজ ব্যবহৃত হবে। কেউ ক্যাশে সঞ্চিত উপাদানগুলির উপর একটি আবদ্ধ স্থাপন করতে পারে, ব্যবহারের নিদর্শন ইত্যাদির সাহায্যে কৌশলগুলি করতে পারে, তবে এটি এখনও ব্লুম ফিল্টার সরবরাহ করে এমন মিথ্যা উত্তর অনুপাতের স্থান দক্ষতার কাছাকাছি কোথাও পায় না।
ক্রিস্টোফার মনসান্টো

1
(অব্যাহত) বলা হচ্ছে, আমি একটি স্পষ্ট ক্যাশিং কৌশল সম্পর্কে ভুলে যাচ্ছি যা আমার সমস্ত সমস্যার সমাধান করে। সেক্ষেত্রে আপনি উইকিপিডিয়ায় কোনও সাধারণ বিভাগের লিঙ্ক দেওয়ার পরিবর্তে আপনি সেই কৌশলটি স্পষ্ট করে বলতে পারেন?
ক্রিস্টোফার মনসান্টো

2

অস্বীকৃতি: আমি ক্যাশেগুলিতে বিশেষজ্ঞ নই সুতরাং এটি একটি নিরীহ ধারণা হতে পারে এবং এটি একটি পরিচিত ধারণাও হতে পারে যা আমি এর আগে কখনও শুনিনি। সুতরাং যদি আমি এর উল্লেখ উল্লেখ করতে ব্যর্থ হই তবে আমাকে ক্ষমা করুন (যদি তা বিদ্যমান থাকে); এবং দয়া করে পোস্টটি সম্পাদনা এবং এটি যুক্ত করার জন্য কোনও রেফারেন্স থাকলে আমাকে জানান inform (আমি সন্দেহ করছি এটির কোনও রেফারেন্স থাকতে পারে কারণ এটি এতটা স্বজ্ঞাত)।


0

আমি আংশিক আইটেমযুক্ত এভিএল (এবং কখনও কখনও লাল-কালো) গাছ ব্যবহার করেছি কোনও মিথ্যা নেতিবাচক ছাড়া ফিল্টার হিসাবে কাজ করতে। গাছটি সন্নিবেশ করানো বা জিজ্ঞাসা করার সময় আইটেমটির প্রথম প্রথম এক্স বাইট ব্যবহার করুন। যেহেতু ডেটা কাঠামো আকারে সম্ভাব্য নয়, কিছুটা সংঘর্ষের দ্বারা মিথ্যা-পজিটিভ হওয়ার ঝুঁকি নেই। এবং পুরো আইটেমটি ক্যাশে করার বিপরীতে, এই পদ্ধতির সাহায্যে আপনি একটি গণনযোগ্য সর্বোচ্চ স্থান পান। মিথ্যা ধনাত্মকতা এবং স্থানের ব্যয়ের তুলনায় আপনি বিভিন্ন উপসর্গ দৈর্ঘ্য / গাছের গভীরতার কথা বিবেচনা করে ভুয়া ধনাত্মকতার হারটি টিউন করতে পারেন।


আমি স্ট্রিং ডেটা দিয়ে চেষ্টা করার চেষ্টা করতে চেয়েছিলাম, তবে আমার ডেটা বাইনারি স্ট্রাকচারগুলি প্যাক করে।
JRideout

0

আমি মনে করি যে কেউ নিম্ন সীমাবদ্ধ প্রমাণ করে প্রমাণ করতে পারে যে উপরের ডাটা স্ট্রাকচারটি বিদ্যমান থাকতে পারে না। মূলত, যদি ডেটা স্ট্রাকচারটি এম বিট ব্যবহার করে, তবে একটি স্থির বিট-ভেক্টর (একটি ইনপুটের উপস্থাপনা) সর্বাধিক (((আন) + এন ইপিএস) এর সাথে মিলিত হতে পারে a একটি গণনা যুক্তির দ্বারা সেটগুলি (আন)) সেট করতে পারে। 2 ^ মিটার বার প্রদত্ত এই সংখ্যাটি অবশ্যই কমপক্ষে (ইউ u পছন্দ এন) হওয়া উচিত (সমস্ত সেট অবশ্যই উপস্থাপন করতে হবে), আমরা একটি নিম্ন সীমা পাই যা মূলত সেট এসকে সঠিকভাবে সঞ্চয় করার খুব কাছে।

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