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

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

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

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

В этом параграфе будут рассматриваться сети G V ,U , ,

имеющие единственную вершину s с нулевой полустепенью захода и единственную вершину t с нулевой полустепенью исхода. Вершину s

будем называть источником, а вершину t - стоком, вес u дуги u -

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

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

v является концом.

 

 

 

Определение. Потоком в сети G V ,U ,

называется функция

f :U 0, , удовлетворяющая условиям:

 

 

1) u U f u u ;

 

 

2) f v f v

для всех вершин v ,

v s ,

v t , где

f v f u и f v f u .

 

 

u v

 

u v

 

 

Значение

f v можно интерпретировать как поток, втекающий

в вершину v ,

а значение

f v - как поток, вытекающий из вершины

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

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

191

 

a

7,3

d

4,2

 

 

 

Пр и м ер

1 .

На

рис. 3.83 дан

 

 

 

 

 

 

пример сети и потока

f

 

в ней.

 

6,6

3,3

8,1

t

 

 

 

 

 

 

 

 

 

 

 

 

 

s

7,1

5,5

 

12,7

 

 

 

Около каждой

дуги u указаны

 

b

q

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2,1

 

 

 

через

запятую

 

ее

 

пропускная

 

5,2

6,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(u)

 

 

 

 

 

c

 

 

 

 

 

способность

и текущий по ней

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.83.

 

 

 

 

поток

f u .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Определение.

Положим

 

f

f s .

Число

 

f

называется

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

 

 

 

 

 

 

 

 

 

 

 

 

 

Определение.

Поток

f

*

называется максимальным, если для

любого потока f справедливо неравенство f f * .

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

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

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

v0u1v1...vk 1uk vk , в которой любые два соседних элемента инцидентны.

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

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

192

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

Пусть

f - поток в сети

G и P - цепь из v в w . Для каждой

дуги u цепи

P будем вычислять остаточную пропускную способность

h(u) при данном потоке f

по следующему правилу: если дуга

u

прямая, то

h(u) (u) f (u) , а если обратная, то h(u) f (u) .

В

свою очередь остаточную пропускную способность h(P) цепи P при

данном потоке

f

будем определять по формуле h P min h u .

 

 

 

 

 

 

 

 

 

u P

 

Определение. Цепь P из v в w называется дополняющей для f ,

если h P 0 .

 

 

 

 

 

 

 

 

 

Пр и м ер 2 .

В сети, изображенной на рис. 3.83, цепь, включающая

последовательно

вершины

s, b, c, q, t ,

является дополняющей для

потока, рассмотренного в примере 1.

 

 

 

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

поток, является алгоритм Форда - Фалкерсона.

 

 

Алгоритм Форда -

Фалкерсона. 0 - й

ша г . Пускаем по сети

нулевой поток

f0 , т.е. полагаем f0 u 0

для всех дуг u U .

 

k - й ша г .

Пусть к началу шага в сети течет поток fk 1 . Для этого

потока fk 1 ищем дополняющую цепь из s в t .

 

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

 

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

fk 1 дополняющая цепь из s

в t

имеется, даем ей имя

Pk

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

fk

по следующему правилу:

 

 

 

 

 

f

k 1

(u) h(P ), если u P , u - прямая дуга,

 

 

 

 

 

 

k

k

 

 

fk (u) fk 1(u) h(Pk ), если u Pk , u - обратная дуга,

 

 

f

k 1

(u),

если u P .

 

 

 

 

 

 

 

 

k

 

 

 

Построенная

 

таким

образом функция

fk является потоком, и

величина этого потока определяется равенством fk fk 1 h(Pk ) .

193

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

Доказательство алгоритма Форда - Фалкерсона приведено во второй части параграфа.

Пр и м ер 3 . Построим максимальный поток для сети, изображенной на рис. 3.84,а.

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

поток на дугах не отмечать),

 

f0

 

 

 

0 .

 

 

 

 

 

Ш а г 1 . P : s a d t

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

0

1

6

7

4

 

 

 

 

 

 

 

 

 

 

 

 

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

пропускная

 

способность

h(u)

соответствующей

 

дуги

 

u ),

h P

min h(u) 4 ,

поток

f

 

указан

на

 

рис.

3.84,б,

 

 

 

 

1

 

 

 

 

 

 

 

 

 

u P

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

 

 

 

 

 

 

 

 

 

 

f

0

 

 

h P

4 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ш а г 2 . P2 :

 

s a b q t

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

3

5

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f1 ,

 

h P2 2 , поток f2

указан на рис. 3.84,в,

 

 

f2

 

 

 

f1

 

h P2 6 .

 

 

 

 

 

 

 

 

 

 

 

 

 

Ш а г 3 . P :

 

s b q t - дополняющая цепь для потока

f

2

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

7

3

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h P

3 , поток

f

3

указан на рис. 3.84,г,

 

 

f

3

 

 

 

 

 

 

 

 

 

 

f

2

 

 

 

 

h P 9 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

Ш а г 4 .

P4 :

 

s c q t

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

f3 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

6

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h P4 5 , поток

f4

указан на рис. 3.84,д,

 

f4

 

 

 

 

 

 

f3

 

 

 

 

h P4 14 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ш а г

 

 

5 . P :

 

s b a d q t

 

 

-

 

 

дополняющая цепь

для

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

4

2

3

8

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

потока

 

f

3

,

h P

2 ,

поток

f

5

 

 

указан

 

 

 

 

 

на

 

рис.

3.84,е,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

5

 

 

 

 

 

 

f

4

 

 

h P

16 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

194

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

7

d

 

 

 

 

a

 

7,4

d

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

4,4

 

 

 

6

 

3

 

8

 

t

6,4

 

3

 

8

 

t

 

 

 

7

5

 

 

7

5

 

 

 

s

 

 

12

 

s

 

 

12

 

 

 

 

b

 

q

 

 

 

b

 

q

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

2

 

 

 

 

 

5

 

6

 

 

 

5

 

 

 

6

 

 

 

 

 

 

c

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

а

 

 

 

 

 

 

 

б

 

 

 

 

 

 

a

7,4

d

 

 

 

 

a

 

7,4

d

 

 

 

 

 

 

 

 

 

4,4

 

 

 

 

 

 

4,4

 

 

 

6,6

 

3,2

 

8

 

t

6,6

 

 

3,2

8

 

t

 

 

 

7

 

5,2

 

 

 

7,3

 

5,5

 

 

 

 

s

 

 

12,2

 

s

 

 

12,5

 

 

 

 

b

 

q

 

 

 

b

 

q

 

 

 

 

2

 

 

 

 

 

2

 

 

 

 

 

5

 

6

 

 

 

5

 

 

 

6

 

 

 

 

 

 

c

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

в

 

 

 

 

 

 

 

г

 

 

 

 

 

 

a

7,4

d

 

 

 

 

a

 

7,6

d

 

 

 

 

 

 

 

 

 

4,4

 

 

 

 

 

 

4,4

 

 

 

6,6

 

3,2

 

8

 

t

6,6

 

 

3,0

8,2

 

t

 

 

 

7,3

 

5,5

 

 

 

 

7,5

 

5,5

 

 

 

 

s

 

 

 

 

s

 

 

 

12,12

 

 

 

 

b

 

q

12,10

 

 

b

 

q

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

2

 

 

 

 

 

5,5

6,5

 

 

 

5,5

 

 

6,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

д

 

 

 

 

 

 

 

е

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.84.

 

 

 

 

 

 

 

 

 

Для потока

f5

нет

ни

одной

дополняющей

цепи

из

s

в

t .

Следовательно, поток

f5 является максимальным. ►

 

 

 

 

 

Определение.

Разрезом

Vs ,Vt

в

сети

G

называется

пара

множеств Vs и Vt , удовлетворяющих условиям:

 

 

 

 

 

 

1) s Vs , t Vt ;

 

 

 

 

 

 

 

 

 

 

 

 

 

2) Vs Vt

V ;

 

 

 

 

 

 

 

 

 

 

 

 

 

3) Vs

Vt

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

195

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

Определение.

Положим Vs Vt

(u) .

Число

 

 

 

 

 

u Vs Vt

 

 

Vs Vt называется пропускной способностью разреза Vs ,Vt .

Определение.

Разрез

Vs *,Vt *

называется минимальным, если

для

любого

разреза

Vs ,Vt

справедливо

неравенство

Vs * Vt * Vs Vt .

 

 

 

 

Во

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

что

величина

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

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

вершину s

и все вершины v V , для каждой из которых существует

цепь P из

s

в v

с остаточной пропускной способностью h P 0 ;

положить

Vt

V \ Vs . Полученный таким

образом разрез Vs ,Vt

будет минимальным.

 

Пр и м ер

4 .

Вернемся к примеру

3. Используя найденный

максимальный поток, несложно определить, что единственной вершиной, в которую можно добраться по цепи с положительной остаточной пропускной способностью, является вершина b .

Следовательно, пара множеств Vs s, b и Vt

a, c, d, q, t образует

минимальный разрез.

 

 

Упр а жн е н ие 3 . 3 7 .

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

разрез для сети, изображенной:

 

а) на рис. 3.85;

б) на рис. 3.86.

 

 

 

a

3

q

4

 

t

 

8

3

2

2

 

 

 

 

6

 

9

 

s

3

 

 

7

 

4 b

 

 

 

 

5

5

 

4

 

 

 

 

 

 

 

 

r

 

 

c

 

3

 

 

 

a

 

4

q

 

 

 

 

6

4

 

 

 

10

 

 

6

5

 

 

 

s

7

c

 

7

t

 

 

 

 

 

3

3

4

r

 

 

 

 

 

 

12

 

 

 

 

9

 

 

 

 

 

 

 

 

 

b

 

5

p

 

 

 

196

Рис. 3.85.

Рис. 3.86.

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

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

произвольных разреза

Vs ,Vt

и

потока

f

 

 

 

введем

две числовые

характеристики:

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

 

 

f Vs Vt

в Vt ,

 

u Vs Vt

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f Vt Vs

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

в Vs .

 

u Vt Vs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пр и м ер 5 . Для потока

f

,

текущего по сети в примере 1, и

разреза Vs ,Vt ,

где

 

 

Vs

s, a, c

 

и

 

 

 

 

Vt b, d, q, t ,

имеем

f Vs Vt 9 , f Vt Vs 0 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лемма 1. Для

любого потока

f

и

любого разреза

Vs ,Vt

справедливо равенство

 

f

 

f Vs

Vt f Vt Vs .

 

 

 

 

 

 

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

вершинах, для произвольной вершины v Vs

\ s имеем:

 

f v f v

или

f v f v 0 .

 

Следовательно,

 

 

f v f v 0 .

Сложив это

 

v Vs \ s

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

равенство почленно с равенством

f

 

f

 

 

 

, получим:

 

 

f v f v

 

 

 

f

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

v Vs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

 

 

 

 

 

f

 

 

 

 

 

f

,

 

 

 

 

 

u

 

 

 

 

u

 

 

v Vs u v

 

 

 

 

v Vs u v

 

 

 

 

 

 

 

 

 

 

197

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f u

 

 

f u

 

 

 

 

 

 

 

 

 

 

 

f

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u: u a,b ,

 

u: u a,b

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a Vs

 

 

b Vs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f u

 

 

f u

 

 

f u

 

f u

 

 

 

f

 

 

 

.

 

 

 

 

 

u: u a,b ,

u: u a,b ,

 

u: u a,b ,

 

 

 

 

u: u a,b ,

 

 

 

 

 

 

 

 

 

 

a Vs , b Vs

a Vs , b Vs

 

a Vs , b Vs

 

 

 

 

a Vs , b Vs

 

 

 

 

 

 

 

 

 

 

Первое и третье слагаемые последнего равенства взаимно

уничтожаются, следовательно,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f u

 

 

f u

 

 

 

 

 

f

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u: u a,b ,

 

u: u a,b ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a Vs , b Vs

 

a Vs , b Vs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f Vs Vt f Vt Vs

 

 

 

f

 

 

 

.■

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Следствие 1.

 

f

 

 

 

f t .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Доказательство.

Пусть

Vt t ,

 

Vs

V \ t .

Тогда

f Vs Vt f t ,

f Vt Vs

0

и равенство из леммы 1

запишется следующим образом:

 

f

t .■

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Следствие 2.

 

Для любого потока

f

и любого разреза

Vs ,Vt

справедливо неравенство f Vs Vt .

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

способности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (u)

(u) , т.е.

f Vs Vt Vs Vt .

 

 

u Vs Vt

u Vs Vt

 

 

 

 

 

 

 

 

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

 

 

f

 

 

 

f Vs Vt f Vt Vs f Vs Vt Vs Vt . ■

 

 

 

 

Лемма 2. Если для некоторого потока f

и некоторого разреза

Vs ,Vt выполняется равенство

 

 

 

 

f

 

 

 

Vs

Vt , то поток

f

 

 

 

 

максимален, а разрез

Vs ,Vt минимален.

 

 

 

Доказательство. Пусть f * - максимальный поток, а Vs *,Vt

* -

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

198

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сл. 2 леммы 1

 

 

 

 

 

f

 

 

 

 

 

 

 

f *

 

 

 

 

 

 

Vs * Vt * Vs Vt .

 

 

 

 

 

 

 

 

 

 

 

Поскольку крайние члены в этой цепочке неравенств совпадают, то

она превращается в цепочку равенств, а это означает, что поток

f

максимален, а разрез Vs ,Vt минимален. ■

 

 

 

Лемма 3.

 

Пусть f

-

поток в сети G и

P является для

f

дополняющей цепью из s

в t . Тогда в сети G существует поток

f

такой, что

 

 

 

 

 

f

 

h(P) .

 

 

 

 

f

 

 

 

 

 

 

 

 

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

формуле

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f u h(P),

если u P,

u - прямая дуга,

 

 

 

 

 

 

 

 

 

 

 

 

 

если u P,

u - обратная дуга,

 

f (u) f u h(P),

 

 

 

 

 

 

 

 

 

 

f u ,

если u P.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Докажем, что функция

f является потоком.

 

 

Вначале

покажем,

 

что

функция

f

принимает только

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

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

0 f (u) f (u) h(P) f (u) h(u) f (u) (u) f (u) (u) .

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

f (u) f (u) h(P) f (u) h(u) f (u) f (u) 0 и f (u) f (u) h(P) f (u) (u) .

Таким

образом,

для любой дуги

u цепи

P

выполнено

0 f (u) (u) . Если

u P , то 0 f (u) f (u) (u) .

 

Теперь

убедимся

в выполнении для

функции

f

условия 2)

определения потока. Понятно, что это условие следует проверить лишь для вершин v , входящих в цепь P . Пусть u1 - дуга, по которой

пришли в вершину v , а u2 - дуга, по которой ушли из v . Каждая из

199

этих дуг может быть как прямой, так и обратной в цепи

P .

Следовательно, возможны четыре различных случая.

 

 

 

 

 

1. Пусть обе дуги u1

и u2 - прямые. В этом случае

 

 

 

 

f (u1 ) f (u1 ) h(P) и f (u2 ) f (u2 ) h(P) ,

 

так что

 

 

 

 

 

 

 

 

 

 

 

f (v ) f (v ) h(P) и f (v ) f (v ) h(P) .

 

 

 

 

Но для

потока

f

выполнено условие

f (v ) f (v ) ,

следовательно, и для потока

f имеем

f (v ) f (v ) .

 

 

 

 

 

2. Пусть дуга u1 - прямая и u2 - обратная,

т.е. обе дуги входят в

вершину v . В этом случае

 

 

 

 

 

 

 

 

f (u1 ) f (u1 ) h(P) и f (u2 ) f (u2 ) h(P) ,

 

так что

 

 

 

 

 

 

 

 

 

 

 

f (v ) f (v ) h(P) h(P) f (v ) и f (v ) f (v ) .

 

 

 

 

Так как для потока

f

выполнено условие

f (v ) f (v ) , то и

для потока f

имеем f (v ) f (v ) .

 

 

 

 

 

 

 

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

-

обратные) и случай 4 (дуга u1 - обратная и u2 - прямая).

 

 

 

 

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

- поток в цепи P .

 

 

 

 

Определим

теперь

величину

потока

f .

Напомним,

что

 

f

 

f (s ) .

Из

вершины

s дуги

только

выходят, поэтому

та

 

 

 

 

 

 

 

 

 

 

 

 

 

 

единственная дуга u с началом в вершине s , которая входит в цепь P , является прямой дугой цепи P . Следовательно, для нее выполнено

равенство f (u) f (u) h(P) . На остальных дугах, выходящих из s , поток не менялся, так что имеем:

f f (s ) f h(P) . ■

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

Теорема 3.11 (Форда - Фалкерсона). Для потока f в сети G

следующие условия эквивалентны: 1) поток f максимален;

200

Соседние файлы в папке Лекции Олейник PDF