Универсальное семейство хеш-функций — различия между версиями
Rybak (обсуждение | вклад) м |
|||
Строка 1: | Строка 1: | ||
==Универсальное семейство хеш-функций== | ==Универсальное семейство хеш-функций== | ||
− | Качественная хеш-функция удовлетворяет (приближенно) условию простого равномерного хеширования: для каждого ключа, независимо от хеширования других ключей, равновероятно помещение его в любую из <tex> m </tex> ячеек. Но это условие обычно невозможно проверить, так как распределение вероятностей, с которыми поступают входные данные, как правило, неизвестно. К тому же, вставляемые ключи могут и не быть независимыми. Если злой человек будет умышленно выбирать ключи для хеширования при помощи конкретной хеш-функции, то может получится так, что все ключи будут записанны в одну и ту же ячейку таблицы, что приведет к среднему времени выборки <tex> \theta(n) </tex>. Таким образом, любая фиксированная хеш-функция становится уязвимой. И единственный эффективный выход из данной ситуации - случайный выбор хеш-функции. Такой подход называется универсальным хешированием. Он гарантирует хорошую производительность в среднем, вне зависимости от данных, выбранных злым человеком. | + | Качественная хеш-функция удовлетворяет (приближенно) условию простого равномерного хеширования: для каждого ключа, независимо от хеширования других ключей, равновероятно помещение его в любую из <tex> m </tex> ячеек. Но это условие обычно невозможно проверить, так как распределение вероятностей, с которыми поступают входные данные, как правило, неизвестно. К тому же, вставляемые ключи могут и не быть независимыми. Если злой человек будет умышленно выбирать ключи для хеширования при помощи конкретной хеш-функции, то может получится так, что все ключи будут записанны в одну и ту же ячейку таблицы, что приведет к среднему времени выборки <tex> \theta(n) </tex>. Таким образом, любая фиксированная хеш-функция становится уязвимой. И единственный эффективный выход из данной ситуации {{---}} случайный выбор хеш-функции. Такой подход называется универсальным хешированием. Он гарантирует хорошую производительность в среднем, вне зависимости от данных, выбранных злым человеком. |
{{Определение | {{Определение |
Версия 23:30, 25 февраля 2012
Универсальное семейство хеш-функций
Качественная хеш-функция удовлетворяет (приближенно) условию простого равномерного хеширования: для каждого ключа, независимо от хеширования других ключей, равновероятно помещение его в любую из
ячеек. Но это условие обычно невозможно проверить, так как распределение вероятностей, с которыми поступают входные данные, как правило, неизвестно. К тому же, вставляемые ключи могут и не быть независимыми. Если злой человек будет умышленно выбирать ключи для хеширования при помощи конкретной хеш-функции, то может получится так, что все ключи будут записанны в одну и ту же ячейку таблицы, что приведет к среднему времени выборки . Таким образом, любая фиксированная хеш-функция становится уязвимой. И единственный эффективный выход из данной ситуации — случайный выбор хеш-функции. Такой подход называется универсальным хешированием. Он гарантирует хорошую производительность в среднем, вне зависимости от данных, выбранных злым человеком.
Определение: |
Пусть | — конечное множество хеш-функций, которые отображают пространство ключей в диапазон . Такое множество называется универсальным, если для каждой пары ключей количество хеш-функций , для которых не превышает .
Иными словами, при случайном выборе хеш-функции из вероятность коллизии между различными ключами не превышает вероятности совпадения двух случайным образом выбранных хеш-значений из множества , которая равна
Источники
- Т. Кормен, Ч. Лейзерсон, Р. Ривест: Алгоритмы: построение и анализ, 2-е изд