- •В. Д. Колдаев Лабораторный практикум по курсу « Структуры и алгоритмы обработки данных »
- •Часть 1
- •Лабораторная работа № 1 « Методы сортировки »
- •Теоретические сведения
- •Методы сортировки
- •Сортировка вставкой
- •Сортировка обменом
- •Сортировка Шелла
- •Быстрая сортировка (сортировка Хоара)
- •Сортировка в нелинейных структурах
- •Турнирная сортировка
- •Пирамидальная сортировка
- •Функция сложности алгоритма
- •Лабораторное задание
- •Методика выполнения лабораторной работы
- •Основные функции системы
- •Варианты заданий
- •Лабораторная работа №2 «Методы поиска».
- •Теоретические сведения
- •Методы поиска
- •Последовательный поиск.
- •Бинарный поиск.
- •Фибоначчиев поиск.
- •Интерполяционный поиск.
- •Поиск по бинарному дереву.
- •Поиск по бору.
- •Поиск хешированием.
- •Алгоритмы поиска словесной информации
- •Алгоритм Бойера - Мура
- •Лабораторное задание
- •Методика выполнения лабораторной работы
- •Варианты заданий
- •Использовать алгоритмы Кнута - Морриса – Пратта, Бойера – Мура, Рабина для поиска текстовой информации. Лабораторная работа № 3 «итеративные и рекурсивные алгоритмы»
- •Теоретические сведения
- •Рекурсивные структуры данных
- •Лабораторное задание
- •Требования к отчету
- •Контрольные вопросы
- •Литература
- •Лабораторная работа № 4 «Алгоритмы построения остовного дерева сети».
- •Теоретические сведения
- •Лабораторное задание
- •Литература
- •Задание : Построить остовное дерево графа методами Крускала и Прима.
- •Решить задачи
- •Лабораторная работа № 5. Алгоритмы нахождения на графах кратчайших путей.
- •Теоретические сведения
- •Метод динамического программирования.
- •Метод Дейкстры
- •Алгоритм Флойда
- •Алгоритм Йена
- •Литература
- •Лабораторное задание.
- •Варианты заданий
- •Задание 2: Найти кратчайший путь между тремя парами вершин методом Дейкстры
- •Решить задачи
- •Составить программу для нахождения кратчайшего пути
- •Лабораторная работа № 6 « Эвристические алгоритмы »
- •Теоретические сведения
- •Волновой алгоритм.
- •Двухлучевой алгоритм.
- •Пример 2. Осуществить трассировку элементов а и в .
- •Четырехлучевой алгоритм.
- •Маршрутный алгоритм.
- •Геометрическая модель задачи о лабиринте
- •Алгоритмы составления расписания.
- •Литература
- •Лабораторное задание.
- •Решить задачи
Двухлучевой алгоритм.
В двухлучевом алгоритме из начального и конечного элементов одновременно выходят по два луча, трасса считается проведенной, если пересекаются два разноименных луча (от разных источников). Если на пути луча встречается запрещенный элемент, его обход осуществляется по второму приоритетному направлению, характерному для лучей выходящих из одной точки.
Если же оба направления оказываются заблокированными запрещёнными элементами, либо достигнут край координатной сетки, то движение луча прекращается.
Выбор направления движения лучей происходит исходя из интуиции разработчика . Существуют варианты распространения лучей, которые выбираются из таблицы, после вычисления значений aи β.
где (XA,YA) – координаты начального элемента,
(XB,YB) – координаты конечного элемента.
Исходя из значений ивыбирается вид распространения лучей:
Пример 2. Осуществить трассировку элементов а и в .
10 |
|
|
|
|
|
|
|
|
|
|
- Вариант распространения лучей
A
B
| ||||
9 |
|
|
A |
1 |
2 |
3 |
4 |
5 |
6 |
7 | |||||
8 |
|
|
1 |
|
|
|
|
|
|
6 | |||||
7 |
|
|
2 |
|
|
|
|
|
|
5 | |||||
6 |
|
|
3 |
|
|
|
7 |
6 |
|
4 | |||||
5 |
|
|
4 |
|
|
|
|
5 |
|
3 | |||||
4 |
|
|
5 |
6 |
7 |
|
|
4 |
|
2 | |||||
3 |
|
|
|
|
|
|
|
3 |
|
1 | |||||
2 |
|
|
|
|
|
|
|
2 |
1 |
B | |||||
1 |
|
|
|
|
|
|
|
|
|
| |||||
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
Четырехлучевой алгоритм.
Из начальной и конечной точек выходят одновременно по четыре луча. Лучи движутся строго по заданным направлениям и “затухают”, если достигли края координатной сетки, либо встретили запрещенный элемент.
|
1 |
|
|
|
1 |
|
1 |
A |
1 |
|
1 |
B |
1 |
|
1 |
|
|
|
1 |
|
Пример 3.
|
2 |
|
|
|
|
|
|
1 |
|
|
|
|
|
1 |
A |
|
|
|
|
|
|
1 |
|
|
1 |
|
|
|
2 |
2 |
1 |
B |
1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|