- •Лабораторные работы по программированию "Структуры и алгоритмы обработки данных"
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Варианты задания
- •Методические указания по выполнению задания
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Методические указания по выполнению задания (окончание)
- •Задание к лабораторной работе
- •Варианты задания
- •Методические указания по выполнению задания
- •Литература
- •Хранение данных в файлах
- •Простая организация данных
- •Ускорение операций с файлами
- •Хешированные файлы
- •Хешированные файлы (окончание)
- •Индексированные файлы
- •Индексированные файлы (окончание)
- •Несортированные файлы с плотным индексом
- •Внешние деревья поиска
- •Разветвленные деревья поиска
- •Создание пустого б-дерева
- •Создание пустого б-дерева (продолжение)
- •Создание пустого б-дерева (продолжение)
- •Создание пустого б-дерева (окончание)
- •Сравнение методов
- •Формат атд
- •Формат атд (окончание)
- •Вариант 8:
- •Атд "Хеш-таблица с цепочками коллизий"
- •Атд "Хеш-таблица с цепочками коллизий" (окончание)
- •Атд "Хеш-таблица с открытой адресацией"
- •Атд "Хеш-таблица с открытой адресацией" (окончание)
- •Атд "Итератор"
- •Описание методики тестирования хеш-функции (определение статистики c2)
- •Описание хеш-функций
- •Результаты тестирования хеш-функции
- •Описание методики тестирования трудоемкости операций
- •Описание методики тестирования трудоемкости операций (окончание)
- •Сравнительный анализ теоретических и экспериментальных оценок эффективности операций
- •Литература
Варианты задания
1.
Алгоритмы операций АТД реализуются в рекурсивной форме,
Схема операции обхода: t -> Lt -> Rt,
Дополнительная операция: поиск для заданного ключа предыдущего по значению ключа в дереве (нерекурсивная форма).
2.
Алгоритмы операций АТД реализуются в нерекурсивной форме,
Схема операции обхода: Lt -> t -> Rt,
Дополнительная операция: определение длины внешнего пути дерева (рекурсивная форма).
3.
Алгоритмы операций АТД реализуются в рекурсивной форме,
Схема операции обхода: Lt -> t -> Rt,
Дополнительная операция: вставка элемента в корень дерева (нерекурсивная форма).
4.
Алгоритмы операций АТД реализуются в нерекурсивной форме,
Схема операции обхода: t -> Lt -> Rt,
Дополнительная операция: поиск n -го по значению ключа в дереве (рекурсивная форма).
5.
Алгоритмы операций АТД реализуются в рекурсивной форме,
Схема операции обхода: Lt -> Rt -> t,
Дополнительная операция: определение длины внутреннего пути дерева (нерекурсивная форма).
6.
Алгоритмы операций АТД реализуются в нерекурсивной форме,
Схема операции обхода: Lt -> t -> Rt,
Дополнительная операция: удаление узла дерева на основе метода объединения двух поддеревьев удаляемого узла (рекурсивная форма).
7.
Алгоритмы операций АТД реализуются в рекурсивной форме,
Схема операции обхода: Lt -> t -> Rt,
Дополнительная операция: определение критерия сбалансированности для узлов дерева (нерекурсивная форма).
8.
Алгоритмы операций АТД реализуются в нерекурсивной форме,
Схема операции обхода: Lt -> Rt -> t,
Дополнительная операция: объединение двух поддеревьев (рекурсивная форма).
Методические указания по выполнению задания
1. Для АТД "BST - дерево" разрабатываются формат АТД и шаблонный класс - контейнер.
2. Для тестирования разработанного класса - контейнера разрабатываются две программы: программа тестирования операций через меню и программа тестирования трудоёмкости операций поиска, вставки и удаления.
3. Тестирование операций через меню выполняется для BST - дерева небольшого размера (до 20 элементов). Размер BST - дерева и тип данных, хранящихся в нём, задаётся с клавиатуры перед началом тестирования. После выполнения операций необходимо вывести на экран содержимое BST - дерева с помощью операции вывода структуры дерева.
4. Перед тестированием эффективности операций задаются тип данных, хранящихся в дереве, и размер дерева. Размер дерева варьируется в пределах от 10 до 100 000 элементов. После тестирования на экран выводятся размер дерева и средняя трудоёмкость операций поиска, вставки и удаления (среднее число пройденных узлов дерева).
Задание к лабораторной работе
Цели работы: Изучение и исследование методов балансировки двоичных деревьев поиска на примере АТД "Сбалансированное двоичное дерево поиска". Освоение методики модификации коллекций с помощью механизма наследования классов.
Задание к лабораторной работе:
1. Спроектировать, реализовать и провести тестовые испытания АТД "Сбалансированное двоичное дерево поиска" для коллекции, содержащей данные произвольного типа. Тип данных задаётся клиентской программой.
Интерфейс АТД "Сбалансированное двоичное дерево поиска" включает следующие операции:
опрос размера дерева,
очистка дерева,
проверка дерева на пустоту,
доступ к значению элемента с заданным ключом,
включение нового элемента с заданным ключом,
удаление элемента с заданным ключом,
итератор для доступа к элементам дерева с операциями:
1) установка на корень дерева,
2) проверка конца дерева,
3) доступ к данным текущего элемента дерева,
4) переход к следующему по значению ключа элементу дерева,
5) переход к предыдущему по значению ключа элементу дерева,
Для тестирования коллекции интерфейс АТД "Сбалансированное двоичное дерево поиска" включает дополнительные операции:
вывод структуры дерева на экран,
опрос числа просмотренных операцией узлов дерева.
2. Выполнить отладку и тестирование всех операций АТД "Сбалансированное двоичное дерево поиска" с помощью меню операций.
3. Выполнить сравнительное тестирование средней трудоёмкости операций для коллекций "BST - дерево" и "Сбалансированное двоичное дерево поиска" для среднего и худшего случаев.
4. Провести сравнительный анализ экспериментальных показателей трудоёмкости операций.
5. Составить отчёт по лабораторной работе. Отчёт должен содержать следующие пункты:
1) титульный лист,
2) цель лабораторной работы,
3) общее задание (пункты 1 - 5) и вариант задания,
4) формат АТД,
5) определение шаблонного класса для коллекции "Сбалансированное двоичное дерево поиска", предназначенное для клиентской программы,
6) описание методики тестирования трудоёмкости операций,
7) таблицы и графики с полученными оценками трудоёмкости операций для худшего и среднего случаев функционирования АТД. Должны быть приведены графики трудоёмкости для операций поиска, вставки и удаления (графики обоих коллекций совмещены в одной системе координат),
8) сравнительный анализ теоретических и экспериментальных оценок эффективности алгоритмов АТД,
9) выводы,
10) список использованной литературы,
11) приложение с текстами программ:
полное определение класса и текстов методов класса,
текст программы тестирования трудоёмкости операций АТД.
