Фільтри Bloom є імовірнісними структурами даних, які використовуються для тестування, чи є елементом, який є членом набору. Вони ефективні з точки зору простору і швидкості, що робить їх придатними для додатків, де потрібні швидкі запити членства з деякими прийнятними помилковими позитивами.

Як Bloom фільтри роботи

Фільтр Bloom використовує бітовий масив і кілька функцій хешу. Коли елемент додано, кожна функція хешу налаштовує його в позицію в масиві, настроєння бітам до 1. Щоб перевірити, чи застосовується елемент, то й ті ж функції хешу, і відповідні біти проходять дослідження. Якщо всі встановлюються до 1, елемент, ймовірно, в комплекті; якщо будь-який 0, то це обов'язково не.

Розрахунок для фільтрів цвітіння

Від розміру бітового масиву залежить помилкова позитивна ймовірність, що кількість вставлених елементів (n), кількість хешових функцій (k). Імовірність (p) помилкового позитиву може бути приблизена:

p ≈ ]]

Оптимальні значення для к і м дозволяють мінімізувати помилкові позитивність заданої н. Зазвичай к вибирається як:

k = (m/n) * ln 2]

Використовуйте випадки фільтрів цвітіння

Фільтри Bloom використовуються в різних галузях, включаючи:

  • Системи бази даних для швидкого тестування членства
  • Веб-кашель для зменшення образів дисків
  • Системи розподілених даних для синхронізації даних
  • Мережева безпека для фільтрації спаму

Обмеження Bloom фільтрів

При цьому ефективні фільтри Bloom мають обмеження. Вони можуть виробляти помилкові позитивні емоції, але не помилкові негативні. Після того як біти встановлюються до 1, вони не можуть бути скидання, що може призвести до неточностей протягом часу. Вони також не підходять для видалення окремих елементів без додаткових структур даних.