K-независимое хеширование - K-independent hashing
В Информатика, семья хэш-функции как говорят k-независимый или же k-универсальный[1] если случайный выбор функции из семейства гарантирует, что хэш-коды любых назначенных k ключи независимые случайные величины (см. точные математические определения ниже). Такие семейства обеспечивают хорошую производительность в среднем случае в рандомизированных алгоритмах или структурах данных, даже если входные данные выбираются злоумышленником. Компромиссы между степенью независимости и эффективностью оценки хэш-функции хорошо изучены, и многие k-независимые семьи.
Фон
Целью хеширования обычно является отображение ключей из некоторого большого домена (вселенной). в меньший диапазон, например ящики (помечены ). При анализе рандомизированных алгоритмов и структур данных часто желательно, чтобы хеш-коды различных ключей «вели себя случайным образом». Например, если хэш-код каждого ключа был независимым случайным выбором в количество ключей на ячейку можно проанализировать с помощью Чернов граница. Детерминированная хеш-функция не может предложить такую гарантию в условиях состязательности, поскольку противник может выбрать ключи, которые будут точно такими же. прообраз корзины. Кроме того, детерминированная хеш-функция не позволяет перефразирование: иногда входные данные оказываются плохими для хэш-функции (например, слишком много коллизий), поэтому хочется изменить хеш-функцию.
Решение этих проблем - выбрать функцию случайно из большого семейства хеш-функций. Случайность при выборе хэш-функции может использоваться для гарантии некоторого желаемого случайного поведения хэш-кодов любых интересующих ключей. Первое определение в этом направлении было универсальное хеширование, что гарантирует низкую вероятность конфликта для любых двух назначенных ключей. Концепция чего-либо -независимое хеширование, введенное Вегманом и Картером в 1981 году,[2] усиливает гарантии случайного поведения семей назначенные ключи и добавляет гарантию равномерного распределения хэш-кодов.
Определения
Самое строгое определение, введенное Вегманом и Картером[2] под названием "сильно универсальный семейство хэш-функций ", следующее. Семейство хеш-функций является -независимо, если для любого отдельные ключи и любой хэш-коды (не обязательно разные) , у нас есть:
Это определение эквивалентно следующим двум условиям:
- для любых фиксированных , в качестве выбирается случайным образом из , равномерно распределен в .
- для любых фиксированных, отдельных ключей , в качестве выбирается случайным образом из , являются независимыми случайными величинами.
Часто бывает неудобно достичь идеальной совместной вероятности из-за проблем с округлением. Следующий,[3] можно определить -независимая семья для удовлетворения:
- отчетливый и ,
Обратите внимание на это, даже если близко к 1, больше не являются независимыми случайными величинами, что часто является проблемой при анализе рандомизированных алгоритмов. Следовательно, более распространенной альтернативой решению проблем округления является доказательство того, что семейство хешей близко статистическое расстояние к -независимое семейство, которое позволяет черным ящиком использовать свойства независимости.
Методы
Полиномы со случайными коэффициентами
Оригинальная техника построения k-независимые хэш-функции, данные Картером и Вегманом, заключались в выборе большого простого числа п, выберите k случайные числа по модулю п, и использовать эти числа как коэффициенты многочлен степени k − 1 чьи значения по модулю п используются как значение хеш-функции. Все многочлены заданной степени по модулю п равновероятны, и любой многочлен однозначно определяется любым k-набор пар аргумент-значение с различными аргументами, из которых следует, что любой k-набор различных аргументов с одинаковой вероятностью будет отображен на любой k-набор хеш-значений.[2]
Хеширование табуляции
Хеширование табуляции это метод сопоставления ключей с хеш-значениями путем разделения каждого ключа на байты, используя каждый байт в качестве индекса в таблице случайных чисел (с другой таблицей для каждой позиции байта) и комбинируя результаты этих поисков по таблице побитовым Эксклюзивный или операция. Таким образом, он требует большей случайности при инициализации, чем полиномиальный метод, но позволяет избежать, возможно, медленных операций умножения. Он 3-независимый, но не 4-независимый.[4] Варианты хеширования табуляции могут обеспечить более высокую степень независимости, выполняя поиск в таблице на основе перекрывающихся комбинаций битов входного ключа или применяя простое хеширование табуляции итеративно.[5][6]
Независимость, необходимая для различных методов хеширования
Понятие k-независимость может использоваться для различения различных методов хеширования в соответствии с уровнем независимости, необходимым для обеспечения постоянного ожидаемого времени на операцию.
Например, хеш-цепочка требует постоянного ожидаемого времени даже с 2-независимой хеш-функцией, потому что ожидаемое время для выполнения поиска данного ключа ограничено ожидаемым количеством конфликтов, в которых участвует ключ. Из-за линейности ожидания это Ожидаемое число равно сумме всех остальных ключей в хэш-таблице вероятности столкновения данного ключа и другого ключа. Поскольку члены этой суммы включают только вероятностные события с участием двух ключей, 2-независимости достаточно, чтобы гарантировать, что эта сумма имеет то же значение, что и для действительно случайной хэш-функции.[2]
Двойное хеширование - еще один метод хеширования, требующий низкой степени независимости. Это форма открытой адресации, которая использует две хеш-функции: одну для определения начала тестовой последовательности, а другую для определения размера шага между позициями в тестовой последовательности. Пока оба они независимы друг от друга, этот метод дает постоянное ожидаемое время на операцию.[7]
С другой стороны, линейное зондирование, более простая форма открытой адресации, где размер шага всегда один, требует 5-независимости. Можно гарантировать постоянную ожидаемую продолжительность одной операции с помощью 5-независимой хэш-функции,[8] и существуют 4-независимые хэш-функции, для которых требуется логарифмическое время на операцию.[9]
Рекомендации
- ^ Кормен, Томас Х.; Лейзерсон, Чарльз Э.; Ривест, Рональд Л.; Штейн, Клиффорд (2009) [1990]. Введение в алгоритмы (3-е изд.). MIT Press и McGraw-Hill. ISBN 0-262-03384-4.
- ^ а б c d Вегман, Марк Н.; Картер, Дж. Лоуренс (1981). «Новые хеш-функции и их использование при аутентификации и установлении равенства» (PDF). Журнал компьютерных и системных наук. 22 (3): 265–279. Дои:10.1016/0022-0000(81)90033-7. Версия конференции в FOCS'79. Получено 9 февраля 2011.
- ^ Сигел, Алан (2004). «Об универсальных классах чрезвычайно случайных хэш-функций с постоянным временем и их компромиссе во времени и пространстве» (PDF). SIAM Журнал по вычислениям. 33 (3): 505–543. Дои:10.1137 / S0097539701386216. Версия конференции в FOCS'89.
- ^ Пэтрашку, Михай; Торуп, Миккель (2012), «Сила простого хеширования таблиц», Журнал ACM, 59 (3): Ст. 14, arXiv:1011.5200, Дои:10.1145/2220357.2220361, МИСТЕР 2946218.
- ^ Сигел, Алан (2004), "Об универсальных классах чрезвычайно случайных хэш-функций с постоянным временем", SIAM Журнал по вычислениям, 33 (3): 505–543, Дои:10.1137 / S0097539701386216, МИСТЕР 2066640.
- ^ Торуп, М. (2013), «Простое табулирование, быстрое расширение, двойное табулирование и высокая независимость», Материалы 54-го ежегодного симпозиума IEEE по основам информатики (FOCS 2013), стр. 90–99, arXiv:1311.3121, Дои:10.1109 / FOCS.2013.18, ISBN 978-0-7695-5135-7, МИСТЕР 3246210.
- ^ Брэдфорд, Филип Дж .; Катехакис, Майкл Н. (2007), «Вероятностное исследование комбинаторных расширителей и хеширования» (PDF), SIAM Журнал по вычислениям, 37 (1): 83–111, Дои:10.1137 / S009753970444630X, МИСТЕР 2306284, заархивировано из оригинал (PDF) на 2016-01-25, получено 2016-01-19.
- ^ Паг, Анна; Паг, Расмус; Ружич, Милан (2009), «Линейное зондирование с постоянной независимостью», SIAM Журнал по вычислениям, 39 (3): 1107–1120, arXiv:cs / 0612055, Дои:10.1137/070702278, МИСТЕР 2538852
- ^ Пэтрашку, Михай; Торуп, Миккель (2010), "На k-независимость, требуемая линейным зондированием и минимальной независимостью » (PDF), Автоматы, языки и программирование, 37-й международный коллоквиум, ICALP 2010, Бордо, Франция, 6-10 июля 2010 г., Материалы, часть I, Конспект лекций по информатике, 6198, Springer, стр. 715–726, arXiv:1302.5127, Дои:10.1007/978-3-642-14165-2_60, ISBN 978-3-642-14164-5
дальнейшее чтение
- Мотвани, Раджив; Рагхаван, Прабхакар (1995). Рандомизированные алгоритмы. Издательство Кембриджского университета. п.221. ISBN 978-0-521-47465-8.