Jump to content

Фильтр с кукушкой

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

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

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

[ редактировать ]

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

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

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

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

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

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

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

[ редактировать ]

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

  • Использование оптимальных по пространству фильтров Блума бит пространства на вставленный ключ, где это уровень ложноположительных результатов. Требуется фильтр-кукушка место на клавишу [2] где коэффициент загрузки хеш-таблицы, который может быть на основе настроек фильтра кукушки. Обратите внимание, что нижняя теоретическая граница информации требует бит для каждого элемента. Как фильтры Блума, так и фильтры-кукушки с низкой нагрузкой могут сжиматься, когда они не используются.
  • При положительном поиске оптимальный по пространству фильтр Блума требует константы память обращается к битовому массиву, тогда как фильтр с кукушкой требует не более доступы к памяти, которые на практике могут быть постоянными.
  • У фильтров Cuckoo скорость вставки снижается после достижения порога нагрузки, когда рекомендуется расширение таблицы. Напротив, фильтры Блума могут продолжать вставлять новые элементы за счет более высокого уровня ложных срабатываний перед расширением.
  • Фильтры Блума предлагают быстрые операции объединения и приблизительного пересечения с использованием дешевых побитовых операций, которые также можно применять к сжатым фильтрам Блума, если используется потоковое сжатие.

Ограничения

[ редактировать ]
  • Фильтр кукушки может удалять только те элементы, о которых известно, что они были вставлены ранее.
  • Вставка может завершиться неудачно, и потребуется перехэширование, как и в случае с другими хеш-таблицами с кукушкой. Обратите внимание, что амортизированная сложность вставки по-прежнему равна . [5]
  • Для фильтров с кукушкой требуется размер отпечатка пальца по крайней мере биты. Это означает, что пространство на ключ должно быть не менее бит, даже если большой. На практике, выбрано достаточно большим, чтобы это не было серьезной проблемой. [2]
  1. ^ Майкл Д. Митценмахер . «Фильтры Блума, хеширование кукушки, фильтры кукушки, адаптивные фильтры кукушки и изученные фильтры Блума» .
  2. ^ Перейти обратно: а б с д и ж г Фан, Бин; Андерсен, Дэйв Г.; Каминский, Майкл; Митценмахер, Майкл Д. (2014). Фильтр «Кукушка»: Практически лучше, чем Bloom . Учеб. 10-я Международная конференция ACM по новым сетевым экспериментам и технологиям (CoNEXT '14). Сидней, Австралия. стр. 75–88. дои : 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 и фильтры Cuckoo (PDF) (Технический отчет). Университет Торонто.
  5. ^ Паг, Расмус ; Родлер, Флемминг Фриш (2001). «Кукушка». Учеб. 9-й ежегодный европейский симпозиум по алгоритмам (ESA 2001) . Конспекты лекций по информатике. Том. 2161. Орхус, Дания. стр. 121–133. дои : 10.1007/3-540-44676-1_10 . ISBN  978-3-540-42493-2 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 220201cf2e76708ab527ead9f0375633__1722193500
URL1:https://arc.ask3.ru/arc/aa/22/33/220201cf2e76708ab527ead9f0375633.html
Заголовок, (Title) документа по адресу, URL1:
Cuckoo filter - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)