Можно ли получить идеальную хеш-функцию от строк до целых чисел, когда известно количество хешируемых элементов? Под совершенной хэш-функцией я подразумеваю, что вероятность столкновения отсутствует.
В основном я читаю подписи нескольких таблиц из файла (например, идентификатор, имя, адрес). Различные таблицы могут иметь общие атрибуты (например, имя), но на разные позиции (то есть столбцы). Я хотел бы иметь возможность спросить что-то вроде: что такое table1 [«name»]? или table2 [«имя»].
ОБНОВЛЕНИЕ: я предпочел бы научиться делать это самому, чем использовать что-то уже там.
Увидеть GNU Gperf.
GNU gperf — идеальный генератор хеш-функций. Для заданного списка строк он создает хеш-функцию и хеш-таблицу в форме кода на C или C ++ для поиска значения в зависимости от входной строки. Хеш-функция идеальна, что означает, что хеш-таблица не имеет коллизий, а для поиска в хеш-таблице требуется только сравнение одной строки.
Других решений пока нет …