2015-10-05 1 views
0

Учитывая отличную хеш-функцию по набору целых чисел S, можно вычислить включение целого числа в S, т. Е. Если целое число не находится в S, вы можете сказать, не прочитав из хеш-таблицу, и если целое число находится в S, вы можете сказать, не прочитав хеш-таблицу? Предположим, что мы имеем минимальную совершенную хеш-функцию. Таким образом, размер хеш-таблицы равен n, а размер S равен m, а n = m. Прошу прощения, если это очевидно.с учетом идеальной хеш-функции, вычислять включение

+0

Если хеш-функция «над набором целых чисел S», как бы вы определили, что 'i' не находится в' S'? Ожидаете ли вы, что хэш-процедура выдает исключение для «не в S»? Возвращает специальное значение флага? –

+0

Я предполагаю, что любое значение возвращаемого значения будет работать, я просто не хочу читать хеш-таблицу. – nexpert

ответ

0

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

Что вы можете сделать, это: для каждой клавиши хранить только дополнительную информацию, например последние несколько бит хеш-кода этого ключа. Таким образом, вы можете сказать (с настраиваемой вероятностью, это зависит от того, сколько данных вы храните), является ли целое число , вероятно, в комплекте или нет. Это в основном то же самое, что и фильтр цветения (вы можете получить ложные срабатывания, но не ложные негативы).

+0

Я не считал что-то вроде фильтра цветения, на моем конкретном приложении GPU цветной фильтр поместится в разделяемой памяти, так что это очень хорошо. Спасибо, что нашли время ответить, извиниться за задержку, так и не получили уведомление. – nexpert

Смежные вопросы