Сейчас около 4 лет разработки, которую я использую, слышу, говорю и реализую хеш-таблицы и хеш-функции. Но я действительно никогда не понимаю, почему это называется хэш?
Я помню первые дни, когда я начал программировать, этот термин был для меня довольно громоздким . Я так и не понял, что это, основываясь на его названии . Я просто экспериментально понял, что он делает и почему и когда мы должны его использовать .
Тем не менее, я до сих пор иногда пытаюсь понять, почему это называется хэш . У меня нет проблем с таблицей или функцией, и, честно говоря, это довольно дедуктивные, рациональные термины. Тем не менее, я думаю, что вместо хеша можно использовать более подходящие слова, например, ключ или уникальность . Не используйте таблицу ключей или таблицу уникальности .
Согласно моему словарю, хеш означает:
- Жареное блюдо из картофеля и мяса (крайне неактуально)
- символ # (знак номера AKA, знак фунта и т. д.) (все еще не имеет значения, может быть, просто неправильная номенклатура)
- Применить алгоритм к символьной строке (все еще не имеет ничего общего с уникальностью , которая является наиболее важной особенностью хэш-таблицы)
- Вырезать еду
- Еще один термин для гашиша
Кто-нибудь знает, почему это называется хэш?
Ответы:
Согласно википедии, это относится к хэш-функции . Если вы хотите пойти дальше, на вики-странице для хэш-функции сказано, что использование слова «хэш» в хеш-функции возникло так:
источник
На французском языке хеш-таблица называется «таблица de hachage», связанный глагол «hacher» означает измельчать / измельчать (в основном еда). Глагол
to hash
имеет то же значение в английском языке.Как уже отмечали другие, это называется хешем, потому что вы разбиваете входные данные, которые вы разбиваете на части в разных местах (записи в таблице).
источник
Номер 3 имеет все отношение к этому. Из Википедии :
Таким образом, хеш-таблица на самом деле не хранит значения, основанные на ключе; он хранит значения на основе хешированной версии этого ключа.
источник
Хеш-таблицы называются таким образом из-за использования хеш-кода, и это связано с «вырезать еду».
Подумайте об этом так: вы берете свой симпатичный симпатичный объект, как фрукт, затем хешируете его, чтобы он начал выглядеть точно так же, как и все остальное - просто число - в нем больше нет структуры. Этот кусок "нарезанной еды" используется в хэш-таблице, чтобы найти ваш симпатичный симпатичный объект.
Хеш-код находит корзину в таблице, где ваш симпатичный объект находится в небольшой компании других с таким же хеш-кодом. Внутри этой небольшой компании поиск объекта осуществляется с помощью проверки на равенство - которая, как ожидается, будет намного медленнее, чем поиск по хешу, но это не такая уж большая проблема, поскольку их всего несколько (большинство других объектов уже игнорируются благодаря быстрому хешированию) ,
источник
Хэширование (например, при разрезании на мелкие кусочки, измельчении и т. Д.) Требует затрат (пищи или иногда суперзлодеев) и превращает их в относительно однородный результат. Т.е. неважно, что у вас было в начале, в конце концов, у вас просто хэш. И ложка хеша примерно так же полезна, как и вся хеш, для определения того, что было введено (при условии, что ваша хеш-машина хорошо хэшируется).
Таким образом, хеширование может превратить любой съедобный или злой объект в ложку хэша, где два разных объекта дают разные хэши, в то время как два равных объекта дают равные хэши. Это означает, что если два суперзлодея попали в ваш хэширующий аппарат, достаточно сравнить их хэши, чтобы определить, был ли один клоном другого.
В некотором смысле хеширующие функции в информатике немного похожи. Они берут целые входные данные различного размера и семантики, и - очень просто - они просто разрезают его на кусочки и смешивают их вокруг, а результирующую последовательность разделяют обратно на куски и смешивают вокруг и так далее. В конце у вас есть ложка (n байтов) входных данных, которые вы хэшировали.
источник