Задача о максимальном потоке

В данном параграфе рассматривается задача определения максимального потока между двумя выделенными узлами связной сети. Каждая дуга обладает пропускными способностями в обоих направлениях, которые определяют максимальное количество потока, проходящего по данной дуге. Ориентированная (односторонняя) дуга соответствует нулевой пропускной способности.

Задачу о максимальном потоке можно свести с к задаче линейного программирования.

Пусть Задача о максимальном потоке - student2.ru - поток из источника 1 в сток Задача о максимальном потоке - student2.ru . Обозначив поток в дуге Задача о максимальном потоке - student2.ru через Задача о максимальном потоке - student2.ru получим следующую модель.

Задача о максимальном потоке - student2.ru , (9.5)

Задача о максимальном потоке - student2.ru , (9.6)

Задача о максимальном потоке - student2.ru , (9.7)

Задача о максимальном потоке - student2.ru , (9.8)

Задача о максимальном потоке - student2.ru , (9.9)

где Задача о максимальном потоке - student2.ru пропускная способность дуги Задача о максимальном потоке - student2.ru .

Пропускные способности Задача о максимальном потоке - student2.ru сети можно представиться в матричной форме. Для определения максимального потока из источника Задача о максимальном потоке - student2.ru в сток Задача о максимальном потоке - student2.ru следующий алгоритм.

Шаг 1. По заранее заданной сети выписывается матрица пропускных способностей между всеми узлами сети. Если дуга, соединяющая узлы, отсутствует, то в матрице пропускных способностей принимается Задача о максимальном потоке - student2.ru .

Шаг 2. Определяется цепь, соединяющая Задача о максимальном потоке - student2.ru с Задача о максимальном потоке - student2.ru , по которой поток принимает положительное значение в направлении Задача о максимальном потоке - student2.ru . Если такой цепи не существует, перейти к шагу 3.

Шаг 3. Пусть Задача о максимальном потоке - student2.ru - способности дуг цепи Задача о максимальном потоке - student2.ru в направлении Задача о максимальном потоке - student2.ru и Задача о максимальном потоке - student2.ru .

Матрицу пропускных способностей Задача о максимальном потоке - student2.ru изменить следующим образом:

а) вычесть Задача о максимальном потоке - student2.ru из всех Задача о максимальном потоке - student2.ru ;

б) прибавить Задача о максимальном потоке - student2.ru ко всем Задача о максимальном потоке - student2.ru .

Заменить текущую матрицу Задача о максимальном потоке - student2.ru на вновь полученную и перейти к шагу 2.

Операция (а) дает возможность использовать остатки пропускных способностей дуг выбранной цепи в направлении Задача о максимальном потоке - student2.ru . Операция (б) восстанавливает исходные пропускные способности сети, поскольку уменьшение пропускной способности дуг в одном направлении можно рассматривать как увеличение ее пропускной способности в противоположном направлении.

Шаг 4. Найти максимальный поток в сети. Пусть Задача о максимальном потоке - student2.ru - исходная матрица пропускных способностей, и пусть Задача о максимальном потоке - student2.ru - последняя матрица, получившаяся в результате модификации исходной матрицы (шаги 1 и 2). Оптимальный поток Задача о максимальном потоке - student2.ru в дугах задается как

Задача о максимальном потоке - student2.ru .

Максимальный поток из Задача о максимальном потоке - student2.ru в Задача о максимальном потоке - student2.ru равен Задача о максимальном потоке - student2.ru .

Заметим, что Задача о максимальном потоке - student2.ru есть сумма всех Задача о максимальном потоке - student2.ru , определенных на шаге 2. Таким образом можно объяснить, почему используются положительная разность элементов матриц Задача о максимальном потоке - student2.ru и Задача о максимальном потоке - student2.ru для определения результирующего потока в направлении Задача о максимальном потоке - student2.ru .

Пример.Рассмотрим сеть, с заданными пропускными способностями.

Задача о максимальном потоке - student2.ru

Соответствующая матрица пропускных способностей имеет вид:

    s t
s 10 -
  5 + 5 -
С =
 
  9 + 13 -
t 5 +

В качестве исходной цепи можно выбрать Задача о максимальном потоке - student2.ru . Таким образом, элементы Задача о максимальном потоке - student2.ru помечаются знаком (-), а элементы Задача о максимальном потоке - student2.ru - знаком (+). Для данной цепи максимальный поток определяется как

Задача о максимальном потоке - student2.ru .

Заметим, что можно выбирать различные исходные цепи. Очевидно, что хороший выбор (вначале и на каждой итерации) должен давать наибольшее значение Задача о максимальном потоке - student2.ru .

Матрица С корректируется путем вычитания Задача о максимальном потоке - student2.ru из всех элементов, помеченных знаком (-), и сложения со всеми элементами, помеченными знаком (+). В результате матрица имеет вид:

    s t
s 14 -
 
С = 15+ 10 -
  12+ 10 -
 
t 3 +

В качестве следующей цепи можно принять Задача о максимальном потоке - student2.ru . Тогда Задача о максимальном потоке - student2.ru . Следующая матрица:

    s t
s 5 -
  10 + 9 -
С =
  7 + 7 -
  8 + 8 -
t 10 +

Для этой матрицы Задача о максимальном потоке - student2.ru , Задача о максимальном потоке - student2.ru . Приходим к матрице

    s t
s 4 -
 
С =
 
  3 + 3 -
t 15 +

Выбираем цепь Задача о максимальном потоке - student2.ru . Тогда Задача о максимальном потоке - student2.ru . Приводим матрицу:

    s t
s 4 -
 
С =
  22 + 2 -
 
t 4 +

Следующая цепь Задача о максимальном потоке - student2.ru , Задача о максимальном потоке - student2.ru . Матрица:

    s t
s
 
С* =
 
 
t

Из последней матрицы следует, что между Задача о максимальном потоке - student2.ru и Задача о максимальном потоке - student2.ru нельзя построить цепей с положительным потоком, поскольку все элементы в столбце Задача о максимальном потоке - student2.ru равны нулю. Таким образом, это заключительная матрица Задача о максимальном потоке - student2.ru .

Оптимальный поток

    s t
s
 
X =
 
 
t

Из матрицы видно, что Задача о максимальном потоке - student2.ru . Сумма Задача о максимальном потоке - student2.ru также дает максимальный поток. Графический решение представимо на рисунке

Задача о максимальном потоке - student2.ru

УПРАЖНЕНИЯ

Задача 1. ОАО ГАЗПРОМ владеет сетью газопроводов, через которые нефть перекачивается от месторождения до газохранилищ европейских стран. Часть этой сети представлена на рисунке. Пропускная способность газопроводов показана в тыс. кубометров/сек.

Задача о максимальном потоке - student2.ru

Если ГАЗПРОМ хочет поставить газ в Германию (хранилище № 7) и полностью использовать пропускную способность системы, то сколько времени займет поставка 10 тыс. кубометров газа? Если на линии 2-3 случится авария и она будет закрыта, каким будет максимальный поток для системы (тыс. кубометров/сек.)

Задача 2. Система автодорог «Север-Юг», проходящих через Псковскую область, может обеспечить пропускные способности, показанные на рисунке (тыс. автомашин в час). Сколько машин в час должно проехать по дороге 5-6, чтобы обеспечить максимальный поток.

Задача о максимальном потоке - student2.ru

Наши рекомендации