- •В. Д. Колдаев Лабораторный практикум по курсу « Структуры и алгоритмы обработки данных »
- •Часть 1
- •Лабораторная работа № 1 « Методы сортировки »
- •Теоретические сведения
- •Методы сортировки
- •Сортировка вставкой
- •Сортировка обменом
- •Сортировка Шелла
- •Быстрая сортировка (сортировка Хоара)
- •Сортировка в нелинейных структурах
- •Турнирная сортировка
- •Пирамидальная сортировка
- •Функция сложности алгоритма
- •Лабораторное задание
- •Методика выполнения лабораторной работы
- •Основные функции системы
- •Варианты заданий
- •Лабораторная работа №2 «Методы поиска».
- •Теоретические сведения
- •Методы поиска
- •Последовательный поиск.
- •Бинарный поиск.
- •Фибоначчиев поиск.
- •Интерполяционный поиск.
- •Поиск по бинарному дереву.
- •Поиск по бору.
- •Поиск хешированием.
- •Алгоритмы поиска словесной информации
- •Алгоритм Бойера - Мура
- •Лабораторное задание
- •Методика выполнения лабораторной работы
- •Варианты заданий
- •Использовать алгоритмы Кнута - Морриса – Пратта, Бойера – Мура, Рабина для поиска текстовой информации. Лабораторная работа № 3 «итеративные и рекурсивные алгоритмы»
- •Теоретические сведения
- •Рекурсивные структуры данных
- •Лабораторное задание
- •Требования к отчету
- •Контрольные вопросы
- •Литература
- •Лабораторная работа № 4 «Алгоритмы построения остовного дерева сети».
- •Теоретические сведения
- •Лабораторное задание
- •Литература
- •Задание : Построить остовное дерево графа методами Крускала и Прима.
- •Решить задачи
- •Лабораторная работа № 5. Алгоритмы нахождения на графах кратчайших путей.
- •Теоретические сведения
- •Метод динамического программирования.
- •Метод Дейкстры
- •Алгоритм Флойда
- •Алгоритм Йена
- •Литература
- •Лабораторное задание.
- •Варианты заданий
- •Задание 2: Найти кратчайший путь между тремя парами вершин методом Дейкстры
- •Решить задачи
- •Составить программу для нахождения кратчайшего пути
- •Лабораторная работа № 6 « Эвристические алгоритмы »
- •Теоретические сведения
- •Волновой алгоритм.
- •Двухлучевой алгоритм.
- •Пример 2. Осуществить трассировку элементов а и в .
- •Четырехлучевой алгоритм.
- •Маршрутный алгоритм.
- •Геометрическая модель задачи о лабиринте
- •Алгоритмы составления расписания.
- •Литература
- •Лабораторное задание.
- •Решить задачи
Литература
1. Т. Кормен, Ч. Лейзерсон, Р. Ривест
Алгоритмы: построение и анализ. М.: МЦНМО, 2000.
2. Д.Кнут Искусство программирования , том 1. Основные алгоритмы. Уч . пос. М.:Изд.
Дом " Вильямс ", 2000.
3. Вирт Н. Алгоритмы и структуры данных.: Пер. С англ. - М.: Мир, 2001.
4. Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на языке Си.
Учеб. пособие. М : Финансы и статистика, 2004.
5. А. Ахо, Дж.Хопкрофт, Дж.Ульман, Структуры данных и алгоритмы М: СПб: Киев:
Вильямс, 2001г.
Лабораторное задание.
Для выполнения лабораторной работы необходимо:
1) Найти кратчайший путь методом динамического программирования для трех графов . Зафиксировать параметры каждого графа(число вершин и ребер), значение пути и время решения задачи (ориентированные графы);
Путь к файлу: D:\ИПОВС\АиСД\KRATPUT\Kratput_new
2) Найти кратчайший путь методом Дейкстры для трех графов. Зафиксировать параметры каждого графа (число вершин и ребер), значение пути и время решения задачи.
Путь к файлу: D:\ИПОВС\АиСД\KRATPUT\Kratput1
Путь к файлу: D:\ИПОВС\АиСД\KRATPUT\Kratput2
Путь к файлу: D:\ИПОВС\АиСД\KRATPUT\Kratput3
Системы работает в диалоговом режиме с использованием «меню». Вся необходимая поясняющая информация отображается во время работы системы на экране монитора.
3) Изучить алгоритмы работы с графовыми структурами
Путь к файлу: D:\ИПОВС\АиСД\KRATPUT\Grafmod
Данная программа предназначена для демонстрации работы алгоритмов и облегчения понимания терминов теории графов.
Программа позволяет вводить, редактировать, сохранять графы в файл, загружать из файла. Также реализованы алгоритмы построения Эйлерова цикла, нахождения кратчайшего пути, нахождение пути, содержащего наименьшее количество вершин, решение задачи о раскраске вершин, задачи Коммивояжера.
Для ввода вершины щелкните левой кнопкой мыши в свободное от кнопок поле. Для ввода ребра щелкните правой кнопкой мыши на одной вершине, затем на другой. Для ввода длины ребра щелкните левой кнопкой мыши на введенном ребре. При перемещении вершины нажмите кнопку «Переместить», щелкните левой кнопкой мыши на перемещаемую вершину, затем на свободное место, куда вы хотите переместить вершину, и нажмите кнопку «Переместить». Для удаления вершины нажмите на кнопку «Удалить», затем щелкните левой кнопкой мыши на вершинах, которые хотите удалить, затем еще раз на кнопку «Удалить».
При включенной кнопке «Выравнивать по сетке» новые вершины будут автоматически выравниваться по координатной сетке.
Третья панель служит для запуска алгоритмов программы. Первая кнопка запускает алгоритм решения задачи Коммивояжера. При нажатии на вторую кнопку программа раскрасит граф минимальным количеством цветов. Если выбрать две различные вершины (щелчком левой кнопки мыши) и нажать на третью кнопку, то программа найдет путь с наименьшим количеством вершин, а если четвёртую, то найдет кратчайший путь между вершинами. При нажатии на пятую кнопку построится Эйлеров цикл.
4) Ознакомиться с алгоритмами Флойда, Йена, Беллмана- Форда
Требования к отчету
Отчет должен содержать:
Конспект лабораторной работы;
Схемы алгоритмов определения в графе кратчайшего расстояния между заданными вершинами для метода динамического программирования и метода Дейкстры;
Результаты выполнения работы;
Выводы по работе.
Контрольные вопросы
Какова теоретическая сложность алгоритмов, рассмотренных в данной работе?
В решении каких прикладных задач используется алгоритмы определение в графе кратчайших расстояний между заданными вершинами?
Может ли быть применен рассмотренный в работе алгоритм Дейкстры к определению кратчайшего расстояния в ориентированном графе?
Как работает алгоритм Дейкстры?
Как работает алгоритм динамического программирования применительно к задаче определения в графе кратчайших расстояний между вершинами?