Скачиваний:
274
Добавлен:
15.06.2014
Размер:
2.04 Mб
Скачать

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

вующих ключевых слов. Вычисление подобных функций в современных ЭВМ занимает весьма малое время по сравнению с продолжительностью доступа к памяти.

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

Эффективно применение методов хеширования в управлении базами данных (УБД) в алгоритмах выполнения операций поиска по многим ключам, в системах с многоуровневой памятью, при поиске информации в базах данных по заданным идентификаторам или дескрипторам (поиск документов, публикаций и т.д.), а также при создании языков высокого уровня и при построении лингвистических структур [1, 4, 5].

2.1.2. Функции хеширования

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

Формирование хеш-функции обычно проводится в два этапа:

26