Учебное пособие 985
.pdfГлава 2. Некоторые оптимизационные задачи на графах
Впоследнее время интенсивно проводятся исследования в области синтеза и анализа объектов самой различной природы, обладающих сетевой структурой. К таким объектам, в частности, относятся территориальнораспределенные системы: информационные, транспортные, энергетические и т.п. Хорошим описанием различных коммуникационных сетей служит взвешенный граф, ребрам и вершинам которого приписывают веса, означающие соответственно пропускные способности линий связи и потребности (производственные мощности) объектов.
Вматематической постановке многие из подобных задач удается сформулировать в терминах линейного программирования. Однако оказывается, что удобнее формулировать задачи линейного программирования в терминах распределения потоков на графах. Это объясняется тем, что для потоковых задач большой размерности в настоящее время разработаны алгоритмы с высокой вычислительной эффективностью.
2.1. Задача о кратчайшем пути
Задача о кратчайшем пути заключается в нахождении пути минимальной длины от заданной вершины s к заданной вершине t в ориентированном графе. Если граф является взвешенным, то под длиной пути подразумевается сумма длин дуг, которые этот путь составляют; иначе - длина пути - это количество дуг, образующих путь. Обобщениями задачи о кратчайшем пути являются:
а) задача о нахождении кратчайших путей между вершиной s и всеми другими вершинами графа;
б) задача нахождения кратчайших путей между всеми парами вершин. Если определить кратчайшие пути от заданной вершины s ко всем вершинам графа, то можно построить дерево кратчайших путей. При решении задачи о кратчайшем пути во взвешенном графе следует рассматривать три случая: а) все дуги имеют неотрицательный вес; б) некоторые дуги имеют отрицательный вес, но в графе не существует контуров с суммарным отрицательным весом; в) в сети присутствует один или несколько контуров с суммарным отрицательным весом. В последнем случае задачу о кратчайшем пути решить нельзя, но можно обнаружить контуры с отрицательным суммарным весом. В случае а) для поиска кратчайшего пути между заданными вершинами используется алгоритм Дейкстры; для поиска кратчайших путей между заданной вершиной и всеми остальными может быть использован также алгоритм Дейкстры. В случаях б) и в) используется алгоритм Форда-Мура [2]. Для определения кратчайшего пути между
всеми парами вершин применим алгоритм Флойда [2].
Конкретная ситуация, приводящая к задаче о кратчайшем пути, может быть описана следующим образом. Из города s в город t требуется перебросить некоторый груз за кратчайшее время. Обозначим через X множе-
31
ство, состоящее из s , t и возможных перевалочных пунктов. Две вершины xi и x j графа соединяются дугой тогда и только тогда, когда из пункта xi в x j можно попасть. Длиной дуги (xi , x j ) назовем время, необходимое для того, чтобы попасть из пункта xi в пункт x j по дуге (xi , x j ) . Самый короткий путь, ведущий их вершины s в t , в получившемся графе, будет решением исходной задачи.
Вполне естественным образом к задаче о кратчайшем пути сводятся задачи поиска маршрутов минимальной длины в коммуникационных сетях. Здесь узлам коммуникационной сети ставят в соответствие вершины графа, а коммуникациям - дуги графа. Длина ребра характеризует длину соответствующей коммуникации.
Отметим, что длиной дуги могут служить не только расстояние между двумя пунктами, но и время движения между ними, стоимость проезда, расход топлива или энергии и т.д.
Постановка задачи. Пусть дан связный ориентированный граф G = ( X ,U ) , каждой дуге u которого в соответствие поставлено неотрицательное число c(u) ³ 0 , называемое длиной этого ребра. Пусть, кроме того, в графе выделены две вершины: s - начальная вершина, t - конечная вершина. Требуется найти: а) кратчайший путь из вершины s в t ; б) кратчайший путь из вершины s во все остальные вершины графа.
Алгоритм нахождения кратчайшего пути состоит из двух частей. В первой части определяется длина кратчайшего пути, во второй – сам этот путь; то и другое осуществляется за конечное число шагов. На первом шаге каждой вершине xi графа G приписывается некоторое число l(xi ) , которое называется пометкой. Различают пометки двух сортов: временную
ипостоянную. Временные пометки меняются на последующих шагах, однако, пометка любой вершины не может меняться бесконечное число раз,
ипоэтому, в конце концов, становится постоянной. Процесс изменения пометок устроен так, что постоянная пометка данной вершины равна наи-
меньшему расстоянию до этой вершины от вершины s .
Алгоритм Дейкстры
Первая часть.
Шаг 1. (присвоение начальных значений). Положить l(x) = 0 для x = s и считать эту пометку постоянной. Положить l(xi ) = ∞ для xi ¹ s и считать эти пометки временными. Положить p = s .
Шаг 2. (обновление пометок). Для всех xi Γ( p) , пометки которых временные, изменить пометки в соответствии с правилом:
l(xi ) = min{l(xi ), l( p) + c( p, xi )}.
Шаг 3. (превращение пометок в постоянные). Среди всех вершин с временными пометками найти такую xi* , для которой l(xi* ) = min{l(xi )}.
Считать эту пометку вершины xi* постоянной и положить p = xi* .
32
Шаг 4. (i) (Если надо найти лишь путь от s к t .) Если p = t , то l( p) является длиной кратчайшего пути. Останов.
Если p ¹ t , то перейти к шагу 2.
(ii) (Если требуется найти пути от s ко всем остальным вершинам.) Если все вершины отмечены как постоянные, то эти пометки дают длины кратчайших путей. Останов.
Если некоторые пометки являются временными, перейти к шагу 2.
Вторая часть.
Чтобы найти сам путь, надо поступить следующим образом: положить y = t (или y = xk , в случае (ii)); из всех вершин xi Γ −1 ( y) выделить такую вершину x , для которой выполняется соотношение l( y) = l(x) + c(x, y) ; затем в качестве y рассматривается найденная вершина x - процесс продолжается до тех пор, пока не будет достигнута вершина s , тогда путь из дуг, соединяющих выделенные вершины – искомый кратчайший путь из s в t (или из s в xk ).
Обоснование алгоритма. Покажем, что постоянные пометки действительно дают длины кратчайших путей.
Заметим вначале, что пометка вершины xi ( l(xi ) ¹ ¥ ) равна длине пути от s к xi , который построен алгоритмом к этому моменту, причем путь проходит полностью по вершинам, имеющим постоянные пометки на данный момент. Поэтому для доказательства оптимальности пути из s в xi , соответствующего постоянной пометке l(xi ) , достаточно доказать, что постоянная пометка l(xi ) каждой вершины xi равна длине кратчайшего пути из s в xi . Доказательство проведем по методу математической ин-
дукции [11, гл. 1, § 6].
Пусть вершина xi получила свою постоянную пометку на k -ой итерации, то есть после k -го выполнения шага 3. При k = 1 справедливость утверждения очевидна. Предположим, что оно верно для вершин, получивших свои постоянные пометки на итерациях 2,3,..., k − 1. Обозначим че-
рез P 0 путь из s в xi , построенный алгоритмом в результате k итераций,
P * - кратчайший путь из s в xi . По условию длина пути P 0 равна
(P 0 ) = l(xi ) . Пусть X1 и X 2 - множество вершин, имеющих соответственно постоянные и временные пометки перед началом k -ой итерации. Рассмотрим две возможные ситуации:
1) Пусть P * содержит вершины из X 2 . Пусть x - первая (считая от s ) такая вершина, принадлежащая P *, а вершина x′ предшествует x на пути P *. Согласно выбору x имеем x′ X 1 . Обозначим через P1 * часть пути P * от s до x . По предположению индукции l(x′) - длина кратчайшего пути из s в x′ . Поэтому
D(P1*) = l(x′) + c(x′, x) ³ l(x) .
33
Поскольку l(x) - временная пометка, а постоянная пометка l(xi ) вершины
xi выбирается |
на |
k -ой итерации |
|
как наименьшая |
из |
временных, то |
||||||
l( |
|
) ³ l(xi ) . Объединив полученные неравенства имеем |
|
|
|
|
||||||
x |
|
|
|
|
||||||||
|
|
|
|
D(P*) ³ D(P1 *) ³ l(xi ) = D(P 0 ) , |
|
|
|
|
||||
то есть P 0 - кратчайший путь из s в xi . |
|
|
|
|
|
|
||||||
|
|
2) Все вершины пути P * входят в X1 . Пусть x′ |
и x′′ - такие верши- |
|||||||||
|
|
′ |
|
|
|
|
|
′′ |
|
- пути P |
0 |
. Обо- |
ны, что дуга (x , xi ) |
принадлежит пути P *, а дуга (x , xi ) |
|
||||||||||
значив через P′ |
часть пути P * от s в |
x′ , по предположению индукции |
||||||||||
|
|
′ |
′ |
|
′ |
= x |
′′ |
, то сразу получаем неравенство |
||||
имеем D(P ) ³ l(x ) . Поэтому, если x |
|
|
D(P*) = D(P¢) + c(x¢, xi ) ³ l(x¢) + c(x¢, xi ) = D(P 0 ) .
Допустим теперь, что x′ ¹ x′′ . Поскольку xi получает постоянную пометку l(xi ) из вершину x′′ , а не из x′ , то
D(P*) = l(x¢) + c(x¢, xi ) ³ l(x¢¢) + c(x¢¢, xi ) = D(P 0 ) .
Таким образом, и в случае 2) верно неравенство D(P*) ³ D(P 0 ) , то есть P 0 - кратчайший путь из s в xi .
Замечание. 1) Как легко видеть, алгоритм Дейкстры применим и к смешанным и, в частности, к неориентированным графам. Для этого достаточно каждое неориентированное ребро графа, имеющее вес, рассматривать как пару дуг того же веса; 2) Если кратчайший путь от s в любую вершину xk является единственным, то дуги этого кратчайшего пути образуют дерево кратчайших путей.
Пример 2.1. Требуется найти кратчайший путь из s во все остальные вершины орграфа, изображенного на рис. 2.1, над дугами графа указаны длина каждой дуги.
Шаг 1. l(s) = 0 , l(xi ) = ¥ для xi ¹ s , p = s .
Первая итерация
Шаг 2. Γ(s) = {x1 , x2 , x3 }. Согласно правилу l(x1 ) = min{∞,0 + 7}= 7 , l(x2 ) = min{∞,0 + 1}= 1, l(x3 ) = min{∞,0 + 3}= 3.
Шаг 3. min(7,1,3, ∞) = 1 соответствует x2 .
Шаг 4. x2 получает постоянную пометку l(x2* ) = 1, p = x2 .
Вторая итерация
Шаг 2. Γ(x2 ) = {x1 , x4 , x5 }. Согласно правилу l(x1 ) = min{7,1 + 2}= 3,
l(x4 ) = min{∞,1 + 5}= 6 , l(x5 ) = min{∞,1 + 4}= 5 .
Шаг 3. min(3,6,5, ∞) = 3 соответствует x1 .
Шаг 4. x1 получает постоянную пометку l(x1* ) = 3, p = x1 .
34
Третья итерация
Шаг 2. Γ(x1 ) = {x4 }. Согласно правилу
l(x4 ) = min{6,3 + 1}= 4 .
Шаг 3. min(3,4,5, ∞) = 3 соответствует x3 .
Шаг 4. x3 получает постоянную пометку l(x3* ) = 3, p = x3 .
Четвертая итерация
Шаг 2. Γ(x3 ) = {x5 }. Согласно правилу
l(x5 ) = min{5,3 + 5}= 5 .
Шаг 3. min(4,5, ∞) = 4 соответствует x4 .
Шаг 4. x4 получает постоянную пометку l(x4* ) = 4 , p = x4 .
Пятая итерация
Шаг 2. Γ(x4 ) = {}t . Согласно правилу
l(t) = min{∞,4 + 2}= 6 .
Шаг 3. min(5,6) = 5 соответствует x5 .
Шаг 4. x5 получает постоянную пометку l(x5* ) = 5 , p = x5 .
Шестая итерация
Шаг 2. Γ(x5 ) = {}t . Согласно правилу
l(t) = min{6,5 + 6}= 6 .
Шаг 3. min(6) = 6 соответствует t .
Шаг 4. t получает постоянную пометку l(t) = 6 , p = t .
Все вершины графа получили постоянные пометки. Останов.
Для нахождения кратчайшего пути между вершиной s и t (например) перейдем ко второй части алгоритма. Положим y = t , найдем вершину, для которой l( y) = l(x) + c(x, y) . Единственной такой вершиной является x4 . Затем, полагая y = x4 , аналогично, находим вершину x1 и т.д. Таким
образом, кратчайший путь из вершины s в t |
имеет длину шесть и прохо- |
||||||||||||
дит по дугам: (s, x2 ), (x2 , x1 ), (x1 , x4 ), (x4 , t) . |
|
|
|
|
|
|
|
|
|
||||
|
|
x 1 |
1 |
x 4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
7 |
|
|
|
s |
|
0 |
|
|
|
|
|
|
|
2 |
5 |
t |
|
x1 |
|
∞ |
7 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
1 |
4 |
6 |
|
x2 |
|
∞ |
1 |
|
|
|
|
s |
|
|
x3 |
|
∞ |
3 |
|
|
|
|
|||
|
x 2 |
|
x 5 |
|
|
|
|
|
|
||||
|
3 |
5 |
|
x4 |
|
∞ |
|
6 |
4 |
|
|
||
|
|
|
|
|
|
|
|
||||||
|
|
|
|
x5 |
|
∞ |
|
5 |
|
5 |
|
||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x 3 |
|
|
|
t |
|
∞ |
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 2.1 |
|
|
|
|
Таблица 2.1 |
35
Результаты вычислений сведены в таблицу 2.1, в первом столбце которой перечислены вершины графа, а в i -том – пометки вершин на (i − 1) - ом шаге первой части алгоритма. В кружочек в таблице 2.1 обведены постоянные пометки.
Задачи и упражнения
2.1.Используя алгоритм Дейкстры, найти кратчайший путь из s в t
вграфах, изображенных на рис. 2.2.
|
|
2 |
|
|
|
|
|
|
|
|
1 |
|
2 |
1 |
|
|
9 |
|
8 |
|
|
4 |
|
2 |
|
|
|
7 |
||||
|
|
t |
10 |
|
|
5 |
||||
s |
1 |
|
|
6 |
|
|
t |
|||
3 |
3 |
1 |
s |
3 |
3 |
4 |
||||
|
||||||||||
|
|
1 |
|
|
|
|
|
|
||
|
|
2 |
|
9 |
|
|
|
8 |
||
|
|
|
|
|
9 |
|
7 |
|
||
|
|
|
|
|
|
|
|
|
G1 |
|
|
|
|
|
G2 |
|
|
|
5 |
|
|
|
|
3 |
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
8 |
3 |
4 |
|
4 |
2 |
1 |
6 1 |
t |
|
|
|
|
|
|
|||
s |
5 |
|
|
|
t |
4 |
5 |
4 |
8 |
|
|
3 |
7 |
s |
|||
6 |
|
|
|
|
||||
|
|
|
|
|
||||
|
|
2 |
|
|
8 |
|
2 |
|
|
|
|
|
|
|
|
||
|
G3 |
|
|
|
|
|
G4 |
|
Рис. 2.2
2.2. Используя алгоритм Дейкстры, найти кратчайший путь из 1 в каждую другую вершину графа, изображенного на рис.2.3.
|
|
2 |
6 |
3 |
|
|
|
||
|
2 |
1 |
|
4 |
|
|
|
||
|
|
|
|
|
1 |
3 |
|
7 |
6 |
|
|
|
||
|
|
|
|
|
|
5 |
|
5 |
8 |
|
|
|
||
|
|
4 |
5 |
|
|
|
|
Рис. 2.3
36
2.2. Задача о максимальном потоке
Определение 2.1. Сетью называется связный ориентированный граф G = ( X ,U ) без петель, каждой дуге (xi , x j ) которого поставлено в соответствие неотрицательное число rij ³ 0 , называемое пропускной способно- стью этой дуги, и такой, что:
1)существует ровно одна вершина s , в которую не заходит ни одна дуга; эта вершина называется источником;
2)существует ровно одна вершина t , из которой не выходит ни одна дуга; эта вершина называется стоком.
Определение 2.2. Множество чисел {xij }, определенных на дугах (xi , x j ) ÎU называют потоком в сети, если выполняются следующие условия баланса:
|
|
v, если xi = s, |
|
а) ∑ xij − |
∑ |
|
|
xki = − v, если xi = t, |
|||
j:x jΓ( xi ) |
k:xk Γ−1( xi ) |
|
0, иначе. |
|
|
|
|
б) 0 £ xij |
£ rij для всех (xi , x j ) ÎU . |
Величиной потока {xij } называется число v ³ 0 . Поток с максималь-
ной величиной v = v * называется максимальным потоком. |
|
||||
Замечание. Величина потока v = |
∑ xsj |
- ∑ xks = |
∑ xsj , с дру- |
||
|
|
|
j:x j Γ( s) |
k:xk Γ− (s) |
j:x j Γ(s) |
гой стороны - v = ∑ xtj - |
∑ xkt |
= - |
∑ xkt |
. Получаем, что |
|
j:x j Γ(t ) |
k:xk Γ−1 (t ) |
|
k:xk Γ−1 (t ) |
|
|
v = |
∑ xsj = |
|
∑ xkt . |
|
(2.1) |
|
j:x j Γ( s) |
k:xk Γ−1 (t ) |
|
|
Это равенство только подтверждение интуитивно очевидного факта, что ввиду условия сохранения общее количество материала, выходящего из источника, равно общему количеству материала, входящего в сток.
Разрез в сети. Пусть R Ì X и R = X \ R - множество вершин графа, не принадлежащих множеству R , тогда множество дуг
(R, R ) = {(xi , x j ) U : xi R, x j R}
называется разрезом в сети.
Если при этом источник s R , а сток t R , то говорят, что разрез
(R, R ) отделяет s от t .
Любой разрез, отделяющий s от t , содержит по одной дуге каждого пути в графе G , ведущего из s в t . Таким образом, если из множества дуг сети изъять дуги произвольного разреза, отделяющего s от t , то не останется ни одного пути, ведущего из s в t .
Пропускной способностью разреза (R, R ) называется число
r(R, R ) = ∑ rij ,
( xi , x j ) ( R,R )
37
т.е. пропускная способность разреза равна сумме пропускных способно-
стей дуг, входящих в этот разрез.
Из всех разрезов, отделяющих s от t , минимальным называется разрез (R*, R*) с минимальной пропускной способностью r(R*, R*) :
r(R*, R*) = min r(R, R ) ,
где минимум берется по всем разрезам, отделяющим s от t . Минимальных разрезов может быть несколько.
Обозначим через Χ(R, |
|
) = |
|
|
∑ xij |
- сумму потоков ориентиро- |
||||||
R |
||||||||||||
|
|
|
|
|
( xi , x j ) ( R, |
|
) |
|
|
|
||
|
|
|
|
|
R |
|
|
|
||||
ванных из R в |
|
. Аналогично, Χ( |
|
, R) = |
∑ xki - сумма потоков ориен- |
|||||||
R |
R |
|||||||||||
|
|
|
|
|
|
|
( xk , xi ) ( |
|
,R) |
|||
|
|
|
|
|
|
|
R |
тированных из R в R.
Вследующем подразделе будет доказана теорема Форда-Фалкерсона
омаксимальном потоке и минимальном разрезе, после чего будет рассмотрен помечивающий алгоритм Форда-Фалкерсона определения максимального потока в сети.
Задача о максимальном потоке и ее варианты могут возникать во многих практических приложениях, например, при определении максимальной интенсивности транспортного потока между двумя пунктами на карте дорог, представленной графом. В этом примере решение задачи о максимальном потоке автоматически укажет также ту часть сети дорог, которая «насыщена» и образует «узкое место» в отношении потока между двумя указанными концевыми пунктами.
Другим примером является коммуникационная сеть, которая изображена ориентированным графом. Каждой дуге сопоставляется число, равное пропускной способности соответствующей коммуникации (линии связи, участка водопровода и т.п.). Задача состоит в определении пропускной способности коммуникационной сети между двумя выделенными вершинами.
Модификации задачи о максимальном потоке:
а) если вместо одного источника и одного стока рассмотреть несколько заданных источников и стоков, причем между различными источниками и стоками протекают потоки различных продуктов, то задача максимизации суммы всех потоков между источниками и стоками называется задачей о многопродуктовом потоке. В этой задаче пропускная способность дуги является ограничением для суммы всех потоков всех видов продуктов через эту дугу;
б) если рассмотреть граф, в котором выходной поток дуги равен ее входному потоку, умноженному на некоторое неотрицательное число, то задачу о максимальном потоке от s к t называют задачей о потоках с выигрышами. В такой задаче потоки могут и «порождаться» и «поглощаться» самим графом, так что поток, входящий в s , и поток, выходящий из t , могут независимо изменяться.
38
2.2.1 Теорема Форда-Фалкерсона
|
|
Теорема 2.1. Для |
|
любого потока величины v |
и любого разреза |
|||||||
(R, |
|
) , отделяющего s от t , справедлива следующая формула |
||||||||||
R |
||||||||||||
|
|
|
v = Χ(R, |
|
) − Χ( |
|
, R) . |
|
(2.2) |
|||
|
|
|
R |
R |
|
|||||||
|
|
Доказательство. По определению потока и величины потока |
||||||||||
|
|
∑ |
|
xij − |
∑ |
|
|
|
v, если xi = s, |
|||
|
|
|
xki = |
если xi R-{s}. |
||||||||
|
|
j:x jΓ( xi ) |
k:xk Γ−1( xi ) |
|
|
0, |
||||||
Просуммируем по всем вершинам в R , получаем |
|
|||||||||||
|
|
∑ |
|
∑ xij |
− ∑ |
|
∑ xki |
= v . |
(2.3) |
|||
|
|
xi R |
j:x jΓ( xi ) |
|
xi R |
k:xk Γ−1( xi ) |
|
|||||
В левой части этого равенства |
xij и − xij для i R и |
j R появляются |
точно по одному разу и поэтому взаимно уничтожаются. Следовательно, выражение (2.3) упрощается до
∑ ∑ xij |
− ∑ ∑ xki = v , |
||||
xi R j:x jΓ( xi ) |
xi R k:xk Γ−1( xi ) |
||||
x j |
R |
|
xk |
|
|
|
R |
Χ(R, R ) − Χ(R , R) = v .
Следствие 2.1. Формула (2.1) является частным случаем формулы
(2.2). (Доказать самостоятельно.) |
|
||||
|
|
Следствие 2.2. Для любого потока величины v |
и любого разреза |
||
(R, |
|
) , отделяющего s от t , справедлива следующая формула |
|||
R |
|||||
|
|
v ≤ r(R, |
|
) . |
(2.4) |
|
|
R |
Доказательство. Так как xij ³ 0 и xij £ rij для всех (xi , x j ) ÎU , то из формулы (2.2) следует
v = Χ(R, R ) − Χ(R , R) ≤ Χ(R, R ) ≤ r(R, R ) .
Теорема Форда-Фалкерсона. Величина максимального потока в сети из s в t совпадает с пропускной способностью минимального разреза, отделяющего s от t в этой сети, т.е. v* = r(R*, R*) .
Доказательство. Пусть {xij* } максимальный поток в величины v *.
Рассмотрим произвольный разрез (R, R ) , отделяющий s от t , в силу след-
ствия 2.2, справедлива следующая формула v* ≤ r(R, R ) .
Покажем, что существует разрез, где v* = r(R, R ) . Для этого по имеющемуся максимальному потоку {xij* } построим специальный разрез, следуя правилу:
1. Начать, полагая R* = {s}.
2. а) Если xi R * и, кроме того, xij* < rij , то x j включить в множество R *, т.е. x j R * (правило включения по прямой дуге);
б) Если xi R * и, кроме того, x*ji > 0 , то x j включить в множество R *, т.е. x j R * (правило включения по обратной дуге).
39
Докажем, что при таком способе построения множества R * сток t не попадет в R *.
Предположим, что существует путь P , соединяющий s и t , по дугам которого последовательно, используя правило 2а или 2б, удалось включить t в R *.
Пусть |
|
θ1 = min [rij |
− xij* ], если (xi , x j ) U - прямая дуга, |
( xi , x j ) |
|
θ 2 = min |
xij* , если (xi , x j ) U - обратная дуга |
( xi , x j ) |
|
Определим положительное число
θ = min{θ1 ,θ 2 } , θ > 0 .
Если теперь величину θ прибавить к потоку во всех прямых дугах и вычесть во всех обратных дугах цепи, то в результате получится новый поток, на θ больший, чем предыдущий, удовлетворяющий всем ограничениям, накладываемым на поток в сети. Это, очевидно, в силу того, что прибавление величины θ не может привести к превышению ни одной из пропускных способностей, так как θ ≤ θ1 , а вычитание θ из потока в обратных дугах не может сделать поток в этих дугах отрицательным, так как θ ≤ θ2 . Условия баланса для всех вершин, кроме s и t , тоже выполнены.
Рассмотрим вершину s , из нее выходит поток величины v *, после изменения величина потока стала v * +θ , но θ > 0 , следовательно, v * +θ > v *, но по определению величина потока v * максимальна, получи-
ли противоречие, следовательно, |
такого пути P не существует, поэтому |
||||||||||||
t R *, следовательно t |
|
* . |
|
|
|
|
|
|
|
|
|
|
|
R |
|
|
|
|
|
|
|
|
|||||
Таким образом, |
|
|
|
разрез (R*, |
|
*) |
который является, во- |
||||||
получили |
R |
||||||||||||
первых, отделяющим s |
от t , во-вторых, в силу теоремы 2.1, |
||||||||||||
v* = Χ(R*, |
|
*) − Χ( |
|
*, R*). |
(2.5) |
||||||||
R |
R |
||||||||||||
Покажем, что этот разрез есть искомый минимальный разрез. |
|||||||||||||
Рассмотрим дуги, входящие в разрез. Пусть |
(xi , x j ) (R*, |
|
*) , т.е. |
||||||||||
R |
xi R *, x j R *. Рассмотрим величину максимального потока xij* на дуге
(xi , x j ) (R*, R*) . По определению потока: xij* < rij или xij* = rij . Если xij* < rij , то согласно правилу 2а, x j следует включить в R *, что противо-
речит тому, |
что x j |
|
*, |
следовательно, xij* |
= rij |
на всех дугах разреза. |
||||
R |
||||||||||
Рассмотрим |
величину |
максимального |
потока |
x*ji |
на |
дуге |
||||
(x j , x j ) ( |
|
*, R*) . По определению потока: |
x*ji |
> 0 |
|
x*ji = 0 . |
|
|||
R |
или |
Если |
x*ji > 0 , то согласно правилу 2б, x j следует включить в R *, что противо-
речит тому, |
|
x j |
|
*, следовательно, x*ji = 0 на всех дугах разреза. |
что |
R |
|||
Итак, xij* = rij |
и x*ji |
= 0 . |
|
|
Просуммируем
40