Студопедия
rus | ua | other

Home Random lecture






Операция включения элемента в таблицу.


Date: 2015-10-07; view: 472.


Перед включением элемента в таблицу определяют его адрес с помощью хеш-функции: A = h(K), где K – ключ, а А – адрес элемента таблицы, причем 0 £ А £ N-1, т.е. хеш-функция – отображение множества ключей на множество адресов.

A = K mod N = (C1 * k + C2) mod N, где N – количество адресов в таблице.

“Хорошая” хеш-функция – это функция, которая быстро вычисляется и минимизирует количество коллизий. Коллизия – это ситуация, когда для разных ключей адрес один и тот же, т.е. h(ki) = h(kj), где i ¹ j. Минимизации можно добиться, если равномерно распределить элементы по адресному полю таблицы.

После вычисления адреса элемента таблицы есть две возможности размещения элемента:

1) поместить этот элемент по адресу, если адрес свободен;

2) если вычисленный адрес занят, то повторить хеширование, т.е. совершить рехеширование по следующей формуле: A1 = (A+C) mod N.

Таким образом, алгоритм включения элемента в таблицу будет иметь следующий вид:

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

2. Если вычисленный адрес таблицы занят, то перевычисляем адрес (проводим рехеширование) и переходим к п.1.

Чтобы процесс размещения элементов был равномерным, адресное поле таблицы делается больше множества ключей на 10-15%.

Операция исключения элемента из таблицы:

1. С помощью хеш-функции вычисляется предполагаемый адрес элемента таблицы.

2. Если по вычисленному адресу располагается искомый ключ, то запись найдена и ее удаляют. Конец алгоритма.

3. Если вычисленный адрес пуст, то элемента с заданным ключом в таблице нет. Конец алгоритма.

4. Если элемент таблицы содержит другой ключ, то перевычисляем (рехешируем) адрес и переходим к п.2.

 


<== previous lecture | next lecture ==>
Временная сложность алгоритмов. | Сортировки. Улучшенные методы сортировок.
lektsiopedia.org - 2013 год. | Page generation: 0.314 s.