Фільтр Блума (англ. Bloom filter) — заощадлива до пам'яті ймовірнісна структура даних, призначена для перевірки приналежності елементів до множини. Запропонована Бартоном Говардом Блумом (англ. Burton Howard Bloom) в 1970 році.
Допускає помилкові спрацювання, але пропуск події неможливий, тому фільтр Блума має 100 % потужність. Алгоритм дозволяє перевірити або «ймовірну приналежність до множини», або «точну не приналежність». Можна додавати нові елементи до множини, але не можна їх видаляти (хоча цю проблему можна вирішити «рахуючим» фільтром). Чим більше елементів у множині, тим вища ймовірність помилкового спрацювання.
Блум запропонував цей алгоритм для випадків, коли необхідно обробляти таку кількість даних, що звичайні алгоритми хешування потребуватимуть понад міру пам'яті. Як приклад, він навів алгоритм автоматичного перенесення слів зі словником 500 тисяч слів, 90 % яких підпадають під прості правила розбиття, а решта 10 % потребує повільного доступу до жорсткого диску для пошуку конкретних шаблонів розбиття. За умови достатнього обсягу оперативної пам'яті, звичайне хешування позбавило би потреби в зайвих зверненнях до жорсткого диску. Проте, якщо обсяг оперативної пам'яті обмежений, то фільтр Блума дозволяє позбутись більшості зайвих звернень і, при цьому, використовує менше пам'яті. Наприклад, при використанні лише 15 % пам'яті звичайного хеш-алгоритму, фільтр Блума позбувається 85 % запитів до жорсткого диску, що є варіантом 85-15 правила Парето.
Зазвичай, незалежно від кількості елементів в множині, достатньо не більше 10 біт на елемент для досягнення частки помилкового спрацювання в 1 %.
Опис алгоритму
Порожній фільтр Блума — це масив m біт, що мають значення 0. Також мають бути визначені k хеш-функцій, кожна з яких відображає або хешує елемент множини на одну з m позицій в масиві з рівномірним розподілом ймовірностей.
Аби додати елемент, слід обробити його k хеш-функціями і обчислити k позицій в масиві. Встановити значення біт в цих позиціях рівними 1.
Для перевірки присутності елемента в множині, його слід обробити кожною з k хеш-функцій та отримати k позицій в масиві. Якщо будь-який з біт на цих позиціях дорівнює 0, то елемент гарантовано не перебуває в множині. Якби елемент належав множині, то всі біти отримали б значення 1 при додаванні елемента до множини. Якщо всі біти мають значення 1, тоді або елемент належить множині, або ж біти отримали значення 1 при додаванні інших елементів, що призведе до помилкового спрацювання. Простий фільтр Блума не дозволяє уникнути помилкових спрацювань.
Задача створення k незалежних хеш-функцій може бути заскладною для великих k. Якщо хеш-функція обчислює якісні ключі з широким діапазоном значень, то можливо «розрізати» масив біт на k фрагментів. Як варіант, якщо хеш-функція використовує початкові значення, можна використати k різних початкових значень, або додати ці значення до ключа.
Прибрати елемент з простого фільтра Блума неможливо, оскільки пропуск подій неприпустимий. Якщо просто присвоїти значення 0 тим бітам, які отримані при хешування елемента, то будуть видалені інші елементи, хешування яких містить ці біти. Оскільки відсутня можливість перевірити, які іще елементи хешуються на ті самі біти, просте присвоєння 0 може призвести до пропуску подій.
Вилучення елементів з фільтра Блума можливо реалізувати з додатковим фільтром, в якому зберігатимуться вилучені елементи. Однак, помилкові спрацювання в додатковому фільтрі стануть пропусками подій в об'єднаному фільтрі, що може бути небажаним. При цьому, повернути раніше видалений елемент неможливо, оскільки цей елемент доведеться видаляти з додаткового фільтру.
Див. також
Примітки
- Bloom, Burton H. (1970), Space/Time Trade-offs in Hash Coding with Allowable Errors, Communications of the ACM, 13 (7): 422—426, doi:10.1145/362686.362692
- Bonomi, Flavio; Mitzenmacher, Michael; Panigrahy, Rina; Singh, Sushil; Varghese, George (2006), An Improved Construction for Counting Bloom Filters, Algorithms – ESA 2006, 14th Annual European Symposium (PDF), Lecture Notes in Computer Science, т. 4168, с. 684—695, doi:10.1007/11841036_61, ISBN
Література
- Jure Leskovec, Anand Rajaraman, Jeffrey D. Ullman (2014). 4.3.2 The Bloom Filter. Mining of Massive Datasets (PDF).
Посилання
- Онлайн-калькулятор параметрів фільтра Блума.
Це незавершена стаття про структури даних. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Filtr Bluma angl Bloom filter zaoshadliva do pam yati jmovirnisna struktura danih priznachena dlya perevirki prinalezhnosti elementiv do mnozhini Zaproponovana Bartonom Govardom Blumom angl Burton Howard Bloom v 1970 roci Dopuskaye pomilkovi spracyuvannya ale propusk podiyi nemozhlivij tomu filtr Bluma maye 100 potuzhnist Algoritm dozvolyaye pereviriti abo jmovirnu prinalezhnist do mnozhini abo tochnu ne prinalezhnist Mozhna dodavati novi elementi do mnozhini ale ne mozhna yih vidalyati hocha cyu problemu mozhna virishiti rahuyuchim filtrom Chim bilshe elementiv u mnozhini tim visha jmovirnist pomilkovogo spracyuvannya Blum zaproponuvav cej algoritm dlya vipadkiv koli neobhidno obroblyati taku kilkist danih sho zvichajni algoritmi heshuvannya potrebuvatimut ponad miru pam yati Yak priklad vin naviv algoritm avtomatichnogo perenesennya sliv zi slovnikom 500 tisyach sliv 90 yakih pidpadayut pid prosti pravila rozbittya a reshta 10 potrebuye povilnogo dostupu do zhorstkogo disku dlya poshuku konkretnih shabloniv rozbittya Za umovi dostatnogo obsyagu operativnoyi pam yati zvichajne heshuvannya pozbavilo bi potrebi v zajvih zvernennyah do zhorstkogo disku Prote yaksho obsyag operativnoyi pam yati obmezhenij to filtr Bluma dozvolyaye pozbutis bilshosti zajvih zvernen i pri comu vikoristovuye menshe pam yati Napriklad pri vikoristanni lishe 15 pam yati zvichajnogo hesh algoritmu filtr Bluma pozbuvayetsya 85 zapitiv do zhorstkogo disku sho ye variantom 85 15 pravila Pareto Zazvichaj nezalezhno vid kilkosti elementiv v mnozhini dostatno ne bilshe 10 bit na element dlya dosyagnennya chastki pomilkovogo spracyuvannya v 1 Opis algoritmuPriklad filtru Bluma dlya mnozhini x y z Kolorovi strilki vkazuyut na miscya v masivi bit na yaki vidobrazhayetsya kozhen element Element w ne nalezhit mnozhini x y z oskilki jogo hesh vidobrazhayetsya na poziciyu z 0 V cij ilyustraciyi m 18 ta k 3 Porozhnij filtr Bluma ce masiv m bit sho mayut znachennya 0 Takozh mayut buti viznacheni k hesh funkcij kozhna z yakih vidobrazhaye abo heshuye element mnozhini na odnu z m pozicij v masivi z rivnomirnim rozpodilom jmovirnostej Abi dodati element slid obrobiti jogo k hesh funkciyami i obchisliti k pozicij v masivi Vstanoviti znachennya bit v cih poziciyah rivnimi 1 Dlya perevirki prisutnosti elementa v mnozhini jogo slid obrobiti kozhnoyu z k hesh funkcij ta otrimati k pozicij v masivi Yaksho bud yakij z bit na cih poziciyah dorivnyuye 0 to element garantovano ne perebuvaye v mnozhini Yakbi element nalezhav mnozhini to vsi biti otrimali b znachennya 1 pri dodavanni elementa do mnozhini Yaksho vsi biti mayut znachennya 1 todi abo element nalezhit mnozhini abo zh biti otrimali znachennya 1 pri dodavanni inshih elementiv sho prizvede do pomilkovogo spracyuvannya Prostij filtr Bluma ne dozvolyaye uniknuti pomilkovih spracyuvan Zadacha stvorennya k nezalezhnih hesh funkcij mozhe buti zaskladnoyu dlya velikih k Yaksho hesh funkciya obchislyuye yakisni klyuchi z shirokim diapazonom znachen to mozhlivo rozrizati masiv bit na k fragmentiv Yak variant yaksho hesh funkciya vikoristovuye pochatkovi znachennya mozhna vikoristati k riznih pochatkovih znachen abo dodati ci znachennya do klyucha Pribrati element z prostogo filtra Bluma nemozhlivo oskilki propusk podij nepripustimij Yaksho prosto prisvoyiti znachennya 0 tim bitam yaki otrimani pri heshuvannya elementa to budut vidaleni inshi elementi heshuvannya yakih mistit ci biti Oskilki vidsutnya mozhlivist pereviriti yaki ishe elementi heshuyutsya na ti sami biti proste prisvoyennya 0 mozhe prizvesti do propusku podij Viluchennya elementiv z filtra Bluma mozhlivo realizuvati z dodatkovim filtrom v yakomu zberigatimutsya vilucheni elementi Odnak pomilkovi spracyuvannya v dodatkovomu filtri stanut propuskami podij v ob yednanomu filtri sho mozhe buti nebazhanim Pri comu povernuti ranishe vidalenij element nemozhlivo oskilki cej element dovedetsya vidalyati z dodatkovogo filtru Div takozhHesh tablicya Spisok z propuskamiPrimitkiBloom Burton H 1970 Space Time Trade offs in Hash Coding with Allowable Errors Communications of the ACM 13 7 422 426 doi 10 1145 362686 362692 Bonomi Flavio Mitzenmacher Michael Panigrahy Rina Singh Sushil Varghese George 2006 An Improved Construction for Counting Bloom Filters Algorithms ESA 2006 14th Annual European Symposium PDF Lecture Notes in Computer Science t 4168 s 684 695 doi 10 1007 11841036 61 ISBN 978 3 540 38875 3LiteraturaJure Leskovec Anand Rajaraman Jeffrey D Ullman 2014 4 3 2 The Bloom Filter Mining of Massive Datasets PDF PosilannyaOnlajn kalkulyator parametriv filtra Bluma Ce nezavershena stattya pro strukturi danih Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi