
- •Лабораторные работы по программированию "Структуры и алгоритмы обработки данных"
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Методические указания по выполнению задания (окончание)
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Литература
- •Хранение данных в файлах
- •Простая организация данных
- •Ускорение операций с файлами
- •Хешированные файлы
- •Хешированные файлы (окончание)
- •Индексированные файлы
- •Индексированные файлы (окончание)
- •Несортированные файлы с плотным индексом
- •Внешние деревья поиска
- •Разветвленные деревья поиска
- •Создание пустого б-дерева
- •Создание пустого б-дерева (продолжение)
- •Создание пустого б-дерева (продолжение)
- •Создание пустого б-дерева (окончание)
- •Сравнение методов
- •Формат атд
- •Формат атд (окончание)
- •Вариант 8:
- •Атд "Хеш-таблица с цепочками коллизий"
- •Атд "Хеш-таблица с цепочками коллизий" (окончание)
- •Атд "Хеш-таблица с открытой адресацией"
- •Атд "Хеш-таблица с открытой адресацией" (окончание)
- •Атд "Итератор"
- •Описание методики тестирования хеш-функции (определение статистики c2)
- •Описание хеш-функций
- •Результаты тестирования хеш-функции
- •Описание методики тестирования трудоемкости операций
- •Описание методики тестирования трудоемкости операций (окончание)
- •Сравнительный анализ теоретических и экспериментальных оценок эффективности операций
- •Литература
Результаты тестирования хеш-функции
Размер таблицы |
Значения c2 |
Значения c2 |
Значения c2 |
m - sqrt(m) |
c2 |
m + sqrt(m) |
10 |
6 |
8 |
10 |
7 |
8 |
13 |
100 |
167 |
159 |
131 |
90 |
152.3 |
110 |
1000 |
1357 |
1502 |
1334 |
969 |
1397.7 |
1031 |
10000 |
15486 |
15402 |
15514 |
9900 |
15467.3 |
10100 |
Таблица 1. Результаты тестирования хеш-функции.
Рисунок 1. График зависимости критерия c2 от размера таблицы.
Из результатов тестирования видно, что значения c2 для различных размеров таблиц лежат выше ожидаемого значения. Отклонение от ожидаемого значения увеличивается с ростом размера таблицы.
Описание методики тестирования трудоемкости операций
Для тестирования трудоёмкости пользователь должен ввести размер таблицы, коэффициент заполнения и количество повторений основных операций. Далее поочерёдно выполняются все основные операции (вставка, удаление, поиск). Для создания 10% промахов, на каждой 10-ой итерации для удаления и поиска выбирается ключ, которого нет в таблице, для вставки напротив такой ключ, который в таблице уже существует. Для создания промахов используется массив, в котором содержаться все ключи, которые находятся в таблице.
Коэффициент заполнения |
Средняя трудоёмкость: Вставка |
Средняя трудоёмкость: Поиск |
Средняя трудоёмкость: Удаление |
1 |
3 |
3 |
3 |
2 |
3 |
3 |
3 |
3 |
4 |
4 |
3 |
4 |
5 |
4 |
4 |
5 |
6 |
4 |
5 |
6 |
7 |
6 |
6 |
7 |
8 |
6 |
6 |
8 |
10 |
6 |
6 |
9 |
10 |
8 |
8 |
Таблица 2. Трудоёмкость основных операций для таблицы с цепочками коллизий.
Рисунок 2. Трудоёмкость основных операций для таблицы с цепочками коллизий.
Коэффициент заполнения |
Средняя трудоёмкость: Вставка |
Средняя трудоёмкость: Поиск |
Средняя трудоёмкость: Удаление |
0.1 |
1 |
1 |
1 |
0.2 |
1 |
1 |
1 |
0.3 |
1 |
2 |
1 |
0.4 |
2 |
2 |
1 |
0.5 |
3 |
5 |
1 |
0.6 |
5 |
5 |
2 |
0.7 |
6 |
6 |
2 |
0.8 |
16 |
14 |
3 |
0.9 |
29 |
20 |
6 |
Таблица 3. Трудоёмкость основных операций для таблицы с открытой адресацией.
Описание методики тестирования трудоемкости операций (окончание)
Рисунок 3. Трудоёмкость основных операций для таблицы с открытой адресацией.
Сравнительный анализ теоретических и экспериментальных оценок эффективности операций
Теоретические показатели трудоёмкости приведены в таблице 4. Результаты, полученные практически для таблицы, работающей заданной хеш-функцией, с небольшим отклонением совпадает с теоретическим оценками.
Тип таблицы |
Теоретические показатели трудоёмкости: Вставка |
Теоретические показатели трудоёмкости: Поиск |
Теоретические показатели трудоёмкости: Удаление |
Таблица с цепочками коллизий |
O(a) |
O(a) |
O(a) |
Таблица с открытой адресацией |
1/2(1+1/(1-a)) |
1/2(1+1/(1-a)^2) |
O(1) |
Таблица 4. Теоретические показатели трудоемкости.
Из полученных данных можно сделать вывод о том, что хеш-таблица с открытой адресацией наиболее эффективна при коэффициенте заполнения меньше 0.5, в другом случае трудоёмкость достаточно велика. Таблица с цепочками коллизий наиболее эффективна при коэффициенте заполнения равном 5, т.к. при этом значении коэффициента средняя длина списков равна 5.
Выводы
АДТ хеш-таблица является достаточно эффективной структурой поиска. В зависимости от количества ключей хранимых в таблице нужно правильно выбирать тип таблицы. При достаточно большом количестве ключей наибольшую эффективность имеет таблица с цепочками коллизий, при небольшом количестве ключей таблица с прямой адресацией является более эффективной.