Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
39
Добавлен:
27.02.2016
Размер:
501.06 Кб
Скачать

Для исследования распределения потока по транспортной сети удобно ввести понятие разреза транспортной сети. Пусть A X — некоторое множество удовлетворяющее условию

x0 / A, z A.

(3.4)

Через EAи EA+ обозначают соответственно множество дуг, заходящих в A и выходящих из A. Полную совокупность дуг EA = EAEA+ называют разрезом транспортной сети. Поскольку каждая частица вещества, двигающаяся от x0 к z обязательно пройдет по какой либо дуге разреза, то общий поток через разрез будет равен значению потока транспортной сети; для любого разреза A имеет место соотношение

XX

ϕz =

ϕ(e) − ϕ(e).

(3.5)

e EAe EF+

Пропускная способность разреза A — это сумма пропускных способностей дуг заходящих в этот разрез:

X

c(A) = c(e). (3.6)

e EA

Поскольку для любой дуги имеет место ϕ(e) 6 c(e), то из (3.5) и (3.6) вытекает:

ϕz 6 c(A).

(3.7)

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

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

Назад Первая Предыдущая Следующая Последняя Перейти Предметный указатель

чение потока который может пропустить транспортная сеть, а также распределение этого потока по дугам транспортной сети.

Лемма. Если для некоторого значения потока транспортной сети ϕz и некоторого разреза V имеет место ϕz = c(V ), то поток ϕz является наибольшим, а разрез V имеет наименьшую пропускную способность.

Однако данная лемма не дает ещё практически пригодного способа определения наибольшего потока. Для формулировки такого метода введем несколько вспомогательных определений.

Дугу e назовем насыщенной когда ϕ(e) = c(e).

Поток ϕ0z называют полным, если каждый путь из x0 в z содержит по крайней мере одну насыщенную дугу.

Полный поток для данной транспортной сети не является строго определенной величиной и зависит от направления потоков в отдельных дугах.

На рис. 3.10,а и в даны два различных распределения потока по одной и той же транспортной сети. Насыщенные дуги показаны жирными линиями. В обоих случаях потоки являются полными хотя значения их различны.

Алгоритм для нахождения наибольшего потока, предложенный Фордом и Фалкерсоном, состоит в постепенном увеличении потока ϕz до тех пор пока он не станет наибольшим. При этом предполагается, что пропускные способности дуг c(e) представляют собой целые числа, так что потоки по дугам так же будут выражаться целыми числами. Нахождение наибольшего потока производится в два этапа.

Назад Первая Предыдущая Следующая Последняя Перейти Предметный указатель

Нахождение полного потока

Пусть ϕ(e) — некоторое распределение потока по дугам транспортной сети. Ищем путь µ из x0 в z, все дуги которого не насыщены и полагаем:

 

ϕ(e),

при e / µ

 

ϕ0(e) =

ϕ(e) + 1,

при e µ

(3.8)

При этом поток ϕz изменится до величины ϕ0z = ϕz + 1 > ϕz. Таким путем производим постепенное увеличение ϕz до тех пор пока он не станет полным.

Пример.

Найдём полный поток на транспортной сети (рис. 3.10,а). Последовательно рассматриваем следующие пути, отмечая насыщенные дуги жирными линиями: 1

µ1 = (x0, x1, x3, z), ϕ(µ1) = 1 — насыщенная дуга (x0, x1);

µ2 = (x0, x2, x4, x3, z), ϕ(µ2) = 1 — насыщаются дуги (x4, x3) и (x3, z);

µ3 = (x0, x2, x4, z) для насыщения этого пути можно взять ϕ(µ3) = 2 — насыщается дуга (x4, xz). Легко видеть, что больше нет путей из x0 в z, содержащих ненасыщенные дуги. Следовательно, пол-

ный поток ϕz = ϕ(µ1) + ϕ(µ2) + ϕ(µ3) = 4.

Нахождение наибольшего потока

Пусть ϕz — полный поток, ϕ(x, y) — поток в дуге e = (x, y), направленный от вершины x к вершине y. Процесс увеличения ϕz состоит в разметке вершин графа индексами, указывающими путь, на котором возможно увеличение потока. Предварительно все вершины графа должны быть пронумерованы.

Назад Первая Предыдущая Следующая Последняя Перейти Предметный указатель

Помечаем x0 индексом 0. Если xi — уже помеченная вершина то помечаем индексом +i все непомеченные вершины, в которые идут ненасыщенные дуги из xi, т.e. вершины y, для которых

(xi, y) E и ϕ(xi, y) < c(xi, y),

и индексом −i все непомеченные вершины из которых идут дуги в вершину y, т.e. вершины y, для

которых

(y, xi) E и ϕ(y, xi) > 0.

Если в результате этого процесса окажется помеченной вершина z, то между вершинами x0 и z найдется цепь µ, все вершины которой размечены и (с точностью до знака) помечены номерами предыдущих вершин. Поток во всех ребрах этой цепи увеличиваем на единицу в направлении от x0 к z, т.e. полагаем:

 

ϕ(e),

при e / µ

 

ϕ0(e) =

ϕ(e) + 1,

при e µ

(3.9)

и при движении от x0 к z дуга e проходит в направлении ее ориентации;

ϕ0(e) = ϕ(e)−1, если e µ и при движении от x0 к z дуга e проходит в направлении противоположном

ееориентации.

Врезультате этого процесса получаем новый поток по сети ϕz0(e) = ϕ(e) + 1, т.e. поток возрастает. Далее этот процесс повторяем.

Если некоторый поток ϕ0z невозможно увеличить описанным методом, т.e. если окажется невозможным пометить вершину z, то ϕ0z является наибольшим потоком сети. Действительно пусть V — множество непомеченных вершин, включающих, конечно и вершину z. Следовательно V есть разрез, причём

Назад Первая Предыдущая Следующая Последняя Перейти Предметный указатель

такой, который не имеет выходящих дуг (в противном случае некоторые вершины этого разреза были бы помечены отрицательными индексами), а все входящие дуги насыщены:

 

EV= EV ; EV+ =

 

 

При этом:

ϕ(e) = c(e) для e EV

 

 

eXV

XV

 

 

XV

ϕ (e) −

 

− 0 = c (V ) .

ϕz0 =

ϕ (e) =

c (e)

e E

 

E+

e E

 

 

(3.10)

(3.11)

Согласно лемме ϕ0z есть наибольший поток, а V — разрез с наименьшей пропускной способностью.

Пример.

Разметка индексов вершины транспортной сети рис. 3.10,а. Вершина z оказалась помеченной индексом +4. Убывающая последовательность индексов +4, −3, +2, +0 определяет цепь µ = (x0, x2, x3, x4, z), поток в которой от x0 к z следует увеличить на 1. Это приводит к распределению потока, показанному на рис. 3.10,б. Повторяя процесс разметки индексов на этом рисунке, находим цепь µ = (x0, x2, x1, x3, x4, z), поток в которой также должен быть увеличен на 1. Результирующее распределение потока показано на рис. 3.10,в. При разметке индексов на этом рисунке остаются непомеченными вершины x4 и z.

Следовательно полученное распределение обеспечивает наибольший поток ϕ0z в рассмотренной транспортной сети, а множество V = {x4, z} определяет разрез с наименьшей пропускной способностью. Определив пропускную способность разреза V , найдем значение потока

ϕ0z = c(x2, x4) + c(x3, x4) + c(x3, z) = 3 + 1 + 2 = 6.

Увеличить наибольший поток транспортной сети можно путем повышения пропускной способности какой-либо из дуг, заходящих в разрез V .

Назад Первая Предыдущая Следующая Последняя Перейти Предметный указатель

Соседние файлы в папке Конспект лекций