Анализ трудоемкости операций над рассеянной таблицей

Пусть для хранения таблицы отведено m позиций, и в таблице имеется n записей, тогда a=n/m £ 1 – коэффициент загруженности памяти. Вероятность того, что хеш-адрес попадет в занятую позицию равна a, а в свободную 1-a. При вставке нам удастся найти место для новой записи:

- с 1-й попытки с вероятностью 1-a,

- со 2-й попытки – с вероятностью a(1-a) (первая попытка неудачная, вторая успешная),

- c 3-й попытки – с вероятностью a2(1-a) (две первых неудачны, третья успешна) и т.д.

Математическое ожидание числа попыток N при вставке:

(13)

Выражение является производной по a от суммы геометрической прогрессии , которая может быть вычислена по формуле (a+a2+a3+…)=a /(1-a) (14),

Подставляя производную правой части (14) в (13), получим:

E(N)=1/ (1-a) (15)

Для определения среднего числа проб при поиске заметим, что запись будет найдена в точности за столько же проб, сколько потре­бовалось при ее вставке. Каждая запись вставляется при своем значении a, так, например, при вставке первой записи a=0. Усредняя (14) по a, получим:

(16)

Таблица, приведенная ниже, дает представление о среднем числе проб при вставке и поиске.

a N(a) R(a)
0,20 1,25 1,12
0,50 2,00 1,39
0,80 5,00 2,01
0,90 10,00 2,56
0,95 20,00 3,15
0,99 100,00 4,65

Как видно из таблицы, не следует рассчитывать на полное использование памяти. Для динамичных таблиц коэффициент загрузки памяти не должен превышать 0,7 – 0,8.

Контрольные вопросы

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

2) Каким требованиям должны удовлетворять первичная и вторичная хеш-функции?

3) Какие методы разрешения коллизий в рассеянных таблицах вы знаете?

4) В чем заключается явление скучивания?

5) Опишите алгоритмы поиска, вставки и удаления для метода открытой адресации.

6) Дайте оценку трудоёмкости операций поиска и вставки для рассеянной таблицы.

 


Литература

1. Вирт Н. Алгоритмы и структуры данных. СПб Невский диалект 2001г. 352 с.

2.Ахо А., Хопкрофт Д, Ульман Дж.., Структуры данных и алгоритмы СПб Издатель­ский дом "Вильямc", 2000 г., 384 с.

3.Мейн М. Савитч У. Структуры данных и другие объекты в C++, 2-е издание. СПб Издательский дом "Вильямс" 2002г. 832 с.

4.Гудрич М.Т., Тамассия Р. Структуры данных и алгоритмы в Java. СПб Издательский дом "Вильямс" 671 с.

5.Бакнелл Дж. Фундаментальные алгоритмы и структуры данных в Delphi. М. ДиаСофт. 560 с.


 








Дата добавления: 2014-12-02; просмотров: 1354;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.