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

При построении ТХ может быть использован многоуровневый вариант косвенной адресации. Функцию флажка D/I в этом случае выполняет флажок связи. Значение 0 этого флажка означает, что искомые данные хранятся в той же ячейке ТХ, если же флажок связи равен 1, то соответствующее информационное поле нужно рассматривать как хеш-связь, т.е. адрес второй таблицы, содержащей, как правило, значительно меньшее количество слов, но большей разрядности. Для хранения записей еще большего размера можно организовать еще одну (третью) таблицу, доступ к которой производится посредством второй хеш-связи и т. д .

Для обращения к данным, расположенным во внешних запоминающих устройствах, адреса должны содержать обычно не менее 20 разрядов. Нерационально размещать в ТХ указатели такой длины. Введение ступенчатого хеширования в этом случае решает проблему.

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

2.3.2. Форматы таблиц хеширования

При выборе размера ячейки ТХ следует учитывать не только объем информации, которую предполагается в ней хранить, но и возможность использования укороченного идентификатора вместо ключевого слова (при хешировании методом деления) и сокращение требуемой памяти в случае применения комбинированной адресации, а также принятую в ЭВМ систему адресации, в соответствии с которой указанные ячейки должны занимать целое число байтов или машинных слов.

Содержимое ячейки ТХ включает обязательно:

ключевое слово (или его идентификатор);

соответствующие данные (или указатель этих данных).

При внутренней адресация дополнительно резервируется место для флажка «конец последовательности пробинга» или дополнительная ячейка в конце последовательности со специальным кодом. В состав ячейки ТХ могут также входить одноразрядные маркеры (флажок “занято”, флажок коллизии, флажок вычеркивания, флажок связи) или их комбинации (рис. 2.5).

ID

T

ДАННЫЕ

 

 

ID

Pi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ID

U

T

D

ДАННЫЕ

 

 

45

 

 

 

 

 

 

 

 

ID P0 P

Рис. 2.5. Типовые форматы ячеек таблиц хеширования

Обозначения на рис. 2.5:

ID – идентификатор ключевого слова; Pi – указатель области данных (индекс);

P0 – указатель области переполнения (или следующей записи в цепочке); T – терминальный символ;

U – флажок “занято”;

D – флажок вычеркивания; C – флажок коллизии;

L – флажок связи.

Cпособы индексации слов в ТХ

Пусть запись таблицы хеширования состоит из k слов, следовательно, их вычисленные адреса в оперативной памяти с произвольным доступом, в которой записи обычно занимают по k последовательно расположенных слов, должны быть кратны k (т.е. полученный с помощью некоторого алгоритма исходный хеш-адрес впоследствии умножается на k).

Например:

 

 

 

(1, 1)

(2, 1)

(3, 1)

(1, 2)

(2, 2)

(3, 2)

(1, 3)

(2, 3)

(3, 3)

(1, 4)

(2, 4)

(3, 4)

k = 4 – это количество слов в записи.

Представим таблицу в виде k секций:

(1, 1)

(1, 2)

(1, 3)

(1, 4)

(2, 1)

(2, 2)

(2, 3)

(2, 4)

(3, 1)

(3, 2)

(3, 3)

(3, 4)

46

(4, 1) (4, 2) (4, 3) (4, 4)

. . . .

. . . .

. . . .

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

2.3.3. Буферизация таблиц хеширования. Клеточная организация

Если ТХ имеет большой размер, то ее фрагмент, в котором находится ЭД с вычисленным адресом, помещается в буферную область быстродействующей основной памяти (БП), а остальная часть обычно хранится во внешнем запоминающем устройстве (ВЗУ). При обработке коллизий с использованием процедуры линейного пробинга значительная часть резервных ячеек (а иногда и все) также попадает в БП. Обмен данными между основной памятью (ОП) и ВЗУ производится страницами типового для каждого вида ВЗУ размера.

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

Использование буферизации повышает среднюю скорость выборки информации, однако не позволяет получать равномерное распределение занятых адресов.

Метод построения хеш-таблиц, названный клеточной организацией, основан на объединении в группу, называемую клеткой, нескольких последовательно расположенных ячеек памяти, которым присваивается общий для всех ячеек хеш-адрес. Клетка делится на фиксированное количество частей, в каждой из которых размещается по одному конфликтующему элементу. Резервные ячейки отыскиваются в клетке до тех пор, пока все части такой клетки не будут заняты. При заполнении клетки целиком берется вторая клетка, и цепочка резервных ячеек продолжает формироваться уже в ней (рис. 2.6).

Позиция

ID Данные ID Данные ID Данные

ID Данные

 

47

ID Данные

Конец

Размещение в клетках записей переменной длины

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

В [3] дан анализ различных вопросов, связанных со сравнительной оценкой некоторых рассмотренных ранее методов и алгоритмов хеширования,

вчастности:

среднего числа обращений к памяти для различных процедур пробинга (линейного, случайного, квадратичного и др.), используемых в рамках метода внутренней адресации;

среднего числа обращений при применении отдельной области переполнения;

влияния упорядочивания записей в резервных ячейках;

влияния размера клетки на количество обращений;

влияния функции хеширования на продолжительность операции поиска и др.

2.4. Виды ассоциативного поиска 2.4.1. Многоключевой поиск

В отличие от таблиц символов, в которых обычно существует взаимно однозначное соответствие между ключевым словом и связанным с

ним значением, в разного рода справочниках, списках заказчиков и других до-

48