
- •2. Основные определения теории графов
- •2.1.1. Задание графа множествами вершин и линий
- •2.1.2. Задание графа с помощью отображения
- •2.1.3. Задание графа с помощью обратного отображения
- •2.1.4. Матричное представление графа
- •2.2. Достижимость и обратная достижимость вершин графа
- •2.2.1. Матрица достижимостей и матрица обратных достижимостей
- •2.2.2. Определение матриц достижимостей и обратных достижимостей с помощью прямых и обратных отображений
- •2.2.3. Определение матриц ограниченных достижимостей
- •2.2.4. Определение матриц достижимостей и обратных
- •2.3. Разбиение графа на подграфы
- •2.3.1. Определение существенных вершин
- •2.3.2. Определение сильных компонент графа
- •2.3.3. Определение сильных компонент графа
- •2.3.4. Определение оптимальной базы графа
- •2.3.5. Определение оптимальной антибазы графа
- •3. Алгоритмы оптимизации на графовых моделях
- •3.1. Решение задачи о максимальном потоке методом расстановки пометок на графе (алгоритм Форда-Фалкерсона)
- •Несколько источников и стоков
- •3.2. Решение задачи о максимальном потоке в табличной форме
- •3.3. Решение задачи о максимальном потоке в графе
- •3.4. Решение задачи о кратчайшем пути в транспортной сети непосредственно по графу
- •3.5. Решение задач о кратчайших путях в табличной форме
- •3.5.1. Определение кратчайшего пути между двумя
- •3.5.2. Определение длин кратчайших путей между
- •3.5.3. Решение задачи о кратчайшем пути в графе
- •3.6. Кратчайший остов графа
- •3.6.1. Понятие дерева
- •3.6.2. Определение числа остовных деревьев графа
- •3.6.3. Алгоритм построения всех остовных деревьев графа
- •3.6.4. Определение кратчайшего остова неориентированного
- •3.6.5. Решение задачи о кратчайшем пути в графе
- •3.7. Задача о назначениях
- •3.7.1. Матричная формулировка задачи
- •3.7.3. Решение задачи о назначениях
- •3.7.4. Модификации задачи о назначениях
- •3.8. Задача о наименьшем покрытии
- •3.8.1. Постановка задачи
- •3.8.2. Алгоритм решения задачи
- •3.8.3 Решение задачи о наименьшем покрытии
- •Библиографический список
- •Оглавление
- •Редактор м.Е. Цветкова Корректор н.А. Орлова
- •390005, Рязань, ул. Гагарина, 59/1.
2.3.4. Определение оптимальной базы графа
База В графа есть множество вершин, из которого достижима любая вершина графа и которое является минимальным в том смысле, что не существует собственного подмножества в В, обладающего таким свойством достижимости. Данное определение может быть представлено в виде трех условий.
1. Каждая вершина графа достижима хотя бы из одной вершины множества В.
2. Среди вершин базы В нет вершины, которая достижима из другой вершины множества В.
3. Множество вершин В должно быть наименьшим.
Рассмотрим алгоритм нахождения базы графа.
1. Для графа строится его конденсация (п.2.3.2).
2. Среди вершин Yiграфа конденсации находим такие, в которые не заходит ни одна дуга (Yiявляются сильными компонентами исходного графа). Пусть такими вершинами будутYl, Ym.
3. Для построения базы нужно из каждой выбранной на 2-м шаге сильной компоненты (Yl = {X1l, X2l,…, XNl}, Ym = {X1m, X2m,…, XNm})взять по одной вершине(xil, xjm). Эти вершины и будут определять базу графа. Чтобы определить оптимальную базу, нужно знать длину дуг. Оптимальная база имеет минимальное суммарное расстояние до всех вершин графа. Алгоритм определения длин кратчайших путей между всеми вершинами графа одновременно будет дан в п.3.4.2.
В данном пункте при определении базы мы исходили из неограниченных достижимых множеств. В случае, когда достижимость ограничена путями единичной длины (просто дугами или ребрами), ограниченные базы называют наименьшими доминирующими множествами. Алгоритм определения наименьшего доминирующего множества приведен в п.3.11.
2.3.5. Определение оптимальной антибазы графа
Антибазой графа В-1 является такое множество вершин графа, которое удовлетворяет следующим условиям.
1. Из каждой вершины графа можно достичь хотя бы одной вершины множества В-1.
2. Среди множества вершин В-1нет вершины, которая достижима из другой вершины этого множестваВ-1.
3. Множество вершин В-1должно быть минимальным.
Рассмотрим алгоритм нахождения антибазы графа.
1. Для графа строится его конденсация (п.2.3.2).
2. Среди вершин Yiграфа конденсации находим такие, из которых не выходит ни одна дуга. Пусть такими вершинами будутYk, Yf.
3. Для построения антибазы нужно из каждой выбранной на 2-м шаге сильной компоненты (Yk = {x1k, x2k,…, xNk}, Yf = {x1k, x2k,…, xNk})взять по одной вершине(xik, xjk).Эти вершины будут определять антибазу графа. Оптимальная антибаза имеет минимальное суммарное расстояние от всех вершин графа (см. п.3.4.2).
3. Алгоритмы оптимизации на графовых моделях
В данной главе рассматриваются графовые модели [4,5] для оптимизации транспортных сетей и потоков, решения задач календарного планирования, задач о назначениях и других задач дискретной оптимизации. Изложение алгоритмов оптимизации ориентировано на реализацию с помощью цифровых вычислительных машин.
3.1. Решение задачи о максимальном потоке методом расстановки пометок на графе (алгоритм Форда-Фалкерсона)
Граф, элементам которого поставлены в соответствие некоторые параметры, называется сетью. В зависимости от приложений различают транспортные, электрические, информационные и т.п. сети.
Поскольку в теории графов рассматриваются общие методы исследования графов и сетей, независимо от их природы, то для характеристики сетей вводятся некоторые общие понятия. Рассмотрим их, проводя для наглядности аналогию с транспортной сетью.
Каждая вершина Iхарактеризуется интенсивностьюd(i). Те вершины, для которыхD(i) > 0, называются источниками, вершины, для которыхD(i) < 0– стоками, остальные – нейтральными. Так, для транспортной сети источниками являются пункты-поставщики, стоками – пункты-получатели, нейтральными – пункты, где отсутствует как производство, так и потребление данного продукта.
Для характеристики дуги
вводится неотрицательное целое числоrij,
называемое пропускной способностью
дуги. Применительно к транспортным
сетям пропускная способность дуги
означает максимальное количество
вещества, которое соответствующая
коммуникация может пропустить за единицу
времени.
Если в сети с одним источником Sи одним стокомtзадана функция пропускной способности{rij}, то в ней может быть задана также функция, называемая потоком.
Потоком в сети называется функция,
сопоставляющая с каждой дугой
целое
числоdijи обладающая свойствами:
0 £ dij £ rij, {xi, xj} Î X; (3.1)
(3.2)
(3.3)
Для транспортной сети величина dijхарактеризует интенсивность потока по
дуге.
Эта величина означает количество
вещества, проходящего через дугу в
единицу времени.
Таким образом, потоком в сети или просто потоком называется совокупность {aij}по всем дугам сети.
Условия (3.1) означают, что поток по каждой дуге неотрицателен и не превышает ее пропускной способности; условия (3.2) показывают, что количество вещества, протекающего в любую нейтральную вершину, равно количеству вещества, вытекающего из нее. Следовательно, общее количество вещества, вытекающего из источника, совпадает с общим количеством вещества, притекающего в сток, что и отражается в условии (3.3).
Линейная форма Vв (3.3) есть величина потока в сети. Одна из основных задач на сетях состоит в определении величины наибольшего потока, допустимого в сети при заданных ограничениях на интенсивности потоков дуг. Математически она формулируется так: найти значения переменныхdij, максимизирующие линейную форму (3.3) при ограничениях (3.1)-(3.2).
Рассмотрим решение поставленной задачи методом расстановки пометок непосредственно на графе (алгоритм Форда-Фалкерсона). Решение проводится путем многократного повторения двух шагов алгоритма.
Первый шаг. Пометим вершину-истокSметкой(0,¥)и отнесем вершинуSк множествуR,
а остальные вершины графа к множеству
.Далее расстановка меток осуществляется
последовательно. Рассмотрим правило
формирования меток. Выберем любую
помеченную вершинуi(первоначально это единственная вершинаS)
(в дальнейшем для упрощения записи
формул, относящихся к одному графу,
вместо «вершинаxi»
будем писать просто номер вершины «i».
Отмеченные вершины относятся к множествуR,
непомеченные к множеству
.
Рассмотрим все непомеченные вершиныj,
связанные дугами с вершинойi.
Вершинуjотносят к множествуR,
если выполняется одно из условий:
i Î R и dij < rij; (3.4)
i Î R и dji > 0. (3.5)
Тем вершинам j, для которых выполняется условие (3.4), припишем метку(i+, ej), гдеej = min{ei, rij – dij}. Тем вершинамj, для которых выполняется условие (3.5), припишем метку(i-, ej),гдеej = min{ei, dji}.
Изложенное правило формирования меток для наглядности представим графически с помощью рис. 3.1 и 3.2 соответственно для случаев (3.4) и (3.5).
(K,ei)
rij>dij
(,ej)
i Î R j
ej=min{ ei , rij-dij }
Рис.3.1
(K,ei)
dji>0
(,ej)
i Î R j
ej=min{ ei , dji }
Рис.3.2
После помечивания вершины j, ближайшей кS, аналогично производим помечивание других вершин. Эту процедуру помечивания повторяем до тех пор, пока не пометим вершинуt, или до тех пор, пока нельзя будет сделать новых пометок.
В первом случае (помечена вершина t) перейдем ко второму шагу, во втором случае исходный поток максимален.
Второй шаг. Вершинаtимеет пометку(j+, et)или(j-, et). Если пометка вида(j+, et), заменяемdjtна(djt + et), если пометка вида(j-, et), то заменяемdtjна(dtj - et).Затем в любом случае переходим к вершинеj. В отношении любой вершиныjпоступаем аналогично: если ее пометка вида(i+, ej), то заменяемdijна(djt + et), если ее пометка вида(j-, ej), то заменяемdjiна(dji - et)и переходим к вершинеi. Так поступаем, пока не достигнем источникаS. После этого стираем все пометки и вновь переходим к первому шагу.
Таким образом, процесс расстановки пометок представляет собой систематический поиск цепи из Sвt, на которой поток может быть увеличен. Если в результате первого шага сток оказался непомеченным, то вдоль найденной цепи можно увеличить поток. Если, с другой стороны, первый шаг закончился, а сток остался непомеченным, то достигнутый поток максимален. Изложенный алгоритм может использоваться для решения задачи и в более общем случае.