Фильтр Блума
Фи́льтр Блу́ма (англ. Bloom filter) — вероятностная структура данных, сконструированная в 1970 году, позволяющая проверять принадлежность элемента к множеству. При этом существует возможность получить ложноположительное срабатывание (элемента в множестве нет, но структура данных сообщает, что он есть), но не ложноотрицательное.
Фильтр Блума может использовать любой объём памяти, заранее заданный пользователем, причём чем он больше, тем меньше вероятность ложного срабатывания. Поддерживается операция добавления новых элементов в множество, но не удаления существующих (если только не используется модификация со счётчиками — фильтр Блума с подсчётом.
Конструкция

Фильтр Блума организуется как битовый массив из бит; изначально, когда структура данных хранит пустое множество, все
бит обнулены. Пользователь должен определить
независимых хеш-функций
, каждая из которых отображает множество элементов в множество мощностью
— иными словами, каждому элементу хеш-функция сопоставляет число от 1 до
. Для каждого элемента
биты массива с номерами
равными значениям хеш-функций устанавливаются в 1.
Для проверки принадлежности элемента к множеству хранимых элементов необходимо проверить состояние битов
. Если хотя бы один из них равен нулю, элемент не может принадлежать множеству (иначе бы при его добавлении все эти биты были установлены). Если все они равны единице, то структура данных сообщает, что
может принадлежать множеству. При этом может возникнуть две ситуации: либо элемент действительно принадлежит множеству, либо все эти биты оказались установлены по случайности при добавлении других элементов, что и является источником ложных срабатываний в этой структуре данных.
Независимость хеш-функций обеспечивает минимальную вероятность повторения индексов , минимизируя число бит установленных в 1 несколько раз. (А это главный источник ложноположительных срабатываний.)
В отличие от многих других структур данных, хранящих множество элементов, например, хеш-таблиц, фильтр Блума может представлять универсальное множество всех возможных элементов. В этом случае все биты в его битовом массиве равны единице.
Объединение и пересечение двух фильтров Блума одинакового размера и c одинаковым множеством хеш-функций может быть реализовано побитовыми операциями OR и AND над их битовыми массивами.
Вероятность ложноположительного срабатывания

Если размер битового массива равен бит, задано
хеш-функций, множество хеш-функций выбирается случайно, и для любого элемента
каждая хеш-функция
назначает ему одно из мест в битовом массиве с равной вероятностью:
,
и, кроме того, значения являются независимыми в совокупности случайными величинами (для упрощения последующего анализа), то вероятность того, что в некоторый
-й бит не будет записана единица во время операции вставки очередного элемента равна:
.
Вероятность того, что -й бит останется равным нулю после вставки
различных элементов
в изначально пустой фильтр Блума равна:
для достаточно большого ввиду второго замечательного предела.
Ложноположительное срабатывание состоит в том, что для некоторого элемента , не равного ни одному из вставленных, все
бит с номерами
окажутся ненулевыми, и фильтр Блума ошибочно ответит, что
входит во множество вставленных элементов. Вероятность такого события примерно равна:
.
Очевидно, что эта вероятность уменьшается с ростом (размера битового массива) и увеличивается с ростом
(числа вставленных элементов). Для фиксированных
и
оптимальное число
(число хеш-функций), минимизирующих её, равно:
.
При этом сама вероятность ложного срабатывания равна:
.
Как следствие, заметим, что для того, чтобы фильтр Блума поддерживал заданную ограниченную вероятность ложного срабатывания, размер битового массива должен быть линейно пропорционален числу вставленных элементов.
Применение
По сравнению с хеш-таблицами фильтр Блума может обходиться на несколько порядков меньшими объёмами памяти, жертвуя детерминизмом. Обычно он используется для уменьшения числа запросов к несуществующим данным в структуре данных с более дорогостоящим доступом (например, расположенной на жёстком диске или в сетевой базе данных), то есть для «фильтрации» запросов к ней.
Прокси-сервер Squid использует фильтры Блума для опции дайджетов кэша. Google BigTable использует фильтры Блума для уменьшения числа обращений к подсистеме хранения при проверке на существование заданной строки или столбца в таблице базы данных. Также многие программы для проверки орфографии используют фильтры Блума.
Примечания
- 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
- Bigtable: A Distributed Storage System for Structured Data. Дата обращения: 30 июля 2012. Архивировано 8 февраля 2015 года.
Для улучшения этой статьи желательно: |
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Фильтр Блума, Что такое Фильтр Блума? Что означает Фильтр Блума?
Fi ltr Blu ma angl Bloom filter veroyatnostnaya struktura dannyh skonstruirovannaya v 1970 godu pozvolyayushaya proveryat prinadlezhnost elementa k mnozhestvu Pri etom sushestvuet vozmozhnost poluchit lozhnopolozhitelnoe srabatyvanie elementa v mnozhestve net no struktura dannyh soobshaet chto on est no ne lozhnootricatelnoe Filtr Bluma mozhet ispolzovat lyuboj obyom pamyati zaranee zadannyj polzovatelem prichyom chem on bolshe tem menshe veroyatnost lozhnogo srabatyvaniya Podderzhivaetsya operaciya dobavleniya novyh elementov v mnozhestvo no ne udaleniya sushestvuyushih esli tolko ne ispolzuetsya modifikaciya so schyotchikami filtr Bluma s podschyotom KonstrukciyaPrimer filtra Bluma s m 18 displaystyle m 18 i k 3 displaystyle k 3 hranyashego mnozhestvo x y z displaystyle x y z Cvetnye strelki ukazyvayut na mesta v bitovom massive sootvetstvuyushie kazhdomu elementu mnozhestva Etot filtr Bluma mozhet opredelit chto element w displaystyle w ne vhodit v mnozhestvo tak kak odin iz sootvetstvuyushih emu bitov raven nulyu Filtr Bluma organizuetsya kak bitovyj massiv iz m displaystyle m bit iznachalno kogda struktura dannyh hranit pustoe mnozhestvo vse m displaystyle m bit obnuleny Polzovatel dolzhen opredelit k displaystyle k nezavisimyh hesh funkcij h1 hk displaystyle h 1 dots h k kazhdaya iz kotoryh otobrazhaet mnozhestvo elementov v mnozhestvo moshnostyu m displaystyle m inymi slovami kazhdomu elementu hesh funkciya sopostavlyaet chislo ot 1 do m displaystyle m Dlya kazhdogo elementa e displaystyle e bity massiva s nomerami h1 e hk e displaystyle h 1 e dots h k e ravnymi znacheniyam hesh funkcij ustanavlivayutsya v 1 Dlya proverki prinadlezhnosti elementa e displaystyle e k mnozhestvu hranimyh elementov neobhodimo proverit sostoyanie bitov h1 e hk e displaystyle h 1 e dots h k e Esli hotya by odin iz nih raven nulyu element ne mozhet prinadlezhat mnozhestvu inache by pri ego dobavlenii vse eti bity byli ustanovleny Esli vse oni ravny edinice to struktura dannyh soobshaet chto e displaystyle e mozhet prinadlezhat mnozhestvu Pri etom mozhet vozniknut dve situacii libo element dejstvitelno prinadlezhit mnozhestvu libo vse eti bity okazalis ustanovleny po sluchajnosti pri dobavlenii drugih elementov chto i yavlyaetsya istochnikom lozhnyh srabatyvanij v etoj strukture dannyh Nezavisimost hesh funkcij obespechivaet minimalnuyu veroyatnost povtoreniya indeksov hk e displaystyle h k e minimiziruya chislo bit ustanovlennyh v 1 neskolko raz A eto glavnyj istochnik lozhnopolozhitelnyh srabatyvanij V otlichie ot mnogih drugih struktur dannyh hranyashih mnozhestvo elementov naprimer hesh tablic filtr Bluma mozhet predstavlyat universalnoe mnozhestvo vseh vozmozhnyh elementov V etom sluchae vse bity v ego bitovom massive ravny edinice Obedinenie i peresechenie dvuh filtrov Bluma odinakovogo razmera i c odinakovym mnozhestvom hesh funkcij mozhet byt realizovano pobitovymi operaciyami OR i AND nad ih bitovymi massivami Veroyatnost lozhnopolozhitelnogo srabatyvaniyaOcenka veroyatnosti lozhnogo srabatyvaniya p displaystyle p kak funkciya ot chisla vstavlennyh elementov n displaystyle n i razmera bitovogo massiva m displaystyle m pri optimalnom chisle hesh funkcij k m n ln 2 displaystyle k m n ln 2 Esli razmer bitovogo massiva raven m displaystyle m bit zadano k displaystyle k hesh funkcij mnozhestvo hesh funkcij vybiraetsya sluchajno i dlya lyubogo elementa x displaystyle x kazhdaya hesh funkciya hi displaystyle h i naznachaet emu odno iz mest v bitovom massive s ravnoj veroyatnostyu Pr hi x p 1m p 1 m displaystyle Pr h i x p frac 1 m quad p 1 ldots m i krome togo znacheniya hi x displaystyle h i x yavlyayutsya nezavisimymi v sovokupnosti sluchajnymi velichinami dlya uprosheniya posleduyushego analiza to veroyatnost togo chto v nekotoryj p displaystyle p j bit ne budet zapisana edinica vo vremya operacii vstavki ocherednogo elementa ravna Pr h1 x p hk x p Pr hi x p k 1 1m k displaystyle Pr h 1 x neq p cap ldots cap h k x neq p Pr h i x neq p k left 1 frac 1 m right k Veroyatnost togo chto p displaystyle p j bit ostanetsya ravnym nulyu posle vstavki n displaystyle n razlichnyh elementov x1 xn displaystyle x 1 dots x n v iznachalno pustoj filtr Bluma ravna Pr i 1 k j 1 n hi xj p 1 1m kn e kn m displaystyle Pr left forall i in 1 dots k forall j in 1 ldots n h i x j neq p right left 1 frac 1 m right kn approx e kn m dlya dostatochno bolshogo m displaystyle m vvidu vtorogo zamechatelnogo predela Lozhnopolozhitelnoe srabatyvanie sostoit v tom chto dlya nekotorogo elementa y displaystyle y ne ravnogo ni odnomu iz vstavlennyh vse k displaystyle k bit s nomerami hi y displaystyle h i y okazhutsya nenulevymi i filtr Bluma oshibochno otvetit chto y displaystyle y vhodit vo mnozhestvo vstavlennyh elementov Veroyatnost takogo sobytiya primerno ravna 1 e kn m k displaystyle 1 e kn m k Ochevidno chto eta veroyatnost umenshaetsya s rostom m displaystyle m razmera bitovogo massiva i uvelichivaetsya s rostom n displaystyle n chisla vstavlennyh elementov Dlya fiksirovannyh m displaystyle m i n displaystyle n optimalnoe chislo k displaystyle k chislo hesh funkcij minimiziruyushih eyo ravno k mnln 2 0 6931mn displaystyle textstyle k frac m n ln 2 approx 0 6931 frac m n Pri etom sama veroyatnost lozhnogo srabatyvaniya ravna 2 k 0 6185m n displaystyle 2 k approx 0 6185 m n Kak sledstvie zametim chto dlya togo chtoby filtr Bluma podderzhival zadannuyu ogranichennuyu veroyatnost lozhnogo srabatyvaniya razmer bitovogo massiva dolzhen byt linejno proporcionalen chislu vstavlennyh elementov PrimeneniePo sravneniyu s hesh tablicami filtr Bluma mozhet obhoditsya na neskolko poryadkov menshimi obyomami pamyati zhertvuya determinizmom Obychno on ispolzuetsya dlya umensheniya chisla zaprosov k nesushestvuyushim dannym v strukture dannyh s bolee dorogostoyashim dostupom naprimer raspolozhennoj na zhyostkom diske ili v setevoj baze dannyh to est dlya filtracii zaprosov k nej Proksi server Squid ispolzuet filtry Bluma dlya opcii dajdzhetov kesha Google BigTable ispolzuet filtry Bluma dlya umensheniya chisla obrashenij k podsisteme hraneniya pri proverke na sushestvovanie zadannoj stroki ili stolbca v tablice bazy dannyh Takzhe mnogie programmy dlya proverki orfografii ispolzuyut filtry Bluma PrimechaniyaBloom 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 Bigtable A Distributed Storage System for Structured Data neopr Data obrasheniya 30 iyulya 2012 Arhivirovano 8 fevralya 2015 goda Dlya uluchsheniya etoj stati zhelatelno Najti i oformit v vide snosok ssylki na nezavisimye avtoritetnye istochniki podtverzhdayushie napisannoe Pozhalujsta posle ispravleniya problemy isklyuchite eyo iz spiska parametrov Posle ustraneniya vseh nedostatkov etot shablon mozhet byt udalyon lyubym uchastnikom
