Хеширование наборов целых чисел - PullRequest
3 голосов
/ 27 сентября 2010

Я ищу хэш-функцию для множеств H (.) И отношения R (.,.), Чтобы, если A включается в B, то R (H (A), H (B)).Конечно, R (.,.) Должно легко проверяться (постоянное время), а H (A) должно рассчитываться за линейное время.

Один из примеров H и R:

  • H (A) = ИЛИ более 1 << (h (x)% k), для x в A k фиксированное целое число и h (x) хеш-функция над целыми числами. </li>
  • R (H (A), H (B)) = ((H (A) и H (B)) == H (A))

Есть ли другие хорошие примеры?(хорошо трудно определить, но интуитивно понятно, если R (H (A), H (B)), тогда whp A включен в B).

1 Ответ

3 голосов
/ 27 сентября 2010
  • Подумав об этом, я закончил с примером, который вы привели. То есть каждый элемент в B устанавливает бит в хэше, и A содержится только в B, если каждый бит, установленный в H (A), также установлен в H (B).
  • Может быть, Фильтр Блума применим в вашем случае. Кажется, он использует тот же битовый трюк, но с несколькими хэш-функциями.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...