
- •Содержание
- •Раздел 1. Рабочая программа дисциплины
- •График учебного процесса
- •Самостоятельная работа
- •Раздел 2. Краткое содержание основных тем
- •1. Линейное и дискретное программирование
- •1.1. Модели линейного программирования
- •Геометрический метод решения задачи линейного программирования
- •Симплексный метод решения злп
- •Двойственные задачи
- •1. 2. Модели целочисленного линейного программирования
- •Методы отсечения
- •Метод ветвей и границ
- •1. 3. Транспортная задача Классическая транспортная задача
- •Симплексный метод решения задач транспортного типа (метод потенциалов)
- •2. Модели динамического программирования Динамическое программирование
- •3. Элементы теории игр Платежная матрица
- •Игры двух участников с нулевой суммой
- •Решение игр двух участников с нулевой суммой в смешанных стратегиях
- •Игры двух участников с ненулевой суммой
- •4. Элементы теории массового обслуживания Марковские процессы
- •Уравнения Колмогорова. Предельные вероятности состояний
- •Смо с отказами
- •Смо с ожиданием (очередью)
- •5. Сети Эйлеровы и гамильтоновы графы. Деревья
- •Минимальное порождающее дерево
- •Кратчайший маршрут
- •Максимальный поток
- •Сетевой график. Критический путь
- •6. Модель Леонтьева многоотраслевой экономики (дополнительно)
- •Раздел 3. Рекомендуемая литература
- •Раздел 4. Типовые расчеты
- •Раздел 5. Методические указания по выполнению типовых расчетов
- •1. В целях единообразного оформления типовых расчетов в орагс принят следующий титульный лист:
- •2. Вместо а подставьте третью справа цифру в номере зачетной книжки. Если по плану один типовой расчет, то произвольно выбираются 8 задач из предложенных 14.
- •Раздел 6. Практические и лабораторные работы
- •Раздел 7. Контроль знаний студентов
- •Отметка "незачтено"
5. Сети Эйлеровы и гамильтоновы графы. Деревья
Фигура, состоящая из точек (вершин) и соединяющих их линий (ребер), называется графом).
Путем, соединяющим вершины А и В графа, называется упорядоченная совокупность его ребер, обладающая следующим свойством: начало каждого ребра, начиная со второго, совпадает с концом предыдущего ребра, при этом начало первого ребра совпадает с вершиной А, а конец последнего — с вершиной. Вершины А и В называются связанными, если существует путь, соединяющий эти вершины. Граф называется связным, если связаны любые две его вершины.
Вершина графа называется четной, если число всех выходящих из нее (или, что то же, входящих в нее) ребер четно, и нечетной, если число всех выходящих из нее (или, что то же, входящих в нее) ребер нечетно. Вершина А на рисунке 36 четна (из нее выходит четыре ребра), а вершина В нечетна (из нее выходит три ребра).
Наконец, последнее: граф называется конечным, если конечны и число его ребер, и число его вершин.
Всюду в дальнейшем мы будем рассматривать только конечные и связные графы.
Эйлер установил, что граф, в котором существует путь, перемещаясь по которому можно пройти все его ребра, проходя по каждому ребру графа ровно один раз, должен иметь либо только четные вершины, либо ровно две нечетных (все остальные вершины графа должны быть четными). Во всех других случаях обойти граф целиком возможно, лишь проходя по некоторым ребрам не один раз.
Более того, если в графе ровно две нечетные вершины, то такой путь должен непременно начинаться в одной из этих вершин, а заканчиваться в другой. Если же все вершины графа четны, то начало и конец пути непременно должны совпадать, иными словами, искомый путь должен быть замкнутым.
Замечание. Если указанные выше условия выполнены, то задача имеет, как правило, не одно решение — обходов графа может быть довольно много, но число пройденных при этом ребер будет всегда одним и тем же.
Гамильтон рассматривал задачу, в которой нужно было, проходя по ребрам додекаэдра, посетить все его вершины.
Ясно, что минимальное число вершин додекаэдра, которые нужно посетить, проходя по его ребрам с тем, чтобы пройти все, не меньше числа его вершин.
Гамильтон показал, что для додекаэдра эти числа равны. Однако описать все множество графов, допускающих существование путей, перемещаясь по которым можно обойти все узлы, побывав в каждом ровно один раз, не удалось до сих пор. Нет и эффективного алгоритма.
Конечно, задача может быть решена перебором, так как обычно речь идет о графах с конечным числом вершин, но объем вычислений в подавляющем большинстве случаев слишком велик.
С этой задачей тесно связана проблема моряка, часто называемая также задачей о странствующем торговце (коммивояжере), который должен посетить определенный набор городов и вернуться домой как можно скорее.
Отдавая дань уважения Эйлеру и Гамильтону, всякий граф, у которого есть замкнутый путь, проходящий через каждое его ребро в точности по одному разу, стали называть эйлеровым, а всякий граф, у которого есть замкнутый путь, проходящий через каждую его вершину в точности один раз, гамильтоновым.
Важный класс графов составляют графы, называемые деревьями. Дерево — это связный граф, который вовсе не имеет замкнутых путей.
Этот граф обладает следующим оптимальным свойством: среди всех связных графов с данным числом вершин дерево имеет наименьшее число ребер, а именно:
число V вершин дерева и число Е его ребер различаются на единицу
Справедливо и обратное утверждение:
V=E+1,
если число вершин связного графа на единицу больше числа его ребер, то этот граф является деревом.
Если граф — конечный и связный, то легко построить дерево (и, как правило, не одно), множество вершин которого совпадало бы с множеством всех вершин заданного графа, а все ребра дерева одновременно были бы ребрами этого графа.
Это можно сделать, например, так. Пометим произвольную вершину графа, выберем какое-нибудь исходящее из нее ребро графа и пометим вершину, в которую это выбранное ребро входит. Если пара помеченных вершин не исчерпывает множества всех вершин графа, выбираем ребро графа, выходящее из одной из двух этих вершин в какую-нибудь третью непомеченную вершину этого графа, и помечаем ее. В случае если полученная тройка помеченных вершин не исчерпывает множества всех вершин графа, выбираем ребро графа, выходящее из одной из трех этих вершин в какую-нибудь четвертую непомеченную вершину этого графа, и помечаем ее. Продолжая описанную процедуру далее, мы неизбежно придем к ситуации, когда все вершины заданного графа окажутся помеченными. Напомним, что число вершин графа конечно, и если оно равно п, то потребуется ровно n-1 шаг, на каждом из которых (кроме первого) помечается ровно одна новая (непомеченная) вершина графа. Множество выбранных ребер и помеченных вершин будет искомым деревом.
Всякое такое дерево называют деревом, порождающим граф, или порождающим деревом графа, или остовом графа, или его стягивающим остовом.
Ясно,
что порождающих деревьев у конечного
связного графа может быть много. В
частности, если граф — полный
(любые две вершины
соединены ребром), то число порождающих
деревьев равно
,
где n
— число его вершин.
Введем одно полезное понятие: множество всех ребер, выходящих из вершины графа, будем называть звездой этой вершины.
Всюду в дальнейшем будем считать, что заданный граф связен, конечен и не имеет петель (начало ни одного ребра графа не совпадает с его концом).
Часто приходится рассматривать задачи, в которых каждому ребру заданного графа приписано некоторое положительное (неотрицательное) число (его вес). Обычно граф, нагруженный подобным образом, называют сетью, его вершины узлами, а ребра дугами.
В зависимости от приложений описанная числовая нагрузка дуги графа может иметь разный смысл и обозначать длину, стоимость, пропускную способность, временную протяженность и т. д.
Рассмотрим несколько характерных задач.