
- •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.
Несколько источников и стоков
Предположим, что множество узлов сети разбито на три множества: S– множество источников, Т – множество стоков,R– множество промежуточных узлов. Расширим сеть, добавив два узлаS*иТ*и все дуги(S*, S)и(Т, Т*). Доопределим значения пропускных способностей на вновь введенных дугах:
r*(S*, xi) = ¥, xi Î S;
r*(xj, T*) = ¥, xj Î T.
Величины пропускных способностей остальных дуг остаются прежними, что и до расширения сети. Таким путем задача о максимальном потоке из множества источников Sв множество стоков Т сводится к изложенной задаче о максимальном потоке в расширенной сети с одним источником и одним стоком.
3.2. Решение задачи о максимальном потоке в табличной форме
Метод расстановки пометок на графе имеет большую наглядность для уяснения алгоритма. Однако при практических расчетах, особенно при постановке задачи для расширения на ЦВМ, часто более удобным является решение задачи в табличной форме. Рассмотрим решение задачи для случая определения максимального потока в многоуровневом графе [5]. Решение приводится на основе использования многомерных матриц (пп. 1.4, 1.5). Условие задачи зададим с помощью многомерной матрицы
,
где
- номера начального и конечного уровней;
- номера начальной и конечной вершин
графа;
- пропускные способности дуг из вершиныj+(уровня
)
в вершину
(уровня
).
Общий шаг алгоритма.Общий шаг состоит из трех действий.
1. Помечаем столбец, соответствующий
вершине-источнику
,
знаком *. Затем отыскиваем в строке
все положительные
.
Содержащие их столбцы помечаем сверху
числом, соответствующим номеру источника
.
Далее переходим к просмотру тех строк,
которые имеют те же номера, что и
отмеченные столбцы. В каждой строке
отыскиваем все положительные
,
расположенные в непомеченных столбцах,
и отмечаем эти столбцы номером
просматриваемой строки
.
Процесс оканчивается: а) когда помечен
сток; б) когда все строки просмотрены и
нельзя отметить новые столбцы. В случае
«а» новый путь из источника в сток
находим, начиная от стока по отметкам
столбцов. Последняя вершина пути – сток
.
По отметке, например
над столбцом
,находим
предшествующую
вершину
.
Число
отметим знаком минус
,
а число
знаком плюс
.
Пусть столбец
был помечен номером
.
Двигаемся от числа
по столбцу до строки
.
Продолжаем этот процесс до тех пор, пока
не придем к источнику *.
В случае «б» алгоритм поиска нового пути закончен.
2. Определяем величину, на которую можно
увеличить поток на найденном пути, e
= min
{}.
3. Вычисляем новые пропускные способности
дуг. Для этого из всех
вычитаемe,
а ко всем
прибавляемe.
Получаем новую матрицу пропускных
способностей. Затем стираем в таблице
все пометки и возвращаемся к действию
1.
Для определения полученного максимального потока вычитаем из всех элементов первоначальной матрицы R(2,2)соответствующие элементы матрицы, полученной на последнем шаге. Положительные значения найденных разностей дают величиныпотоков по дугам многомерного графа.
Данное обобщение метода Форда-Фалкерсона на многомерный случай позволяет использовать алгоритм для решения многих задач, сводящихся к потоковым.