بلوم فیلتر (Bloom Filter) یک ساختار دادهای است که هدف اصلی آن انجام عملیات بررسی عضویت (یعنی تعیین اینکه یک عنصر در مجموعهای وجود دارد یا خیر) با استفاده حداقلی از حافظه است. این فیلتر به ما کمک میکند تا سریعاً تشخیص دهیم که آیا یک عنصر ممکن است در مجموعه باشد یا نه، بدون نیاز به ذخیره کل مجموعه در حافظه.
بلوم فیلتر از یک آرایه بیت ثابت و چندین تابع هش (Hash Function) استفاده میکند. هر عنصر برای افزودن به فیلتر، از طریق این توابع هش شده و مقادیر حاصل در مکانهای مشخصی از این آرایه بیت، علامتگذاری میشوند.
برای بررسی اینکه آیا عنصری در مجموعه وجود دارد یا نه، مجدداً آن عنصر توسط همان توابع هش شده و مکانهای متناظر در آرایه بیت بررسی میشود. اگر همه بیتهای موردنظر علامتگذاری شده باشند، ممکن است آن عنصر در مجموعه وجود داشته باشد. اما اگر حتی یکی از بیتها علامتگذاری نشده باشد، با قطعیت میتوان گفت که آن عنصر در مجموعه وجود ندارد.
فرض کنید ما نیاز داریم بررسی کنیم که آیا یک آیتم خاص در یک فایل ذخیرهشده در کامپیوتر وجود دارد یا خیر. یکی از روشها این است که فایل را باز کنیم و هر آیتم موجود در آن را چک کنیم. این روش زمانبر است، بهخصوص اگر تعداد فایلها زیاد باشد.
اما با استفاده از بلوم فیلتر میتوانیم این کار را به شکلی بسیار سریعتر انجام دهیم. بلوم فیلتر به ما کمک میکند تا بدون نیاز به باز کردن و بررسی تمام فایل، به سرعت تشخیص دهیم که آیا آیتم ممکن است در فایل وجود داشته باشد یا نه. اگر بلوم فیلتر بگوید آیتم وجود ندارد، ما مطمئن هستیم. اما اگر بلوم فیلتر بگوید آیتم ممکن است وجود داشته باشد، هنوز احتمال خطا وجود دارد و باید فایل را بررسی کنیم.
نتایج مثبت کاذب زمانی رخ میدهد که بلوم فیلتر به اشتباه اعلام کند که یک عنصر در مجموعه وجود دارد، در حالی که در واقع آن عنصر اضافه نشده است.
به عنوان مثال، فرض کنید دو کلید زیر را به بلوم فیلتر اضافه کردهایم:
حال اگر بخواهیم بررسی کنیم که آیا "File3" در مجموعه وجود دارد، آن را هش میکنیم و به این نتیجه میرسیم:
ما "File3" را به بلوم فیلتر اضافه نکردهایم، اما بیتهای {5,9,3} قبلاً توسط عناصر قبلی تنظیم شدهاند، بنابراین بلوم فیلتر به اشتباه اعلام میکند که "File3" در مجموعه وجود دارد.
توابع هش در بلوم فیلتر باید دو ویژگی اصلی داشته باشند:
بلوم فیلتر در بسیاری از سیستمها و سرویسها کاربرد دارد:
بلوم فیلتر یک ساختار دادهای کارآمد و کمحافظه برای بررسی عضویت در مجموعه است که سرعت بالایی دارد اما احتمال نتایج مثبت کاذب را به همراه دارد. این ساختار در سیستمهای مختلف مانند گوگل کروم و Medium استفاده میشود تا عملکرد و حریم خصوصی را بهبود ببخشد. انتخاب صحیح توابع هش و تنظیمات بلوم فیلتر، کلید کاهش خطاها و بهبود کارایی آن است.