Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data_Structure / лекц08.ppt
Скачиваний:
37
Добавлен:
03.03.2016
Размер:
246.27 Кб
Скачать

б) Метод свертки

ключ

Индекс (сложение вып. по модулю!)

+

+

f(97434658) = 97+434+658 = 1189 =>189;

i=189

f(31269857) = 31+269+857 = 1157 =>157;

i=157

21

в) Метод деления по модулю

.

f(К) = K mod M или f(К) = K mod M + 1.

М длина вектора или некоторое простое число, близкое к n.

22

Методы вычисления функции расстановки для символьного ключа:

г) Первый и последний символы преобразуются в число

д) Все символы ключа преобразуются в число

е) Из середины ключа выделяются n символов и преобразуются в десятичное число

. . . . . . . 23

Требования к хорошей хеш- функции :

быстрое вычисление (так как его время включается во время поиска);

равномерное распределение записей по позициям отображающего вектора (то есть коллизии должны возникать как можно реже).

24

Таблица с прямым доступом (частный случай хеш- таблицы)

K1 K2, f(K1) f(K2)

25

Обычно допускается коллизия (переполнение):

K1 K2, f(K1) = f(K2)

то есть несколько записей могут претендовать

на одну позицию в отображающем векторе

26

Методы устранения переполнений (разрешения конфликтов):

метод открытого перемешивания,

метод прямого связывания.

27

Метод открытого перемешивания

Переполняющие записи размещаются в свободных позициях отображающего вектора (в позициях вторичных индексов)

28

Занесение записи

 

 

начало

 

R – новая добавляемая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Новая

 

запись

 

запись

 

 

 

 

 

 

 

 

 

R

 

T – отображающий вектор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F – функция расстановки

 

 

I=f(R.key)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

I -- первичный индекс

 

 

 

 

 

 

 

 

 

 

 

 

 

T[I] занята

 

 

 

 

 

 

 

 

 

 

+ T[I]:=R

I:=Івт

конец

29

Поиск записи

 

 

 

 

начало

 

 

 

 

 

 

 

R – найденная запись

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Искомый

 

 

 

 

 

 

 

T – отображающий вектор

 

 

 

 

ключ К

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F – функция расстановки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I=f(К)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I -- первичный индекс

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T[I].key<>K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R:=T[I]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I:=Івт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

конец

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

Соседние файлы в папке Data_Structure