ব্লুম ফিল্টারগুলি কি হ্যাশগুলির চেয়ে দ্রুত গতিযুক্ত, এমনকি অ্যাকাউন্টে ক্যাশে নিচ্ছে?


16

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

আমি কিছু অনুপস্থিত করছি?


পুরোপুরি দূরবর্তী স্থানগুলি কী? কেবলমাত্র বি বিট আছে। এটি সম্ভবত একটি একক নিবন্ধেই বা সবচেয়ে খারাপ একক ক্যাশে লাইনের সাথে ফিট করে।

1
@ ডেলান এএফাইক এটি প্রায় 10 টি বিট / উপাদান ব্যবহার করে, না? সুতরাং, কয়েক হাজার উপাদান - অর্থাত্ বিশাল ডেটাস্টোরগুলির জন্য - এটি অবশ্যই কোনও ক্যাশে ফিট করবে না। সুতরাং, আপনি যদি kহ্যাশ ব্যবহার করছেন kতবে আপনার প্রতি পড়তে সম্ভবত ক্যাশে মিস হচ্ছে । অন্যদিকে হ্যাশ টেবিলগুলি গ্যারান্টি দেয় যে আপনার উত্তরটি 0 টি ক্যাশে দিয়ে থাকে তবে বেশিরভাগ সময় মিস হয় - সংঘর্ষগুলি বিরল, যাই হোক না কেন।
মাইয়াভিক্টর

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

উত্তর:


33

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

সরলিকৃত হ্যাশ ফাংশনটি বিবেচনা করুন (কেবলমাত্র উদাহরণের জন্য!) f(x) = x % 2। এখন আপনি ইনপুট নিম্নলিখিত পূর্ণসংখ্যার: 2, 3, 4, 5, 6, 7

স্ট্যান্ডার্ড হ্যাশ: প্রদত্ত মান কুচি-কুচি করিয়া কাটা বস্তু করা হবে, এবং আমরা কারণে collisions অনেক সঙ্গে শেষ f(2) = f(4) = f(6) = 0এবং f(3) = f(5) = f(7) = 1। তবুও, হ্যাশ এই সমস্ত মান সংরক্ষণ করে এবং এটি আপনাকে সংরক্ষণ করতে পারে না তা জানাতে সক্ষম 8হবে। কীভাবে তা করে? এটি সংঘর্ষের উপর নজর রাখে এবং একই হ্যাশ-মান সহ সমস্ত মান সংরক্ষণ করে, তারপরে আপনি যখন এটি অনুসন্ধান করেন তখন এটি অতিরিক্তভাবে আপনার অনুসন্ধানের সাথে তুলনা করে। সুতরাং আসুন এর জন্য মানচিত্রটি জিজ্ঞাসা করুন 8: f(8) = 0সুতরাং এটি এমন একটি বালতি সন্ধান করবে যেখানে আমরা ইতিমধ্যে সন্নিবেশ করিয়েছি 2, 4, 6এবং আপনাকে যে 8ইনপুটটির অংশ ছিল না তা জানাতে 3 টি তুলনা করা দরকার ।

ব্লুম ফিল্টার: সাধারণত, প্রতিটি ইনপুট মান kবিভিন্ন হ্যাশ ফাংশনের বিরুদ্ধে হ্যাশ করা হয়। আবার সরলতার জন্য, ধরে নেওয়া যাক আমরা কেবলমাত্র একক হ্যাশ ফাংশনটি ব্যবহার করি f। আমরা তখন 2 মূল্যবোধের একটি অ্যারের প্রয়োজন এবং যখন আমরা ইনপুট সম্মুখীন 2এটা কারণে তার মানে f(2) = 0আমরা অবস্থানে অ্যারের মান সেট 0মান 14এবং একই জন্য ঘটে 6। একইভাবে, ইনপুটগুলি 3, 5, 7প্রতিটি অ্যারের অবস্থানকে 1মান হিসাবে সেট করে 1। এখন আমরা জিজ্ঞাসা করি যে ইনপুটটির 8অংশ ছিল কিনা : f(8) = 0এবং অবস্থানের অ্যারেটি 0রয়েছে 1, তাই ব্লুম ফিল্টারটি মিথ্যাভাবে দাবি করবে যে 8প্রকৃতপক্ষে ইনপুটটির অংশ ছিল।

কিছুটা আরও বাস্তবসম্মত পেতে, আসুন আমরা বিবেচনা করি যে আমরা একটি দ্বিতীয় হ্যাশ ফাংশন যুক্ত করেছি g(x) = x % 10। এটির সাহায্যে ইনপুট মান 2দুটি হ্যাশ মানগুলিতে f(2) = 0নিয়ে যায় g(2) = 2এবং দুটি অনুরূপ অ্যারে অবস্থান সেট করা হবে 1। অবশ্যই, অ্যারে এখন কমপক্ষে আকারের হওয়া উচিত 10। তবে আমরা যখন জিজ্ঞাসা 8করব তখন আমরা অবস্থানের 8কারণে অ্যারেটি পরীক্ষা করব g(8) = 8এবং এখনও সেই অবস্থান থাকবে 0। এ কারণেই অতিরিক্ত হ্যাশ ফাংশনগুলি আপনি যে মিথ্যা ধনাত্মকটি পেয়েছেন তা হ্রাস করে।

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

যাইহোক, আপনার একবার হ্যাশের সংঘর্ষ হলে স্ট্যান্ডার্ড হ্যাশকে ক্যোয়ারী মানের তুলনায় সঞ্চিত মানগুলির সমতা পরীক্ষা করতে হবে। এই সাম্যতার চেকটি নির্বিচারে ব্যয়বহুল হতে পারে এবং কোনও পুষ্পযুক্ত ফিল্টার দিয়ে কখনই ঘটে না।

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

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

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


দুর্দান্ত উত্তর। এই আমি বিভ্রান্ত ছিল। প্রকৃতপক্ষে প্রতিটি ডেটা স্ট্রাকচারের সর্বোত্তম ব্যবহারের কেস থাকে এবং ভিন্ন বিবেচনাটি বাণিজ্য বন্ধের উপর নির্ভর করে।
রিচার্ড

এটি একটি উপযুক্ত উদাহরণ সহ সত্যিই খুব ভাল ব্যাখ্যা। তাহলে আমরা কীভাবে 'কে' মানটি নিয়ে যাব? এটি কি আমাদের কাছে মূল্যমানের সংখ্যার উপর নির্ভর করে?
itraghz

5

পুষ্পযুক্ত ফিল্টার এবং হ্যাশগুলির ব্যবহারের ক্ষেত্রে পৃথক এবং বেশিরভাগ ক্ষেত্রে বিরক্তি দেখা যায়, তাই সরাসরি তুলনাটি বোঝায় না। এছাড়াও এটি বাস্তবায়নের প্রযুক্তিগত বিশদের উপর নির্ভর করবে কারণ বিভিন্ন ট্রেড-অফের সাথে হ্যাশের সংঘর্ষ পরিচালনা করার অনেক উপায় রয়েছে।

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

অন্যদিকে হ্যাশ টেবিলগুলি সঠিক, তবে তাদের সেটটি সংরক্ষণ করা দরকার store সুতরাং কোটি কোটি উপাদানগুলির জন্য টেরাবাইট মেমরির প্রয়োজন হবে (এবং এটি কেবল আমেরিকান ট্রিলিয়ন)। তারা প্রতিটি উপাদানগুলির জন্য অতিরিক্ত ডেটা সঞ্চয় করতে পারে, যা পুষ্প ফিল্টারগুলি পারে না।

সুতরাং আপনার যখন কোনও বড় সদস্যের (যে মেমরির সাথে খাপ খায় না বা ক্লায়েন্টে স্থানান্তর করা অবৈধ হয়) কোনও সদস্যের (যার মধ্যে সার্ভারের অনুসন্ধান করা, ডিস্ক থেকে পড়া এবং এরকম) ক্লায়েন্টে স্থানান্তর করা অবৈধ হয় তখন ব্লুম ফিল্টারগুলি ব্যবহার করা হয় বা এ জাতীয়) এবং সেটে থাকা অবজেক্টগুলির জন্য ধীরগতিতে চালনা এড়াতে চান।

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