Преобразование значений хеш-функции в целочисленные значения, которые можно использовать в фильтре Блума из m битов Диапазон

Вот некоторые основные сведения о фильтре Bloom

Может ли кто-нибудь объяснить мне, как мы можем преобразовать хеш-функцию (скажем, md5, sha1 или любую другую предопределенную хеш-функцию) в целочисленное значение в диапазоне от 0 до m, где m - битовый диапазон фильтра Блума.

Я хочу знать, как мы можем получить значение из хеш-функции в определенном диапазоне, которое я могу использовать для индексации в фильтрах цветения.

До сих пор я сослался на:

1. Использование хэш-функций с фильтрами Блума,

2. Как сопоставить вывод хэш-функции с индексами bloomfilter? и

http://billmill.org/bloomfilter-tutorial/

Но во всех этих примерах не приводится, а в последнем они использовали javascript, а в этих Jenkins 96 bit mix function и 2 хэш-функциях fnv и murmur, что довольно сложно понять.

Я понял, что мы делим значение хэш-функции, например: используя md5 "0cc175b9c0f1b6a831c399e269772661", и мы делим его на куски по 4 бита или любое количество битов для 4-битного деления, мы делаем «0cc1», «75b9», но что после этого?

Я не мог понять, что мы делаем после этого шага и как мы устанавливаем диапазон, чтобы он не превышал размер ARRAY фильтра Bloom.

Может ли кто-нибудь предоставить мне живой базовый пример на языке php или c ++?

Я знаю, что md5 - это не функция, которую вы должны использовать в цветных фильтрах, но мне просто нужно понять, как мы это делаем.


person RAJAT SHARMA    schedule 28.08.2015    source источник
comment
Если это хорошая хеш-функция, просто используйте младшие (или самые высокие) M бит. FNV, вероятно, недостаточно хорош для этого. MD5 и murmur и конечно SHA1 есть. Как вы думаете, почему нельзя использовать MD5?   -  person Lee Daniel Crocker    schedule 28.08.2015
comment
привет, спасибо за ваш ответ, я где-то читал, что md5 создает слишком много ключей, а для небольшого фильтра цветения, скажем, 1000 битовые фильтры цветения, это создает некоторые проблемы, потому что он формирует 2 ^ 32-1 битные значения, которые значительно больше 1000, поэтому мы должны использовать модуль%, чтобы уменьшить это значение. У вас есть живой пример того, как мы сопоставляем индекс и диапазон фильтра цветения?   -  person RAJAT SHARMA    schedule 28.08.2015
comment
Ну да, это просто делает его неэффективным, вполне подходящим.   -  person Lee Daniel Crocker    schedule 28.08.2015