Научная статья на тему 'Новый алгоритм решения задачи о максимальном потоке'

Новый алгоритм решения задачи о максимальном потоке Текст научной статьи по специальности «Математика»

CC BY
918
78
i Надоели баннеры? Вы всегда можете отключить рекламу.
Журнал
Наука и техника
Область наук
Ключевые слова
АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ / МАКСИМАЛЬНЫЙ ПОТОК

Аннотация научной статьи по математике, автор научной работы — Корзников А. Д.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

New Algorithm for Solution of Maximum Flow Problem

A new algorithm for detection of a maximum flow in multi-terminal network. The algorithm is based on its matrices description and execution of ternary operations in respect of matrix elements pertaining to arc capacity. Therefore the algorithm does not require graphic network presentation. For this reason the programming realization of the developed algorithm is rather simple and it can be applied while solving a large scope of problems when mathematical models can be formulated in terms of a graph theory.

Текст научной работы на тему «Новый алгоритм решения задачи о максимальном потоке»

М А Т Е М А Т И К А

УДК 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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Общая итерация. £>=£>. Осуществив тернарные операции (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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Поступила 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

i Надоели баннеры? Вы всегда можете отключить рекламу.