Шаг 121 - Что такое хеш код

Появление понятие хеш кода связано с реализаций возможностей поиска и сравнения в больших массивах данных на основе строк. Операции сравнения строк наиболее длительные так как требуют сравнения каждого символа по строке. Если у нас строка большая и самих строк много то подобных процесс сравнения который напрямую связан с сортировкой и поиском занимает значительное время. Вот для решения подобной задачи убыстрения поиска и сортировки и было принято понятие хеширования (hash - смешивание, перемешивание,размешивание). Идея заключалась в том что строку можно представит некоторым числом. Алгоритм получения этого число называется функцией хеширования. Функций или алгоритмов много. Давайте посмотрим в простом случае. Получить из строки число можно путем суммирования всех кодов букв в строке.

121_1.gif (1898 b)

Это самый простой пример и тут же понятно, что будут коллизии это когда одно и то же слово даст одно и тоже число. Например, слова дома и мода дадут одну и ту же цифру. Поэтому отсюда выход либо усложнять алгоритм для гарантии неповторимости а значит важно и расположение букв с слове в плане порядка или при совпадении проверять уже саму строку непосредственно для гарантии того, что слова одинаковые. В любом случае ускорение выполнения значительно по причине того что сравнивается все за один раз. Кстати подобная процедура применяет и проверки паролей например и позволяет не хранить в программе пароль в строковом виде, а хранить число результат операции хеширования. В результате даже имея это число восстановить исходную строку не так просто , нужно знать алгоритм и на основе его попробовать восстановить строку, если это возможно.

Хеширование можно применять не только для строки, а вообще для любых объектов и классов, но для этого нужно придумать и создать функцию хеширования.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 23.10.2001