- •Лабораторный практикум по курсу « Структуры и алгоритмы обработки данных » Оглавление
- •20 Методика выполнения лабораторной работы 28
- •30 Лабораторное задание 45
- •47 Решение задач 72
- •1. Лабораторная работа - Методы сортировки
- •Теоретические сведения
- •Сортировка выбором
- •Сортировка вставкой
- •Сортировка обменом
- •Сортировка Шелла
- •Быстрая сортировка (сортировка Хоара)
- •Сортировка в нелинейных структурах
- •Турнирная сортировка
- •Пирамидальная сортировка
- •Функция сложности алгоритма
- •Лабораторное задание
- •Методика выполнения лабораторной работы
- •Пояснения к выполнению работы.
- •Лабораторная работа -Методы поиска
- •Теоретические сведения
- •Последовательный поиск.
- •Бинарный поиск.
- •Фибоначчиев поиск.
- •Интерполяционный поиск.
- •Поиск по бинарному дереву.
- •Поиск по сбалансированному дереву.
- •Поиск по бору
- •Поиск хешированием
- •Алгоритмы поиска словесной информации
- •Алгоритм Кнута - Морриса - Пратта
- •Алгоритм Бойера - Мура
- •Алгоритм Рабина
- •Лабораторное задание
- •Методика выполнения лабораторной работы
- •Лабораторная работа -Итеративные и рекурсивные алгоритмы
- •Теоретические сведения
- •Итеративный алгоритм.
- •Итеративное вычисление факториала
- •Рекурсивное вычисление факториала
- •Рекурсивные структуры данных
- •Формирование бинарного дерева
- •Рекурсивная процедура обхода узлов дерева сверху-вниз
- •Лабораторное задание
- •Требования к отчету
- •Контрольные вопросы
- •Литература
- •Лабораторная работа - Алгоритмы построения остовного дерева сети
- •Теоретические сведения
- •Алгоритмы Крускала и Прима
- •Пример со схемой микрорайона
- •Пример со схемой компьютерной сети
- •Лабораторное задание
- •Требования к отчёту
- •Литература
- •Задание к лабораторной работе 4
- •Решение задач
- •Лабораторная работа - Алгоритмы нахождения на графах кратчайших путей
- •Теоретические сведения
- •Метод динамического программирования.
- •Пример определения кратчайшего пути №1
- •Пример нахождения кратчайшего пути при условии, что граф неориентированный№2
- •Метод Дейкстры
- •Алгоритм Флойда
- •Алгоритм Йена
- •Алгоритм Беллмана- Форда
- •Литература
- •Лабораторное задание.
- •Требования к отчету
- •Варианты заданий
- •Задание 1: Найти кратчайший путь на графе между тремя парами вершин методом динамического программирования
- •Задание 2: Найти кратчайший путь между тремя парами вершин методом Дейкстры
- •Решение задач
- •Задание на разработку программы
- •Лабораторная работа -Эвристические алгоритмы
- •Теоретические сведения
- •Волновой алгоритм
- •Двухлучевой алгоритм.
- •Пример 2. Осуществить трассировку элементов а и в .
- •Четырехлучевой алгоритм
- •Маршрутный алгоритм.
- •Геометрическая модель задачи о лабиринте
- •Алгоритмы составления расписания.
- •Литература
- •Лабораторное задание.
- •Требования к отчету
- •Решение задач
-
Пример нахождения кратчайшего пути при условии, что граф неориентированный№2
Для графа (рис. 1) найти кратчайший путь от вершины 1 до вершины 10, рассматривая граф как неориентированный. Матрица смежности весов графа в этом случае имеет вид:
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
1- |
3 |
4 |
2 |
- |
- |
- |
- |
- |
- |
2 |
3 |
- |
- |
- |
- |
3 |
- |
- |
- |
- |
3 |
4 |
- |
- |
- |
- |
6 |
- |
- |
- |
- |
4 |
2 |
- |
- |
- |
5 |
2 |
- |
- |
- |
- |
5 |
- |
- |
- |
5 |
- |
1 |
6 |
- |
12 |
- |
6 |
- |
3 |
6 |
2 |
1 |
- |
8 |
7 |
- |
- |
7 |
- |
- |
- |
- |
6 |
8 |
- |
- |
- |
4 |
8 |
- |
- |
- |
- |
- |
7 |
- |
- |
6 |
3 |
9 |
- |
- |
- |
- |
12 |
- |
- |
6 |
- |
11 |
10 |
- |
- |
- |
- |
- |
- |
4 |
3 |
11 |
- |
Записываем выражения для функции fi
f1 +3 f1 + 4 f1 + 2
f1 = 0; f2 = min; f3 = min; f4 = min f5 + 5
f6 + 3 f6 + 6 f6 + 2
f2 + 3
f4 + 5 f3 + 6
f6 + 1 f4 + 2 f5 + 6
f5 = min ; f6 = min ; f7 = min
f9 +12 f5 + 1 f6 + 8
f7 + 6 f7 + 8
f8 + 7
f7 + 4
f6 + 7 f5 + 12
f8 = min ; f9 = min ; f10 = min f8 + 3 .
f9 + 6 f8 + 6
f9 + 11
Указанные целевые функции , представляют собой систему линейных алгебраических уравнений (в примере имеется 10 уравнений и 10 неизвестных).
Рассмотрим один из вариантов ее решения, учитывая, что f1 = 0 .
Тогда имеем:
2
f2 = 3; f3 = 4; f4 = min f5 + 5 = 2;
f6 + 2
6
7 10
f6 + 1 7 4 4
f5 = min f9 +12 = min ; f6 = min f5 +1 = min = 4
f7 + 6 f6 + 1 f7 + 1 f5 + 1
f8 + 7
Подставив выражение для f6 в f5, получим
7 f5 = min 4 + 1 = 5.
f5 + 1 + 1
Тогда
11 17 15
f7 = 11; f8 = min ; f9 = min ; f10 = min f8 + 3 .
f9 + 6 f8 + 6 f9 + 11
Подставляя f9 в f8, получаем
11
f8 = min 17 + 6 = 11.
f8 + 6 + 6
Окончательно имеем: f9 = 17; f10 = 14.