- •Решение задач теории графов методические указания
- •1. Определение метрических характеристик графов
- •1.1. Теоретические сведения
- •1.2. Пример
- •1.3. Упражнения
- •2. Определение сильных компонент графа
- •2.1. Теоретические сведения
- •2.2. Пример
- •2.3. Задачи для самостоятельного решения
- •3. Построение остовных деревьев графа
- •3.1. Теоретические сведения
- •3.2. Примеры решения задач
- •Решение Кратчайший остов для данного графа имеет следующий вид:
- •Алгоритм Прима
- •3.3. Упражнения
- •4. Построение эйлеровых и гамильтоновых циклов в графе
- •4.1. Теоретические сведения
- •4.2. Примеры решения задач
- •4.3. Упражнения
- •5. Определение кратчайшего пути между двумя вершинами графа. Алгоритм дейкстры
- •5.1. Теоретические сведения
- •5.2. Пример
- •5.3. Упражнения
- •6. Определение кратчайших путей между всеми парами вершин графа. Алгоритм флойда
- •6.1. Теоретические сведения
- •6.2. Пример
- •6.3. Упражнения
- •7. Определение максимального потока в транспортной сети
- •7.1. Теоретические сведения
- •Алгоритм Форда-Фалкерсона включает следующие шаги: а. Расстановка пометок
- •7.3 Упражнения
- •Библиографический список
- •Содержание
- •Решение задач теории графов методические указания
- •394026 Воронеж, Московский просп., 14
3.2. Примеры решения задач
Задача 1. Построить остовное дерево графа с использованием стратегий поиска в глубину и ширину.
Рис. 7
Решение.
1. Поиск в глубину.
Начинаем поиск с любой вершины, допустим, с x1. Выбираем вершину, смежную с x1, например x2. Вершины x1 и x2 соединяем ребром. Далее выбираем вершину x3, смежную с x2. Вершины x2 и x3 соединяем ребром. Продолжая двигаться дальше, соединяем вершины x3 и x4. У вершины x4 три смежных вершины - x5,x7 и x8. Для продолжения поиска можно выбрать любую из них, например x5 . Соединяем ребром вершины x5 и x6, а затем x6 и x7. Попав в вершину x7, видим, что смежной с ней является вершина x4. Но продолжать поиск в данном направлении нельзя, так как вершина x4 уже была просмотрена. Согласно алгоритму возвращаемся в предыдущую вершину, то есть в x6. Так как у x6 нет новых вершин, то возвращаемся в вершину x5. Аналогично из x5 переходим в вершину x4. Вершина x8 является новой, поэтому, согласно алгоритму, выбираем вершину x8 и соединяем вершины x4 и x8 ребром, затем соединяем x8 и x9. У x9 нет новых вершин, кроме x1, но соединить эти вершины мы не можем, так как граф тогда не будет остовом. Мы просмотрели все вершины графа G. Возвращаемся в вершину x1. Найденный остов графа G представлен на рис. 8, а.
2. Поиск в ширину.
Начинаем поиск с любой вершины, например с x1. Соединяем ребрами вершину x1 со всеми смежными ей вершинами - x2, x4 и x9. Теперь по порядку рассматриваем эти смежные вершины. Берем вершину x2. Соединяем её со всеми смежными ей вершинами, то есть с x3. Следующая по порядку вершина x4. Соединяем её со смежными вершинами, то есть с x5, x7 и x8. Затем по порядку идет вершина x9, но соединить её со смежной вершиной x8 мы не можем, так как полученный граф не будет являться остовом. Далее рассматриваем вершины x5, x7 и x8. У x5 есть смежная вершина x6. Соединяем их ребром. У вершин x7 и x8 нет таких смежных вершин. Таким образом, мы получили один из остовов графа G (рис. 8, б).
а б
Рис. 8
Задача 2. С использованием алгоритмов Краскала и Прима построить кратчайший остов для графа
Рис. 9
Решение Кратчайший остов для данного графа имеет следующий вид:
В таблицах приводится последовательность выбора ребер остовного дерева с использованием алгоритмов Краскала и Прима.
Алгоритм Краскала
Шаг |
Ребро |
Вес |
1 |
x6,x7 |
3 |
2 |
x1,x2 |
5 |
3 |
x3,x4 |
7 |
4 |
x1,x3 |
8 |
5 |
x3,x6 |
9 |
6 |
х11,x13 |
10 |
7 |
x6,x9 |
11 |
8 |
x6,x10 |
12 |
9 |
x3,x11 |
13 |
10 |
x8,x9 |
14 |
11 |
x12,x13 |
15 |
12 |
x4,x5 |
18 |