Как получить в семье независимую универсальную хеш-функцию?
Я пытаюсь реализовать алгоритм подсчета гиперлоглогов с использованием стохастического усреднения. Для этого мне нужно много независимых универсальных хеш-функций для хеширования элементов в разных подпотоках.
Я обнаружил, что в hashlib доступно всего несколько хеш-функций, и, похоже, у меня нет возможности предоставить начальное число или что-то еще? Я думаю использовать разные соли для разных подпотоков.
1 ответ
Возможно, вам не нужны разные хеш-функции. Распространенным решением этой проблемы является использование только части хэша для вычисления статистики HyperLogLog rho, а другой части - для выбора подпотока. Если вы используете хорошую хеш-функцию (например, murmur3), она фактически ведет себя как несколько независимых.
См. Раздел "Стохастическое усреднение" здесь для объяснения этого: https://research.neustar.biz/2012/10/25/sketch-of-the-day-hyperloglog-cornerstone-of-a-big-data-infrastructure/