Я в настоящее время охватывает хеширования и хэш-таблицы, и я задаюсь вопросом, почему-то, как считается плохой хэш-функция (псевдокод) следующее:Почему это плохой хеш-функции?
function hash(String_t word, Int table_size)
i = randomly generated number with 0<i<table_size
j = ASCII code of the first letter of word
return i * j % table_size
Предполагая, что значение i
может быть сохранена во время функциональных вызовов для достижения согласованности (например, используя ключевое слово static
в C, чтобы сохранить значение i
в пределах области действия), почему это плохой хеш-функции?
«Хэш-значение определяется только первой буквой». Разве хэш-значение не определяется как первой буквой, так и случайным значением? Кроме того, что вы подразумеваете под d = gcd (i, размер таблицы)? – JavascriptLoser
@PythonNewb: зависит от того, как вы на это смотрите! Как я его просматривал, случайное значение выбирается в начале, а затем фиксируется. После того, как это значение будет исправлено, два слова будут сталкиваться тогда и только тогда, когда они имеют одну и ту же первую букву. Gcd - наибольший общий делитель. Это свойство происходит из модульной арифметики. – TheGreatContini