- •Аннотация
- •Содержание
- •Введение
- •1. Теоретическое описание структуры данных
- •1.1. Основные понятия и определения
- •1.2. Временная и пространственная сложность операций
- •2.3. Примеры использования реализованных классов и методов
- •2. Реализация
- •2.1. Описание разработанных классов, методов
- •2.2. Обоснование принятых решений по выбору типов данных и применяемых алгоритмов
- •3. Исследование структуры данных
- •3.1. Проведение экспериментов для оценки производительности
- •3.2. Анализ полученных результатов
- •Заключение
- •Список использованных источников
- •Приложение а иСходный код программы
- •Приложение б тестирование
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра МО ЭВМ
Курсовая РАБОТА
по дисциплине «Алгоритмы и структуры данных»
Тема: Реализация и исследование хеш-таблицы
Студентка гр. 2383 |
|
Бараева Е.Н. |
Преподаватель |
|
Гаврилов А.В. |
Санкт-Петербург
2023
ЗАДАНИЕ
на курсовую работу
Студентка Бараева Е.Н. |
||
Группа 2383 |
||
Тема работы: Реализация и исследование хеш-таблицы
|
||
Вариант 3: Реализация хеш-таблицы с методом решения коллизий – метод цепочек и проведение исследования функции удаления из хеш-таблицы. |
||
Содержание пояснительной записки: Содержание, Введение, Теоретическое описание структуры данных, Реализация, Исследование структуры данных, Заключение, Список использованных источников, Приложение А, Приложение Б. |
||
Предполагаемый объем пояснительной записки: Не менее 15 страниц. |
||
Дата выдачи задания: 13.12.2023 |
||
Дата сдачи реферата: 24.12.2023 |
||
Дата защиты реферата: 24.12.2023 |
||
Студентка |
|
Бараева Е.Н. |
Преподаватель |
|
Гаврилов А.В. |
Аннотация
В данной курсовой работе была реализована хеш-таблица (метод цепочек) с функциями вставки, удаления и поиска, а также проведено исследование функции удаления. Хэш-таблица – это структура данных, которая позволяет быстро вставлять, удалять и извлекать данные. Она работает с помощью хэш-функции для сопоставления ключа с индексом в массиве.
Содержание
|
Введение |
5 |
1. |
Теоретическое описание структуры данных |
6 |
1.1 |
Основные понятия и определения |
6 |
1.2 |
Временная и пространственная сложность операций |
6 |
2. |
Реализация |
8 |
2.1. |
Описание разработанных классов, методов |
8 |
2.2. |
Обоснование принятых решений по выбору типов данных и применяемых алгоритмов |
9 |
2.3. |
Примеры использования реализованных классов и методов |
9 |
3. |
Исследование структуры данных |
11 |
3.1 |
Проведение экспериментов для оценки производительности |
11 |
3.2 |
Анализ полученных результатов |
11 |
|
Заключение |
13 |
|
Список использованных источников |
14 |
|
Приложение А. Исходный код программы |
15 |
|
Приложение Б. Тестирование |
17 |
Введение
Цель работы.
Целью данной работы является реализация хеш-таблицы (метод цепочек) и исследование функции удаления на различных объемах данных (10, 100, 1000, 10000, 100000).
Задачи.
Для достижения поставленной цели требуется решить следующие задачи: изучить информацию о хеш-таблицах и методах решений коллизий в том числе о методе цепочек; выбрать удобную структуру данных для реализации хеш-таблицы.
1. Теоретическое описание структуры данных
1.1. Основные понятия и определения
Хеш-таблица – это структура данных, реализующая интерфейс ассоциативного массива, а именно, она позволяет хранить пары (ключ, значение) и выполнять три операции: операцию добавления новой пары, операцию удаления и операцию поиска пары по ключу.
В хеш-таблице обработка новых индексов производится при помощи ключей. А элементы, связанные с этим ключом, сохраняются в индексе. Этот процесс называется хешированием.
Когда хеш-функция генерирует один индекс для нескольких ключей, возникает конфликт: неизвестно, какое значение нужно сохранить в этом индексе. Это называется коллизией хеш-таблицы.
Метод цепочек. Суть этого метода проста: если хеш-функция выделяет один индекс сразу двум элементам, то храниться они будут в одном и том же индексе, но уже с помощью односвязного списка.
1.2. Временная и пространственная сложность операций
Временная сложность методов вставки, поиска и удаления в хэш-таблице с использованием отдельной цепочки зависит от размера хэш-таблицы, количества пар ключ-значение в хэш-таблице и длины связанного списка по каждому индексу.
Предполагая хорошую хэш-функцию и равномерное распределение ключей, ожидаемая временная сложность этих методов составляет O (1) для каждой операции. Однако в худшем случае временная сложность может составлять O(n), где n - количество пар ключ-значение в хэш-таблице.
Однако важно выбрать хорошую хэш-функцию и подходящий размер для хэш-таблицы, чтобы минимизировать вероятность коллизий и обеспечить хорошую производительность.
Пространственная сложность хэш-таблицы с использованием отдельной цепочки зависит от размера хэш-таблицы и количества пар ключ-значение, хранящихся в хэш-таблице.
Сама хэш-таблица занимает O(m) пространство, где m - емкость хэш-таблицы. Каждый узел связанного списка занимает O(1) места, и в связанных списках может быть не более n узлов, где n - количество пар ключ-значение, хранящихся в хэш-таблице. Следовательно, общая сложность пространства равна O(m + n).
