stringtranslate.com

Фильтр «Кукушка»

Фильтр кукушки — это вероятностная структура данных , которая эффективно использует пространство , чтобы проверить, является ли элемент членом множества , как это делает фильтр Блума . Ложные положительные совпадения возможны, но ложные отрицательные — нет, другими словами, запрос возвращает либо «возможно в множестве», либо «определенно не в множестве». Фильтр кукушки также может удалять существующие элементы, что не поддерживается фильтрами Блума. Кроме того, для приложений, которые хранят много элементов и нацелены на умеренно низкие показатели ложных положительных срабатываний, фильтры кукушки могут достичь меньших накладных расходов по пространству, чем оптимизированные по пространству фильтры Блума. [1]

Фильтры «кукушка» были впервые описаны в 2014 году. [2]

Описание алгоритма

Фильтр кукушки использует хэш-таблицу на основе хэширования кукушки для хранения отпечатков элементов. [2] Структура данных разбита на блоки определенного размера . Чтобы вставить отпечаток элемента , сначала вычисляются два потенциальных блока и то, куда можно вставить. Эти блоки вычисляются с использованием формулы

Обратите внимание, что благодаря симметрии операции XOR можно вычислить из , и из . Как определено выше, ; следует, что . Именно эти свойства позволяют хранить отпечатки пальцев с помощью хеширования кукушки.

Отпечаток пальца помещается в один из бакетов и . Если бакеты заполнены, то один из отпечатков пальцев в бакете вытесняется с помощью хеширования кукушки и помещается в другой бакет, куда он может попасть. Если этот бакет, в свою очередь, также заполнен, то это может вызвать еще одно вытеснение и т. д.

Таблица хэшей может достигать как высокой утилизации (благодаря хэшированию кукушки ), так и компактности, поскольку сохраняются только отпечатки пальцев. Операции поиска и удаления фильтра кукушки просты. [2]

Максимум два бакета для проверки и . Если найдено, соответствующая операция поиска или удаления может быть выполнена вовремя . Часто на практике является константой.

Для того чтобы хэш-таблица могла предоставить теоретические гарантии, размер отпечатка должен быть не менее бит. [2] [3] [4] При соблюдении этого ограничения фильтры кукушки гарантируют частоту ложных срабатываний не более . [2]

Сравнение с фильтрами Блума

Фильтр «кукушка» похож на фильтр Блума тем, что они оба быстрые и компактные, и оба могут возвращать ложные срабатывания в качестве ответов на запросы о членстве во множестве:

Ограничения

Ссылки

  1. ^ Майкл Д. Митценмахер . «Фильтры Блума, хеширование Cuckoo, фильтры Cuckoo, адаптивные фильтры Cuckoo и обученные фильтры Блума».
  2. ^ abcdefg Fan, Bin; Andersen, Dave G.; Kaminsky, Michael; Mitzenmacher, Michael D. (2014). Фильтр Cuckoo: Практически лучше, чем Bloom . Proc. 10th ACM International on Conference on Emerging Networking Experiments and Technologies (CoNEXT '14). Сидней, Австралия. стр. 75–88. doi : 10.1145/2674005.2674994 . ISBN 9781450332798.
  3. ^ Эппштейн, Дэвид (22 июня 2016 г.). Фильтр кукушки: упрощение и анализ . Труды 15-го Скандинавского симпозиума и семинаров по теории алгоритмов (SWAT 2016). Международные труды им. Лейбница по информатике (LIPIcs). Том 53. Рейкьявик, Исландия. С. 8:1–8:12. arXiv : 1604.06067 . doi : 10.4230/LIPIcs.SWAT.2016.8 .
  4. ^ Флеминг, Ноа (17 мая 2018 г.). Cuckoo Hashing и Cuckoo Filters (PDF) (Технический отчет). Университет Торонто.
  5. ^ Паг, Расмус ; Родлер, Флемминг Фриш (2001). «Кукушка-хеширование». Учеб. 9-й ежегодный европейский симпозиум по алгоритмам (ESA 2001) . Конспекты лекций по информатике. Том. 2161. Орхус, Дания. стр. 121–133. дои : 10.1007/3-540-44676-1_10. ISBN 978-3-540-42493-2.

Внешние ссылки