Я шукаю хеш-функцію над множинами H (.) І відношенням R (.,.) Таким чином, що якщо A включено в B, то R (H (A), H (B)). Звичайно, R (.,.) Повинно бути легко перевірити (постійний час), а H (A) слід обчислити в лінійному часі.
Одним із прикладів H і R є:
- , де k є фіксованим цілим числом, а h (x) хеш-функцією над цілими числами.
- R (H (A), H (B)) = ((H (A) & H (B)) == H (A))
Чи є інші добрі приклади? (добре важко визначити, але інтуїтивно, якщо R (H (A), H (B)), то whp A включено до B).
Пізніше редагуйте :
- Я шукаю сімейство хеш-функцій. У мене багато наборів; 3 - 8 елементів у кожному наборі; 90% з них мають 3 або 4 елемента. Приклад хеш-функції, яку я дав, не дуже добре розподілений для цього випадку.
- Кількість бітів H (.) (У моєму прикладі k), яка повинна бути невеликою (тобто H (.), Повинна відповідати цілому чи довгій).
- Однією приємною властивістю R є те, що якщо H (.) Має k біт, то R (.,.) Вірно для пар (3 ^ k - 2 ^ k) / 4 ^ k, тобто. для дуже мало пар.
- Блум-фільтри особливо хороші для великих наборів. Я спробував використовувати BF для цієї проблеми, але оптимальні результати були лише з однією функцією.
(перехрестя від stackoverflow , я не отримав відповіді досить добре)