Как часто бывает с умными вопросами, ответ - да, и нет.
Да, в том смысле, что есть 16 битов, которые не разделены между h1 и h2.Нет, в тех смыслах, которые важны для вас (если только вы на самом деле не используете только восемь битов хэш-функции, а я полагаю, что вы этого не делаете).
Проблема здесь не так велика с зависимостью между двумя применяемыми функциямик одному и тому же элементу, вставляемому и более (в данном случае, на мой взгляд) с функциями, применяемыми к нескольким элементам.
Подумайте об этом так.Предположим, ваш первый пример использует g1-g4, а второй - h1-h4.Два элемента, чья сумма MD5 (или любая другая функция хеширования) перекрываются только в 5 последовательных байтах (маловероятно, но статистически выполнимо, особенно если вы пытаетесь), будут иметь вероятность коллизии, если просто используете h1 и h2, h2 и h3,или h3 и h4.Между тем g1-g4 устойчив к такой возможности.
Теперь коллизии с фильтрами Блума не так важны, как другие приложения хеш-функций, но вы должны иметь в виду, что перекрывающиеся байты отвлекают от использования хеш-функций.Я немного удивлен, что вам нужно более четырех независимых хеш-функций, если честно.
Кроме того, если вы используете только последние 8 бит каждого числа (256-битный фильтр Блума) или последнюю16 бит (2 ^ 16 битный фильтр Блума), или что угодно, тогда вы можете «перекрывать» биты, которые вы не используете, с опрометчивой энергией и без риска.
Отказ от ответственности: Я хорошо знаю криптографию и расцветаюфильтры, потому что они потрясающие, но мое практическое знание фильтров Блума ограничено;то, что вы описываете, может хорошо работать для вашего варианта использования.