В хеш-таблицах, которые разрешают коллизии линейным зондированием, для обеспечения ожидаемой производительности необходимо и достаточно, чтобы хеш-функция была из 5-независимого семейства. (Достаточность: «Линейное зондирование с постоянной независимостью», Паг и др. , Необходимость: «О k-независимости, необходимой для линейного зондирования и минимальной независимости», Pătraşcu и Thorup )
Насколько я понимаю, наиболее быстро известные 5 независимых семей используют табуляцию. Выбор функции из такого семейства может быть дорогостоящим, поэтому я хотел бы свести к минимуму количество повторений, при этом предотвращая атаки на алгоритмическую сложность, как описано в «Отказе в обслуживании через атаки алгоритмической сложности» Кросби и Уоллаха . Меня меньше беспокоит время атаки (то есть противники с секундомерами). Каковы последствия повторного использования одной и той же функции:
- При выращивании слишком большой таблицы хешей?
- При сжатии хеш-таблицы, что недостаточно полно?
- При восстановлении хеш-таблицы, в которой установлено слишком много «удаленных» битов?
- В различных хеш-таблиц, которые могут содержать некоторые общие ключи?
- В различных хеш-таблиц, которые не содержат общих ключей?