М А Т Е М А Т И К А
УДК 519.10
новый алгоритм решения задачи
о максимальном потоке
Канд. физ.-мат. наук, доц. КОРЗНИКОВ А. Д.
Белорусский национальный технический университет
Математические модели широкого круга прикладных проблем могут быть сформулированы в терминах теории графов. В частности, многие такие модели приводят к задаче построения максимального потока в сети с множеством источников и стоков. Известные алгоритмы решения этой задачи основываются на методе расстановки пометок при поиске в сети увеличивающего пути, что предполагает ее графическое представление. Это делает их неудобными для программной реализации. В статье развита идея осуществления тернарных операций над элементами сети [1], на основе чего разработан алгоритм решения задачи о максимальном потоке с рациональными исходными данными, использующий лишь матричное представление сети (матрица пропускных способностей дуг), лишенный указанных выше недостатков, а увеличение потока на каждой итерации на максимально возможную величину приводит к уменьшению их числа.
Пусть сеть 0(У, и) с множеством вершин V = {1, 2, ..., п} и множеством дуг и = {(/,у)} задана матрицей пропускных способностей дуг
D = \
ее элемент йу равен пропускной
способности дуги (/, у), ведущей из вершины 7 в вершину /. Естественно полагать ¿/( = йГ, если
дуга (/, у) неориентирована, отсутствие дуги (¡, у) означает, что йу = 0. Обозначим через и Т множество индексов вершин, которые являются источниками и стоками соответственно, а через а,, /е Л',/7,, 1 — их мощности (а, — количество потока, которое может выходить из источника / е — количество потока, которое
может принять сток у е Т ). Задача заключается
в отыскании максимального суммарного потока из всех источников в стоки, при этом для любой вершины сети, не являющейся источником или стоком величины входящих и выходящих потоков, равны. Таким образом, требуется определить дуговые потоки х° по дугам
(/',у) е и(0 < х° < г/..), т. е. потоковую матрицу
Х°=\\х°
которая дает решение сформули-
рованной выше задачи.
Прежде чем перейти к описанию алгоритма, определим тернарные операции для матрицы
.„,. , введенные в [2] для вершин сети. Тер-
IK
по ин-
нарной операцией над матрицей дексу к называется операция б/( = тах(б/(, т\п(с1(к,с1к1)) для всех / Ф / Ф к. (1)
Рассмотрим вспомогательную матрицу
Я= г , элементы которой г = 7,7=1,и. Од-
II " Ияхя "
новременно с выполнением операции (1) изменяются элементы матрицы Я по следующему правилу:
г.. =
v
J/v, если ¿/.. > min (cilt,cikj); \гл, если du < mm (dik,dkj).
(2)
Операции (1), (2) являются основой метода построения максимального потока в многополюсной сети. Опишем вначале алгоритм решения задачи, а затем приведем его обоснование.
Подготовительный этап. Для начальной потоковой матрицы X" = х° (как правило, на
3 \\пУ.п
начало работы алгоритма
для всех
Наука итехника, № 5, 2013
ПУЛ
ПАП
i — \,n,j — \,п ) формируем кососимметричную
матрицу X = х.
где х, = -х,, х, = х,,
ес-
ли х(( > 0, и модифицированную матрицу пропускных способностей , полагая
II V Няхя
(/ -</ X . 7,7=1,п.
V V V ' ' ■> '
Общая итерация. И = £>*. Осуществляем тернарные операции (1) и (2) над матрицей
И = I с/,, последовательно по всем индек-
I ЯХЯ
сам к = 1, 2, ..., п.
Если тах[тт(а^йц ,Ь )] = 0 - алгоритм за-
/е5
рт
канчивает работу. В противном случае вычисляем
та\|тт(а, й*, )] - [ттЦ, с11р, Ър )| = 5//; >0.
% т
С помощью вспомогательной матрицы
И — г„ находим путь /,,„ = (/,7,),(/,),...,
II Ияхя ' 'г 11-
(4, , вдоль которого можно увеличить поток на максимально возможную величину . Здесь 7' = г1р,и = гчр,13 = ги_р, ...,р = гчр. Шаг 1. Полагаем:
xv =
clr - -
х;/, в остапьных случаях; в остапьных случаях,
«;:=«;-8<р» bP -=bP "V
(3)
Замечание. На самом деле, после общей итерации получено х увеличивающих путей. Поэтому шаг 1 может быть осуществлен последовательно для всех Lst путей \ е Л',
t^T, s,t Ф 1,р , для которых величина min аs. min (с/Д bt - 5„ >0. При этом на каждом шаге поток будет увеличен на величину . После этого переходим к общей итерации.
После окончания работы алгоритма мы получим матрицу Х = х , элементы кото-
II Ияхя
рой Xj равны дуговым потокам по дуге (i, j)
Наука итехника, № 5, 2013
(если х(( < 0, то поток переносится из вершины /
в вершину /). Потоковая матрица Х , которая одновременно и решение задачи линейного программирования, являющейся математической моделью задачи о максимальном потоке, получается из матрицы Х следующим образом: х°=г| Ху х1;, 7,7 =1,77, где г| • - функция
Хевисайда. Кроме того, получены пути, по которым переносится поток, максимальный по сравнению с потоками по другим путям, ведущим из источников в стоки.
Обоснуем корректность описанного алгоритма. Заметим вначале, что теорема о максимальном потоке и минимальном разрезе [3] не имеет места, если мощность источника или стока ограничена даже для задачи с одним источником и стоком. После завершения работы
алгоритма имеем та^ттСа .й',, А.)] = 0.
1С .V
рт
Если а1 = 0,7'е £ или Ь/ = 0,/е Т, то ситуация тривиальна (использованы все мощности источников или стоков). Пусть I = /е .V/> 0 ,
./ = / е 1' IЬ! > 0 , тогда увеличение потока
возможно только из источников множества I в стоки множества Но так как с! '. — 0 V/ е /,
/ е./, то, как было показано в [2], любой путь,
ведущий из источника множества I в сток множества 3, содержит дугу, пропускная способность которой равна нулю. Таким образом, увеличение потока невозможно. То есть получен максимальный суммарный поток из источников множества в стоки множества Т, найдена потоковая матрица Х и получены пути переноса потока с указанием его объема.
Сходимость приведенного алгоритма, если исходные данные - целые числа (задача с рациональными исходными данными легко сводится к целочисленному случаю), легко следует из следующих соображений. Любой поток, полученный в процессе работы алгоритма, определяет базисное решение соответствующей задачи линейного программирования. В силу унимоду-лярности матрицы ограничений последней, поток, полученный на каждой итерации, будет целочисленным [4], а следовательно, величина увеличения потока - целое число. Поскольку величина потока ограничена (пропускной спо-
плп
собностью любого разреза), алгоритм сходится за конечное число итераций.
Проиллюстрируем работу алгоритма на следующем примере. Рассмотрим задачу построения многополюсного потока в сети, заданной матрицей пропускных способностей дуг
D =
0 5 5 5 15 0 0
5 0 10 15 20 0 0
5 10 0 8 0 10 0
5 15 8 0 5 10 15
15 20 0 5 0 10 10
0 0 10 10 10 0 6
0 0 0 15 10 6 0
где вершины £ = 1, 2 являются источниками потока, а множество вершин Т = 6, 7 - стоками. Мощность источника 2 ограничена и равна а2 = 30 единиц. Сеть, заданная матрицей Д изображена на рис. 1 (числа около дуг -их пропускные способности).
10
Рис. 1
Полагаем элементы потоковой матрицы X" = х° равными нулю. Тогда /) = /).
II « 117x7
Общая итерация. £>=£>. Осуществив тернарные операции (1) и (2) над матрицей
1) = I с/„ , получаем:
D =
0 15 10 15 15 10 15
15 0 10 15 20 10 15
10 10 0 10 10 10 10
15 15 10 0 15 10 15
15 20 10 15 0 10 15
10 10 10 10 10 0 10
15 15 10 15 15 10 0
R =
5 5 5 5 5 5 5
5 5 3 4 5 3 4
2 2 2 2 2 6 2
2 2 2 2 2 6 7
1 2 2 2 2 6 2
5 3 3 4 5 3 4
4 4 4 4 4 4 4
517 =max[min(a^dg ,ЬЛ] = с1 n =15 >0.
ieS jcT
Находим путь Х17: /]7 = 5, г-7 = 2, /;7 = 4 гА1=1, 1Л7 = 1,5 , 5,2 , 2,4 , 4,7 . Шаг 1. Полагаем
.— Х^ •— %24 '— •— ^ I 15 .— 15, Ху^ .— Х^ •— ^25 '— *— ^ 15 .— 15,
d*5 := d24 :=d*41 := 15 -15 := 0; d*52 := 5; d74 := d*42 := d*5l : = 15 +15 := 30; d*25 :=d'25 +15 := 20 +15 := 35; ax := ax - S17 = » -15 =
b7 :=b7 -517 =oo-15 =oo.
Далее последовательно для путей:
L27 = 2,4 , 4,7 ; Llft = 1, 5 , 5, 6
16 ■
L26= 2, 3 , 3, 6
находим:
Ь21 = min (a2,d24,d*47,b7) = min (30,0,0,°°) = 0; 816 = {ax,d*s,d*6,b6) = min (°<>,0,10,°°) = 0; S26 = min (a2,d23,d36,b6)-mm (30,10,10,°=>) = 10>0.
l'Jle-^6
Шаг 1 . Полагаем:
x23. — x23 + 526 —10, x36. — x36 + 526 —10, хбз • = хбз — 826 = —10, x32. = x32 — 526 = —10, ^23 • = ^23 — 826 = 0, di6. = d36 — 526 = 0,
d*63 = <4 + 526 = 2°; <4: = dh + 526 = 2°;
a2:=a2-10 = 20; b6 :=b6 -10 = °°.
Матрица Х имеет вид:
Наука итехника, № 5, 2013
Х =
0 0 0 0 15 0 0" ^56: - ^56 _ S26 =10-10 = 0;
0 0 10 15 -15 0 0 d65: = ¿4 + 526 =10 + 10 = 20;
0 -10 0 0 0 10 0 :=«,, -8o6 =20-10 = 10;
0 -15 0 0 0 0 15
-15 15 0 0 0 0 0
0 0 -10 0 0 0 0 Последовательно для путей:
0 0 0 -15 0 0 0 L27 = 2, 5 , 5, 7 ; L16 = 1, 4
4, 6
Полагаем гр := ], /./ = 1.7.
Общая итерация. £> = 1) . После осуществления операций (1), (2) над матрицей
D =
и матрицей R -
получаем:
D =
0 5 5 5 5 5 5
30 0 10 10 35 10 10
20 20 0 10 20 10 10
30 30 10 0 30 10 10
30 10 10 10 0 10 10
20 20 20 10 20 0 10
30 30 10 30 30 10 0
"2 2 3 4 4 2 2
5 5 5 5 5 5 5
2 2 2 2 2 2 2
2 2 6 6 6 2 2
1 6 6 6 6 6 7
3 3 3 4 4 3 3
4 4 4 4 4 4 4
Вычисляем тах|тт(с/(.с/,, ,Ь )] = 8о6 = 10> 0.
,/Е Т
Находим путь = 2, 5 , 5, 6 .
Шаг 1. По формулам (3) пересчитываем элементы:
х25 : = х25 +10 = -15 +10 = -5;
х56: = х56 +10 = 0 + 10 = 10;
х52: = х52 -10 = 15-10 = 5; Х65: = -^65 —10 = 0 —10 = —10; ^25 : = ^25 _ 526 = 35 -10 = 25;
L17 = 1, 2 , 2,5 ,(5,7) находим
8о7 = min = min (10,25,10,°°) =
= 10 > 0.
Шаг 1. По формулам (3) пересчитываем компоненты матриц D и X:
= х25 + 827 =-5 + 10 = 5; = х57 +527 = 0 + 10 = 10;
75
7 *
-'25
7 *
''57
7 *
4 52
7 "
4 75
= х75 -827 = 0-10 = -10; : = </., -д. =25-10 = 15; : </. о. =10-10 = 0; : </„. + 8. =15 + 10 = 25; : = ¿/72* + S27 =10 + 10 = 20;
а2 :=а2 -S27 =10-10 = 0; 67 := ö7 - S27 = °° -10 =
516= min (al,dv,b6) = mm(al,du,ci46,b6) =
l'jSiif
= min (oo,5,10,oo) = 5 > 0.
Шаг 7:
x14: = x14 +516 =0 + 5 = 5;
x46 ■ — x46 + 816 —0 + 5 — 5,
x41. — x41 — 816 — —5,
x • =x -8 =0-5 = -564 ' 64 u16 v J
14
J *
-'46
J *
-'41
752. — d52 + 826 —15,
А/ - 516 =5-5 = 0; C-8i6 =10-5 = 5; 74;+516 =5 + 5 = 10; 76;+516 =10 + 5 = 15;
: = - 5i6 = 00 - 5 = ° 6б:=6б-516=00-5 = <
Наука итехника, № 5, 2013
517 = min («j, d*2, d*25,d*57) = = min (« 5,15,0, °o) = 0.
Получена новая матрица Х
Матрица Х имеет вид
Х =
0 0 0 5 15 0 0
0 0 10 15 15 0 0
0 -10 0 0 0 10 0
-5 -15 0 0 0 5 15
-15 -5 0 0 0 10 10
0 0 -10 -5 -10 0 0
0 0 0 -15 -10 0 0
Полагаем г* :— у, /', у = 1,7. Переходим к общей итерации. После осуществления третьей общей итерации получим матрицы:
D =
" 0 5 5 5 5 5 5
15 0 5 5 15 5 5
15 20 0 8 15 5 5
15 30 8 0 15 5 5
30 25 5 5 0 5 5
20 20 20 15 20 0 6
20 30 8 30 20 6 0
"2 2 3 3 2 3 3"
5 5 1 1 5 1 1
2 2 4 4 2 4 4
R = 2 2 3 3 2 6 6
1 2 1 4 2 4 4
5 3 3 4 5 7 7
5 4 4 4 5 6 6
Поскольку «2 = 0, то max[min («,,<i,/,ö )] =
I-' S
j^T
= di6 = di7 = 5 > 0. С помощью матрицы R находим путь LJ7 = 1, 3 , 3,4 , 4, 6 , 6, 7 .
Шаг 1. По формулам (3) пересчитываем элементы потоковой матрицы X, матрицы модифицированных пропускных способностей D и мощности aJ, a2, b6, b7.
Для пути LJ6 = 1, 3 , 3,4 , 4,6 величина
516 = min Ц, d'hз, d*34 ,d*A6,b6) = = min (oo; 0,3,0,°°) = 0.
X =
0 0 5 5 15 0 0
0 0 10 15 5 0 0
-5 -10 0 5 0 10 0
-5 -15 -5 0 0 10 15
-15 -5 0 0 0 10 10
0 0 -10 -10 -10 0 5
0 0 0 -15 -10 -5 0
Полагая := /. /. / = 1.7. переходим к общей итерации, после осуществления которой получаем:
D =
" 0 5 5 5 5 0 0
15 0 5 5 15 0 0
15 20 0 5 15 0 0
15 30 13 0 15 0 0
30 25 5 5 0 0 0
20 20 20 20 20 0 1
20 30 13 30 20 11 0
"2 2 2 2 2 6 7"
5 5 5 5 5 6 7
2 2 2 2 2 6 7
R = 2 2 3 2 2 6 7
1 2 4 4 2 6 7
5 3 3 4 5 7 7
5 4 4 4 5 6 6
Так как та\11гпп (а,.с/,, .Ь.)| = (). то полу-
I'- .V ,/еГ
ченный двухполюсной поток является максимальным. Сеть с найденным потоком изображена на рис. 2. Первое число - пропускная способность дуги, второе - дуговой поток.
10, 10
■CD
5, 0
20, 5
10, 10
О
Рис. 2
Наука итехника, № 5, 2013
Потоковая матрица
0 0 5 5 15 0 0
0 0 10 15 5 0 0
0 0 0 5 0 10 0
0 0 0 0 0 10 15
0 0 0 0 0 10 10
0 0 0 0 0 0 5
0 0 0 0 0 0 0
Поскольку элементы / = 1, 2; ] = 6, 7,
то величину потока нельзя увеличить, даже если мощности источников и стоков будут не ограничены. Это означает, что любой путь, ведущий из источника в сток, содержит дугу с нулевой пропускной способностью («насыщенную» дугу). Множество таких дуг образует
минимальный разрез Я, Я , отделяющий источники от стоков. В случае необходимости, минимальный разрез Я, Я легко находится с
помощью матрицы В . Действительно, вершины множества и все вершины ], для которых
ХОТЯ бы ДЛЯ ОДНОГО 7 е > О, относятся к
_*
множеству Я, остальные (с!,, =0 \ZieS) -
к множеству Я . В рассматриваемом примере Я = {1, 2, 3, 4, 5}, Я = {6, 7}, минимальный раз-
рез R, R ={(3, 6), (4, 6), (4, 7), (5, 6), (5, 7)}
имеет пропускную способность, равную 55 единиц и равную величине максимального суммарного потока из источников S = {1, 2} в сток T = {6, 7}.
В Ы В О Д
Разработан новый алгоритм нахождения максимального потока в многополюсной сети, который основан лишь на матричном ее описании и не требует графического представления последней. В силу этого программная реализация данного алгоритма является очень простой, и он может быть использован при решении широкого круга проблем, математические модели которых могут быть сформулированы в терминах теории графов.
Л И Т Е Р А Т У Р А
1. Floyd, R. W. Aigorithm 97: Shortest Path. Communication of ACM / R. W. Floyd - 1962. - № 5 (6). - 345 p.
2. Корзников, А. Д. Моделирование и оптимизация процесса перемещения грузов в логистической транспортной системе / А. Д. Корзников, В. А. Корзников // Вестник БНТУ. - 2003. - № 6. - С. 54-60.
3. Форд, Л. Р. Потоки в сетях / Л. Р. Форд, Д. Р. Фал-керсон. - М.: Мир, 1963. - 276 с.
4. Veinott, A. F. Integer Extrime Points / A. F. Veinot, Jr. and G. B. Dantzig // SIAM. Revjew. - 1968. - No 10 (3). -Р. 371-372.
Поступила 22.04.2013
УДК 517.977
управляемость существенно разнотемповых сингулярно возмущенных динамических систем
Канд. физ.-мат. наук, доц. КОПЕЙКИНА Т. Б.1}, ГРЕКОВА А. В.2)
1 Белорусский государственный технологический университет, 2Белорусский национальный технический университет
В [1] была рассмотрена проблема управляемости разнотемповой сингулярно возмущенной динамической системы (РСВДС):
х = Аих + Аиу + Auz + Biii; ji у = А21х + А22у + A23z + В2и; \x2z = А31х + А32у + A33z + В3и,
(1)
Наука итехника, № 5, 2013