Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Тексты лекций / Текст лекции 14

.pdf
Скачиваний:
0
Добавлен:
12.01.2024
Размер:
583.44 Кб
Скачать
Рис. 3.83.

Тема 14. «Задача о максимальном потоке в сети»

Олейник Т.А., 2020

§ 3.10. Задача о максимальном потоке в сети

Сеть. Поток в сети. Величина потока. Максимальный поток. Дополняющая цепь. Разрез в сети. Минимальный разрез. Алгоритм Форда - Фалкерсона.

Базовые понятия и утверждения

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

- пропускной способностью дуги .

Для удобства изложения введем следующие обозначения. Через +обозначим множество дуг, для которых вершина является началом, а через − обозначим множество дуг, для которых вершина является концом.

Определение. Потоком в сети = ( ,,) называется функция : → 0,∞), удовле-

творяющая условиям:

 

 

 

 

 

1) ( ) ≤ ( );

 

 

 

 

 

2) ( −) = ( +) для всех вершин

,

≠ ,

≠ , где

( −) = ∑

( ) и

( +) = ∑

( ).

 

 

 

 

 

Значение ( −) можно интерпретировать как поток, втекающий в вершину , а значение ( +) - как поток, вытекающий из вершины . Тогда второе условие можно переформулировать так: поток, втекающий в любую вершину, за исключением источника и стока, должен быть равен потоку, вытекающему из этой вершины.

Условие 1) называется условиемограничения по пропускной способности, а условие 2) - условием сохранения потока в вершинах.

a

7,3

d

4,2

 

Пример 1. Нарис. 3.83 дан примерсети ипотока вней.

 

 

 

 

Около каждой дуги указаны через запятую ее пропуск-

6,6

3,3

8,1

t

 

s 7,1

5,5

q

12,7

 

ная способность ( ) и текущий по ней поток ( ).

2,1

b

 

 

Определение.Положим‖ ‖ = ( +).Число‖ ‖называ-

5,2

6,1

 

 

 

cется величиной потока.

Определение. Поток называется максимальным, если для любого потока справедливо неравенство ‖ ‖ ≤ ‖ ‖.

Задача омаксимальномпотоке формулируется следующим образом: в заданной сети

найти поток максимальной величины.

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

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

1

Тема 14. «Задача о максимальном потоке в сети» Олейник Т.А., 2020

Поскольку цепи других видов нас при этом интересовать не будут, то далее в этом параграфе неориентированные простые цепи будем называть просто цепями.

Если в цепи ... дуга выходит из вершины и заходит в вершину, то она называется прямой дугой цепи. Если же дуга выходит из вершины и заходит

в вершину , то она называется обратной дугой цепи.

 

 

Пусть - поток в сети и - цепь из в . Для каждой

дуги цепи

будем

вычислять остаточную пропускнуюспособность ( )при данномпотоке последующему правилу: если дуга прямая, то ( ) = ( ) − ( ), а если обратная, то ( ) = ( ). В своюочередьостаточнуюпропускнуюспособность ( )цепи приданномпотоке будем

определять по формуле ( ) = { ( )}.

Определение. Цепь из в называется дополняющей для , если ( ) > 0. Пример 2. В сети, изображенной на рис. 3.83, цепь, включающая последовательно

вершины ,,,, , является дополняющей для потока, рассмотренного в примере 1. Одним из алгоритмов, позволяющих построить максимальный поток, является алго-

ритм Форда - Фалкерсона.

Алгоритм Форда - Фалкерсона. 0-й шаг. Пускаем по сети нулевой поток , т.е. по-

лагаем ( ) = 0 для всех дуг .

 

 

шаг. Пусть к началу шага в сети течет поток

. Для этого потока ищем

дополняющую цепь из в .

 

 

 

Если такой цепи нет, то - искомый максимальный поток.

В противном случае, если для потока

дополняющая цепь из в имеется, даем ей

имя и определяем на множестве функцию по следующему правилу:

 

 

( )+ ( ), если  ,    −  прямая дуга,

( ) =

 

( ) − ( ), если  ,   −  обратная дуга,

 

 

 

( ), если  .

 

Построенная таким образом функция

является потоком, и величина этого потока

определяется равенством

 

‖ ‖ = ‖

‖+ ( ).

Замечание. Возникает существенный вопрос: закончится ли работа алгоритма за конечное число шагов? Оказывается, хотя в подавляющем большинстве случаев алгоритм заканчивает свою работу за конечное число шагов, зацикливание возможно. Гарантировать построение максимального потока можно в том случае, если на каждом шаге производить увеличение потока вдоль кратчайших по числу дуг дополняющих цепей.

Доказательство алгоритма Форда - Фалкерсона приведено во второй части параграфа. Пример 3. Построим максимальный поток для сети, изображенной на рис. 3.84,а.

◄ Шаг 0. Для любой дуги положим ( ) = 0 (на рисунке этот поток отмечать не будем, более того, договоримся и далее нулевой поток на дугах не отмечать), ‖ ‖ = 0.

Шаг 1. : → → → - дополняющая цепь для потока (стрелки заменяют

имена дуг, под каждой стрелкой записана остаточная пропускная способность ( ) соот-

ветствующей дуги ), ( ) = { ( )} = 4, поток указан на рис. 3.84,б, ‖ ‖ = ‖ ‖+

( ) = 4.

Шаг 2. : → → → → - дополняющая цепь для потока , ( ) = 2, поток

указан на рис. 3.84,в, ‖ ‖ = ‖ ‖ + ( ) = 6.

2

Тема 14. «Задача о максимальном потоке в сети»

 

 

 

 

 

 

 

 

Олейник Т.А., 2020

Шаг 3. :

→ → → - дополняющая цепь для потока ,

( ) = 3, поток

указан на рис. 3.84,г, ‖ ‖ = ‖ ‖ + ( ) = 9.

 

 

 

 

 

 

 

 

 

Шаг 4. :

→ → → - дополняющая цепь для потока ,

( ) = 5, поток

указан на рис. 3.84,д, ‖ ‖ = ‖ ‖+ ( ) = 14.

 

 

 

 

 

 

 

 

 

Шаг 5. :

→ → → → → - дополняющая цепь для потока , ( ) = 2,

поток указан на рис. 3.84,е, ‖ ‖ = ‖ ‖ + ( ) = 16.

 

 

 

 

 

 

 

 

 

 

a

 

 

7

d

4

 

 

a

 

 

7,4

d

4,4

 

 

 

 

 

 

 

 

6,4

 

 

 

 

 

 

 

 

6

 

3

 

8

t

 

 

3

 

8

t

s

7

5

s

7

5

b

q

12

b

q

12

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

6

 

 

 

5

 

 

 

 

6

 

 

 

 

 

c

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

а

 

 

 

 

 

 

 

 

б

 

 

 

 

 

a

 

 

7,4

d

4,4

 

 

a

 

 

7,4

d

4,4

 

6,6

 

 

 

 

 

 

6,6

 

 

 

 

 

 

 

 

 

3,2

8

t

 

 

3,2

8

t

s

7

b

5,2

q

12,2

s

7,3

b

5,5

q

12,5

 

 

2

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

5

 

 

 

6

 

 

 

5

 

 

 

 

6

 

 

 

 

 

c

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

в

 

 

 

 

 

 

 

 

г

 

 

 

 

 

a

 

 

7,4

d

4,4

 

 

a

 

 

7,6

d

4,4

 

6,6

 

3,2

 

8

6,6

 

 

3,0

 

8,2

 

 

 

t

 

 

 

t

 

 

 

 

 

 

s

7,3

 

 

5,5

 

 

12,10

s

7,5

 

 

5,5

 

 

12,12

 

 

 

b

 

 

 

 

 

 

b

 

 

 

2

 

 

q

 

2

 

 

q

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5,5

 

 

 

6,5

 

 

 

5,5

 

 

 

 

6,5

 

 

 

 

 

c

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

д

 

 

 

 

 

 

 

 

е

 

 

 

Рис. 3.84.

Для потока нет ни одной дополняющей цепи из в . Следовательно, поток является максимальным. ►

Определение. Разрезом (, ) в сети называется пара множеств и , удовлетворяющих условиям:

1), ;

2)= ;

3)∩ = .

Через → обозначим множество всех дуг, начала которых лежат в , а концы - в , а через → - множество всех дуг, начала которых лежат в , а концы - в .

Определение. Положим ( → ) = ∑ ( ). Число ( → ) называется про-

пускной способностью разреза (, ).

Определение. Разрез ( , ) называется минимальным, если для любого разреза

(, ) справедливо неравенство ( → ) ≤ ( → ).

Во второй части параграфа будет доказано, что величина максимального потока в про-

извольной сети равна пропускной способности минимального разреза.

Если для сети найден максимальный поток, то минимальный разрез можно найти следующим образом: включить в множество вершину и все вершины , для каждой из

3

Тема 14. «Задача о максимальном потоке в сети» Олейник Т.А., 2020

которых существует цепь из в с остаточной пропускной способностью ( ) > 0; положить = \. Полученный таким образом разрез (, ) будет минимальным.

Пример 4. Вернемся к примеру 3. Используя найденный максимальный поток, несложно определить, что единственной вершиной, в которую можно добраться по цепи с положительной остаточной пропускной способностью, является вершина . Следовательно, пара множеств = { ,} и = { ,,,,} образует минимальный разрез.

Упражнение 3.37. Найтимаксимальныйпоток иминимальныйразрездлясети,изоб-

раженной:

 

 

 

 

 

 

 

 

 

 

 

а) на рис. 3.85;

 

 

б) на рис. 3.86.

 

 

 

 

 

 

8

a

3

q

4

t

 

a

4

q

10

 

 

2

3 2

 

 

 

6

4

 

 

6 3

9

 

 

6 5

7

 

s

7

s

7

c

t

 

4

b

 

 

 

 

3

 

3 4

r

 

5

 

5

4

r

 

12

5

 

9

 

 

c

 

3

 

 

b

p

 

 

 

Рис. 3.85.

 

 

 

 

Рис. 3.86.

 

Теоретические обоснования

Перейдем к обоснованию алгоритма Форда - Фалкерсона. Для произвольных разреза

(, ) и потока введем две числовые характеристики:

 

(

→ ) = ∑

 

( ) - величина потока из

в ,

 

(

→ ) = ∑

 

( ) - величина потока из

в .

 

Пример 5. Для потока , текущего по сети в примере 1, и разреза (, ), где

=

{ ,,} и = { ,,,}, имеем ( → ) = 9, ( → ) = 0.

 

 

Лемма 1. Для любого потока и любого разреза (, ) справедливо равенство ‖ ‖ =

(

→ )− ( → ).

 

 

 

 

 

 

 

 

Доказательство.Согласноусловию сохранения потока ввершинах,для произвольной

вершины \{ } имеем:

 

 

 

 

 

 

 

 

( −) = ( +) или ( +)− ( −) = 0.

 

 

Следовательно, ∑ \{ } ( +)− ( −) = 0. Сложив это равенство почленно с ра-

венством ( +) = ‖ ‖, получим:

 

 

 

 

 

 

 

( +) − ( −)

= ‖ ‖,

 

 

(∑

 

( ))− ∑ (∑

 

( )) = ‖ ‖,

 

 

:  (

,

),( )− :  (

,

),( ) = ‖ ‖,

 

 

 

 

 

   

 

 

 

 

 

:  ( , ),( ) +

:  (

,

), ( )−:  (

,

),( )− :  ( ,

),( ) = ‖ ‖.

 

, 

, 

, 

 

, 

 

Первое и третье слагаемые последнего равенства взаимно уничтожаются, следовательно,

  :  (

, ), ( ) −   :  ( ,

),( ) = ‖ ‖,

, 

, 

 

( → )− ( → ) = ‖ ‖.■ Следствие 1. ‖ ‖ = ( −).

4

Тема 14. «Задача о максимальном потоке в сети»

Олейник Т.А., 2020

Доказательство. Пусть = { }, = \{ }. Тогда (

→ ) = ( −), (

→ ) =

0 и равенство из леммы 1 запишется следующим образом: ‖ ‖ = ( −).■

 

Следствие 2. Для любого потока и любого разреза (, ) справедливо неравенство

‖ ‖ ≤ ( → ).

Доказательство. Из условия ограничения по пропускной способности

( ) ≤ ∑ ( ), т.е. ( → ) ≤ ( → ).

Тогда с учетом равенства из леммы 1 имеем:

‖ ‖ = ( → )− ( → ) ≤ ( → ) ≤ ( → ). ■

Лемма 2. Если для некоторого потока и некоторого разреза (, ) выполняется равенство ‖ ‖ = ( → ), то поток максимален, а разрез (, ) минимален.

Доказательство. Пусть - максимальный поток, а ( , ) - минимальный разрез. Тогда справедлива следующая цепочка неравенств:

‖ ‖ ≤ ‖ ‖

сл.   леммы  

( → ) ≤ ( → ).

Поскольку крайние члены в этой цепочке неравенств совпадают, то она превращается в цепочку равенств, а это означает, что поток максимален, а разрез (, ) минимален. ■

Лемма 3. Пусть - поток в сети и является для дополняющей цепью из в .

Тогда в сети существует поток такой, что

= ‖ ‖ + ( ).

Доказательство. Определим в сети функцию : → по формуле

 

( )+ ( ), если ,

− прямая дуга,

( ) =

( )− ( ), если ,

− обратная дуга,

 

( ), если .

Докажем, что функция является потоком.

Вначале покажем, что функция принимает только неотрицательные значения и удовлетворяет условию 1) определения потока.

Пусть - прямая дуга цепи . Тогда

0 ≤ ( ) = ( )+ ( ) ≤ ( )+ ( ) = ( )+ ( ( ) − ( )) = ( ).

Пусть - обратная дуга цепи . Тогда

( ) = ( ) − ( ) ≥ ( ) − ( ) = ( ) −( ) = 0 и( ) = ( ) − ( ) ≤ ( ) ≤ ( ).

Таким образом, для любой дуги цепи выполнено 0 ≤ ( ) ≤ ( ). Если , то

0 ≤ ( ) = ( ) ≤ ( ).

Теперь убедимся в выполнении для функции условия 2) определения потока. Понятно, что это условие следует проверить лишь для вершин , входящих в цепь . Пусть - дуга, по которой пришли в вершину , а - дуга, по которой ушли из . Каждая из этих дуг может быть как прямой, так и обратной в цепи . Следовательно, возможны четыре различных случая.

1. Пусть обе дуги и - прямые. В этом случае

( ) = ( )+ ( ) и ( ) = ( )+ ( ),

так что

( +) = ( +)+ ( ) и ( −) = ( −)+ ( ).

Но для потока выполнено условие ( +) = ( −), следовательно, и для потока

имеем ( +) = ( −).

2.Пустьдуга -прямаяи -обратная,т.е.обедугивходятввершину .Вэтомслучае

5

Тема 14. «Задача о максимальном потоке в сети»

 

Олейник Т.А., 2020

(

) = ( )+ ( ) и (

) = (

)− ( ),

так что

 

 

 

( −) = ( −)+ ( ) − ( ) = ( −) и ( +) = ( +).

Так как для потока выполнено условие ( +) = ( −), то и для потока имеем

( +) = ( −).

 

 

Аналогично рассматриваются случай 3 (обе дуги и

- обратные) и случай 4 (дуга

 

- обратная и - прямая).

 

 

Таким образом, мы показали, что функция - поток в цепи .

 

Определимтеперьвеличинупотока .Напомним,что

= ( +).Извершины дуги

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

= ( +) = ‖ ‖+ ( ). ■

Объединяет приведенные выше результаты следующая теорема.

Теорема 3.11 (Форда - Фалкерсона). Для потока в сети следующие условия эквивалентны:

1)поток максимален;

2)для не существует дополняющей цепи из в ;

3)существует разрез (, ), для которого ‖ ‖ = ( → ).

Доказательство. Доказательство проведем по следующей схеме: 1 2 3 1.

1 2. Будем рассуждать от противного. Предположим, что для максимального потоканайдется дополняющая цепь из в . Тогда по лемме 3 существует поток такой, что= ‖ ‖ + ( ), т.е. > ‖ ‖. Полученное неравенство противоречит тому, что потокмаксимален.

2 3. Определим как множество всех вершин , для каждой из которых существует цепь из в такая, что ( ) > 0. Добавим в вершину и положим = \. Докажем, что для полученного разреза (, ) выполняется равенство

‖ ‖ = ( → ).

Вначале покажем, что для любой дуги → выполнено равенство ( ) = ( ). Будем рассуждать от противного. Предположим, найдется дуга → , для которой ( ) < ( ). Пусть - начало, - конец этой дуги, , . Множество определено нами так, что можно говорить о существовании цепи из в , для которой ( ) > 0. Дополним эту цепь дугой и вершиной до цепи из в . Тогда

( ) = ( ), ( ) = ( ),( ) − ( ) > 0

(здесь учтено, что - прямая дуга в цепи и, значит, ( ) = ( )− ( )). Но выполнение неравенства ( ) > 0 означает, что вершина . Пришли к противоречию. Таким образом, предположение было неверным и для любой дуги → выполнено равенство

( ) = ( ). Следовательно, ( → ) = ( → ).

Аналогично показывается, что для всех дуг → имеет место равенство ( ) = 0 и, следовательно, ( → ) = 0. Поскольку (в силу леммы 1) для любого разреза справедливо равенство ‖ ‖ = ( → )− ( → ), для построенного разреза получаем равенство

‖ ‖ = (, ).

6

Тема 14. «Задача о максимальном потоке в сети»

Олейник Т.А., 2020

3 1.Этоутверждениеполностьюсовпадаетсутверждениемдоказаннойранеелеммы

2. ■

Следствие. Величина максимального потока в произвольной сети равна пропускной способности минимального разреза.

Замечание. В ходе доказательства теоремы при обосновании справедливости перехода 2 3 был, по существу, предложен алгоритм нахождения минимального разреза.

Ответы и указания к упражнениям

3.37. а) Один из максимальных потоков изображен на рис. 14. Этому потоку соответствует минимальныйразрез = { ,,,}, = { ,,,}.Величинамаксимальногопотокаипропускная способность минимального разреза равна 16; б) Один из максимальных потоков изображен на рис. 15. Этому потоку соответствует минимальный разрез = { ,,}, = { ,,,,}.Величинамаксимальногопотока ипропускная способностьминимальногоразреза равна 16.

8,6

a

 

3,3

q

 

4,4

t

 

a

 

4,4

q

 

10,5

 

 

 

 

 

 

 

 

6,5

 

 

 

 

 

 

 

 

 

 

3,3

2,2

 

2,1

9,8

 

 

 

4,4

6,65,5

 

 

s

 

 

7,3

 

 

7,6

 

 

b

3,3

 

7,4

s

 

c

 

 

r

t

6,5

 

 

 

 

 

 

 

3,3

 

 

 

4,1

 

5,5

4,3

 

5,5

 

4,1

r

12,11

 

 

 

 

 

 

 

 

9,5

 

 

c

 

 

3,3

 

 

 

b

 

5,5

 

p

 

 

 

Рис. 14. Рис. 15.

7

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