книги / Теория графов и её приложения.-1
.pdfРис. 5.6. Граф задачи о Ханойской башне
собозначенными ребрами
5.1.Пример решения задачи в программе GRIN
СоздадимграфзадачиоХанойскойбашнедляn = 3 (рис. 5.7).
Рис. 5.7. Граф задачи о Ханойской башне
Найдём кратчайший путь из вершины с координатами
(0, 1/2/3) в вершину (1/2/3,0) (рис. 5.8).
51
Рис. 5.8. Решение задачи о Ханойской башне для n = 3 – кратчайший путь из исходной вершины с координатами (0, 1/2/3) в целевую вершину (1/2/3,0)
Найдём кратчайший путь в целевую вершину не из исходной вершины, аизпроизвольной, например, извершины(3,1/2) (рис. 5.9).
Рис. 5.9. Кратчайший путь в целевую вершину из вершины (3,1/2)
52
Для создания графа задачи о Ханойской башне для n = 4 скопируем граф для n = 3 (Ctrl, C) и вставим (Ctrl, V) – вправо и вверх, затем соединим три подграфа (рис. 5.10).
Рис. 5.10. Граф задачи о Ханойской башне для n = 4
Найдём кратчайший путь из исходной вершины (0,1/2/3/4)
в целевую вершину (1/2/3/4, 0) (рис. 5.11).
Рис. 5.11. Кратчайший путь в графе задачи о Ханойской башне для n = 4 из исходной вершины (0,1/2/3/4) в целевую вершину (1/2/3/4, 0)
53
Задание: найти кратчайший путь в целевую вершину графа задачи о Ханойской башне из заданной вершины, n = 3. Координата заданной исходной вершины: первая позиция – ось x, вторая позиция – ось z:
1) (0,0); 2) (3,1/2); 3) (1,2); 4) (0,1/2); 5) (3,2); 6) (0,2); 7) (1/3,2); 8) (1,0); 9) (2,1); 10) (1/3,0).
Подготовьте отчёт и будьте готовы к ответу на вопросы по занятию:
1.Как производится разметка графа задачи о Ханойской
башне?
2.Как определяется кратчайший путь в размеченном графе задачи о Ханойской башне?
54
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 6. РЕШЕНИЕ ЭКСТРЕМАЛЬНЫХ ЗАДАЧ НА ГРАФАХ.
НАХОЖДЕНИЕ КРАТЧАЙШИХ ПУТЕЙ В ГРАФЕ С РЁБРАМИ НЕЕДИНИЧНОЙ ДЛИНЫ. НАХОЖДЕНИЕ МИНИМАЛЬНОГО СТЯГИВАЮЩЕГО ДЕРЕВА
1.Опрос по теоретическому материалу – особенности разметки графа с рёбрами неединичной длины.
2.Коллективное решение задач по теме занятия у доски «вручную».
3.Самостоятельная работа по вариантам – на ПЭВМ в программе GRIN.
4.«Летучка» – «вручную».
Примеры решения задачи нахождения кратчайшего пути в графе с рёбрами неединичной длины
Задание 1. Найти кратчайший путь в графе с рёбрами произвольной длины (рис. 6.1) из вершины 1 в вершину 9.
1 |
|
|
|
|
|
7 |
1 |
|
|
|
|
2 |
2 |
3 |
|
|
|
|
1 |
2 |
|
|
|
4 |
1 |
|
7 |
|
|
4 |
5 |
|
3 |
1 |
|
5 |
6 |
6 |
8 |
2 |
9 |
Рис. 6.1. Нахождение кратчайшего пути в графе с рёбрами произвольной длины
55
Выполним разметку с учётом длины ребра, причём некоторые метки могут быть уменьшены за счёт более коротких путей. Разметка производится из конечной (целевой) вершины 9
вначальную вершину 1. Двигаемся из начальной вершины 1
всторону уменьшения индекса на «длину» ребра. Таким образом, кратчайший путь: 1–3–2–8–9.
Задание. Найти кратчайший путь из заданной вершины
вуказанную вершину для графа с рёбрами произвольной длины
(см. рис. 6.1):
1)из 9 в 3; 2) из 9 в 4; 3) из 9 в 6; 4) из 9 в 5; 5) из 8 в 1; 6) из 2 в 9; 7) из 3 в 9; 8) из 4 в 9; 9) из 6 в 9; 10) из 9 в 2.
Задание 2. Создать в программе GRINграф проективной плоскости Фано с различными весами рёбер по заданной матрице смежности (рис. 6.2).
Рис. 6.2. Матрица смежности графа Фано с различными весами рёбер
Найтикратчайшийпутьизвершины1 ввершину 3 (рис. 6.3).
Пример решения задачи коммивояжёра методом полного перебора вариантов.
Задание 3. Решить задачу коммивояжёра для графа
(рис. 6.4).
56
Рис. 6.3. Кратчайший путь в графе Фано из вершины 1 в вершину 3
1 |
|
5 |
2 |
11 |
6 |
12 |
10 |
3 8
Рис. 6.4. Задача коммивояжёра
Для полного перебора маршрутов будем строить дерево обхода вершин, обозначая каждую вершину дерева последовательностью из номеров уже пройденных вершин (рис. 6.5).
Таким образом, лучшие маршруты (1,2,3,4) и (1,4,3,2,1) «стоят» 31 условную единицу. Здесь в скобках указаны последовательности вершин графа.
57
|
|
|
|
(1) |
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
5 |
11 |
12 |
|
|
|
|
|
(1,2) |
|
(1,3) |
|
(1,4) |
|
|
|
|
2 |
|
3 |
|
4 |
|
|
|
6 |
10 |
6 |
|
8 |
10 |
8 |
|
(1,2,3) |
|
(1,2,4) |
(1,3,2) |
|
(1,3,4) |
(1,4,2) |
|
(1,4,3) |
5 |
|
6 |
7 |
|
8 |
9 |
|
10 |
8 |
|
8 |
10 |
|
10 |
6 |
|
6 |
(1,2,3,4) |
|
(1,2,4,3) |
(1,3,2,4) |
|
(1,3,4,2) |
(1,4,2,3) |
|
(1,4,3,2) |
11 |
|
12 |
13 |
|
14 |
15 |
|
16 |
12 |
|
11 |
12 |
|
5 |
11 |
|
5 |
(1,2,3,4,1)=31 |
(1,2,4,3,1)=34 |
(1,3,2,4,1)=39 |
(1,3,4,2,1)=34 |
(1,4,2,3,1)=39 |
(1,4,3,2,1)=31 |
|||
17 |
|
18 |
19 |
|
20 |
21 |
|
22 |
Рис. 6.5. Дерево перебора маршрутов в задаче коммивояжёра
Задание 4. Решить задачу коммивояжёра путём построения дерева обхода вершин для графа, изображенного на рис. 6.6.
1 |
|
5 |
2 |
|
|
|
2 |
|
3 |
|
|
|
|
|
11 |
6 |
12 |
10 |
5 |
|
|
5 |
|
3 |
3 |
|
8 |
|
|
Рис. 6.6. Задача коммивояжёра 2
58
Пример решения задачи «проведения дорог» Задание 5. Найти минимальное стягивающее дерево для
заданного графа (рис. 6.7).
Рис. 6.7. Минимальное стягивающее дерево
Подготовьте отчёт и будьте готовы к ответу на вопросы по занятию:
1.Как производится разметка графа с рёбрами произвольной длины?
2.Когда заканчивается разметка такого графа?
3.Чему равна длина кратчайшего пути?
4.Как определяется кратчайший путь в размеченном графе
срёбрами различной длины?
5.Что такое минимальное стягивающее дерево?
6.В чём суть алгоритма Краскала?
59
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 7. РЕШЕНИЕ ЭКСТРЕМАЛЬНЫХ ЗАДАЧ НА ГРАФАХ.
НАХОЖДЕНИЕ МАКСИМАЛЬНОГО ПОТОКА В ТРАНСПОРТНОЙ СЕТИ (FLOW NETWORK).
АЛГОРИТМ ФОРДА–ФАЛКЕРСОНА
1.Опрос по теоретическому материалу – особенности графа «Транспортная сеть».
2.Коллективное решение задачи по теме занятия у доски «вручную».
3.Самостоятельная работа по вариантам – на ПЭВМ в программе GRIN.
4.«Летучка» – решение задач по вариантам «вручную».
Нахождение полного потока в транспортной сети
Ищем путь, все дуги которого не насыщены, и увеличиваем поток на +1 до тех пор, пока он не станет полным. Путь μ1 = х0, х1, х3, z: насыщается дуга х0,х1; ϕ(μ1) = 1:
Путь μ2 = х0, х2, х4, х3, z: насыщаются дуги х4, х3 и х3, z;
ϕ(μ2) = 1:
60