2012-05-29 4 views
1

Я видел ответы здесь, заявляя, что для использования gperf, однако, я бы предпочел опрокинуть мои собственные на основании доказательства, которое я создаю для домена strings с фиксированной длиной из <= 200 На основании расчетов у меня из вольфрама я получаю ~7.9 x 10^374 полных перестановок. Поэтому моя линия мышления заключается в том, что у меня есть хэш-функция 2048 (3.2 x 10^616). Я должен иметь возможность обрабатывать весь юниверс строк, которые мне нужно обработать. Мой вопрос заключается в том, как я могу доказать, что реализация хэша, которую я в конечном итоге продюсирую, будет идеальной, учитывая ограничение юниверса всех строк длиной 200 или меньше?Доказательство идеальной хэш-функции по фиксированной длине ввода

+0

@interjay Это полезно больше теоретической концепции :). Таким образом, вы предлагаете, чтобы, если я беру каждую строку, которую у меня есть, и преобразовываю ее в байт [], применим к ней схему заполнения. У меня не должно быть решения для столкновений? Если это так, как мне это доказать? – Woot4Moo

ответ

3

Строки длиной 200 символов имеют только 200 * 8 = 1600 бит. Если 2048-битный хеш для вашей цели подходит, вы можете просто использовать строковые биты как идеальный хеш. Идентификационная хэш-функция совершенна, так как она сопоставляет каждый вход отдельному хеш-значению (очевидно, потому что нет отображения).

+0

Я выбрал 2048, поскольку это было следующее значение выше 1024, которое удерживало бы вселенную. Имеют ли это какие-либо непреднамеренные последствия? – Woot4Moo