Научная статья на тему 'Задача о максимальном потоке в сетях с потерями в вершинах'

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

CC BY
742
43
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ОРИЕНТИРОВАННЫЕ СЕТИ / ORIENTED NETWORKS / ПОТОКИ В СЕТЯХ / FLOWS IN NETWORKS / МАКСИМАЛЬНЫЙ ПОТОК / MAXIMAL FLOW / ПОТЕРИ ПОТОКА / LOSSES OF FLOW / МАКСИМИЗАЦИЯ ПОТЕРЬ / МИНИМИЗАЦИЯ ПОТЕРЬ / MINIMIZING OF LOSSES / MAXIMIZING OF LOSSES

Аннотация научной статьи по математике, автор научной работы — Скороходов Владимир Александрович, Шевелев Максим Валерьевич

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

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

Maximum Flow Problem in Networks with Losses at the Vertices

We consider a network with some properties: each vertex has an additional characteristic quantity flow losses. The peculiarity of such networks is that due to loss in some vertexes, the value of the flow is coming from the source can be not equal to the flow entering into the target. For such networks, the problem of maximizing of losses and the problem of minimizing of losses are considered. Algorithms of their decision are developed for each of the offered problems.

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

УДК 519.1

ЗАДАЧА О МАКСИМАЛЬНОМ ПОТОКЕ В СЕТЯХ С ПОТЕРЯМИ В ВЕРШИНАХ

© 2015 г. В.А. Скороходов, М.В. Шевелев

Скороходов Владимир Александрович - кандидат фи-зиико-математических наук, доцент, Институт математики, механики и компьютерных наук Южного федерального университета, ул. Мильчакова, 8а, г. Ростов н/Д, 344090, e-mail: pdvaskor@yandex.ru

Skorokhodov Vladimir Aleksandrovich - Candidate of Physical and Mathematical Science, Associate Professor, Institute of Mathematics, Mechanics and Computer Sciences of the Southern Federal University, Milchakov St., 8a, Rostov-on-Don, 344090, Russia, e-mail: pdvaskor@yandex.ru

Шевелев Максим Валерьевич - студент, Институт математики, механики и компьютерных наук Южного федерального университета, ул. Мильчакова, 8а, г. Ростов н/Д, 344090, e-mail: maximka.shevelyov@yandex.ru

Shevelev Maksim Valer'evich - Student, Institute of Mathematics, Mechanics and Computer Sciences of the Southern Federal University, Milchakov St., 8a, Rostov-on-Don, 344090, Russia, e-mail: maximka.shevelyov@yandex.ru

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

Ключевые слова: ориентированные сети, потоки в сетях, максимальный поток, потери потока, максимизация потерь, минимизация потерь.

We consider a network with some properties: each vertex has an additional characteristic - quantity flow losses. The peculiarity of such networks is that due to loss in some vertexes, the value of the flow is coming from the source can be not equal to the flow entering into the target. For such networks, the problem of maximizing of losses and the problem of minimizing of losses are considered. Algorithms of their decision are developed for each of the offered problems.

Keywords: oriented networks, flows in networks, maximal flow, losses of flow, maximizing of losses, minimizing of losses.

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

Так как найти максимальный поток в сети с потерями классическими методами нельзя, то решение данной задачи будем искать в два этапа: сначала отразим потери на графе нужным образом, далее воспользуемся классическими алгоритмами нахождения максимального потока. Подобный подход используется для решений задач на нестандартную достижимость на графе. Задачи нахождения потоков в сетях с нестандартной достижимостью подробно рассматривались в работах [1-6]. Основной подход к решению таких задач - построение вспомогательного графа О', который отражает особенности достижимости, и нахождение на нем максимального потока.

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

максимальный поток минимальной стоимости. Стоит отметить, что задача максимизации потерь решается проще, чем задача минимизации потерь.

Сети с потерями потока в вершинах

Рассмотрим сеть G(X,U, f) - связный ориентированный граф с двумя выделенными вершинами: источником 5 и стоком t. В классическом случае потоком в сети называется функция F: U ^ R+,

обладающая свойствами ограниченности и неразрывности (см. [7] ), т.е.

[Vx £ X £ F(u) = £ F(u);

иф]- U£[x]+

Vu £ U 0 < F(u) < c(u).

Здесь и далее через [x]- будем обозначать множество дуг, входящих в вершину x, а [x]+ - множество дуг, исходящих из вершины x.

Рассмотрим сеть G(X,U, f), для каждой вершины x которой задана неотрицательная величина

: X ^ [0, - максимально возможная потеря потока в этой. Всюду далее будем полагать, что Y(s) = Y(t)= 0, т.е. потери в источнике и стоке равны нулю. В такой сети будем рассматривать потоки с потерями в вершинах, т.е. функции F: U ^ R+ со следующими свойствами:

Vx £ X £ F(u) = £ F(u) + a(x) ,

u£ [x] u£ [ xf

Vu £ U 0 < F(u) < c(u) , (1)

где a(x) = minx), £ F(u)J - величина потери

J u£[x]+ J

потока в вершине x. Заметим, что 0 < a(x) < i^(x).

Определение 1. Сеть G(X,U, f), в которой рассматриваются потоки только с предложенными свойствами, будем называть сетью с потерями в вершинах.

Отметим, что в сети с потерями в вершинах vs (F) - величина потока F, исходящего из источника, - вообще говоря, не будет равна vt (F) - величине потока F, приходящего в сток.

Определение 2. Максимальным потоком в сети G(X,U,f) с потерями в вершинах будем называть поток F, удовлетворяющий условию (1) и максимальный по величине vs (F).

Для удобства везде далее будем полагать, что множество вершин разбито на два подмножества: X = Xl иX„, где Xl = {x£X |^(x)>0}, и X0 = X\Xl.

Пример 1. Рассмотрим сеть G с потерями в вершинах (рис. 1). Возле каждой дуги указана величина пропускной способности. Считаем, что ка-

ждая закрашенная вершина принадлежит множеству Хо, а каждая незакрашенная - множеству Х1 (величина \у(х) указана внутри вершин). У данной сети дуги {щ,...,щ} и вершины обладают следующими свойствами: / (щ ) = (&", х), с(щ )=3; /(Щ) = (Х,Х3), с(щ) = 3 ; /(щ) = (х1,Х2), с(щ) = 2 ; /(Щ) = (х,Х4), с(ы4) = \; /(щ) = (х2,Х4), с(ы5) = 2; /(Щ) = (х3,Х4) , с(ы6)=3; /(ы7) = (х4,/), с(ы7) = 2; ¥(хг) = 1, ¥(хъ) = 2.

Рис. 1. Сеть G с потерями в вершинах

Задача о максимизации потерь в сети

Рассмотрим задачу нахождения потока максимальной величины в сети с потерями в вершинах, удовлетворяющего условию (1), для которого суммарная величина потери потока максимальна, т.е.

£ a(x) ^ max . (2)

x£Xl

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

Поэтому для ее решения будем использовать вспомогательный граф G'(X',U' , f'), на котором найдем поток, обеспечивающий выполнение условия (2) для исходного графа. Далее определенным образом перенесем найденный поток на исходный граф и продолжим нахождение максимального потока на G, являющегося решением задачи. Алгоритмы нахождения классического максимального потока описаны в работах [7, 8] .

Вспомогательный граф G' будем строить по исходному графу G следующим образом: на исходном графе добавляем вершину xt, которая будет новым стоком, затем для каждой вершины x, такой что x £ Xj, добавляем дугу и, такую что f'(их ) = (x, xt). Пропускную способность каждой добавленной дуги и будем полагать равной величине \у(x).

Пример 2. Рассмотрим граф G на рис. 2а. Вспомогательный граф G показан на рис. 2б.

J2I l/X*

#-

s 3 У-'

1

а

б

Рис. 2. Исходный граф О (а) и вспомогательный граф О' (б)

Теорема 1. Решение задачи нахождения максимального потока при условии (2) может быть найдено при помощи следующего алгоритма.

Алгоритм 1. Шаг 1. Находим максимальный поток ¥' в сети О' из 5 в х1.

Шаг 2. Полученный поток ¥' переносим на исходную сеть О следующим образом: У и еи ' ¥''(и) := ¥'(и).

Шаг 3. Пока это возможно, продолжаем насыщение сети О потоком из 5 в ?. Таким образом будет найден поток Е, который является решением рассматриваемой задачи нахождения потока в исходной сети О с потерями в вершинах при условии максимизации потерь (2).

Доказательство. Условие (2) означает, что необходимо пропустить поток в первую очередь через вершины, в которых происходит потеря потока (т.е х е Х1). Таким образом, весь поток, который можно максимально потерять, будет потерян.

Рассмотрим результат выполнения шага 1. Для любой достроенной дуги их графа О' возможны две ситуации:

1. Её пропускная способность равна величине потока (т.е. с(их ) = ¥' (их)). Это означает, что через вершину х пропущен поток величины \у(х). Зна-

FffKJ «

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

2. Её пропускная способность больше величины потока (с(их) > ¥'(их)). Это означает, что через вершину х пропущен поток, меньший \у(х). Следова-

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

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

Насыщение сети О потоком из вершины 5 в вершину ? на шаге 3 для каждой вершины х не меняет величины а(х). Это означает, что условия (1) и (2) для результирующего потока Е выполнены и при этом поток Е с потерями является максимальным.

Теорема доказана.

Вычислительная трудоемкость алгоритма 1 определяется трудоемкостью нахождения максимального классического потока и в данном случае ограничена величиной 0(п2 * т) [9], где п =\ X |, т =\и |.

Пример 3. Рассмотрим сеть О с потерями потока в вершинах (рис. 3). Дуги {щ,..., и7} и вершины обладают свойствами такими же, как и в примере (1).

1

Рис. 3. Исходная сеть G Построим вспомогательный граф G' (рис. 4).

Рис. 4. Вспомогательная сеть G'

Выполним действия этапа 1. Полученный поток показан на рис. 5.

Заметим, что для вершин х2 и х3 с(и ) = ¥ '(и )

и с(их^) = ¥'(и ). Это означает, что через эти вершины пропущен поток величины \у(хг) и \у(хъ) соответственно, т.е. потери в данных вершинах являются максимально возможными.

Рис. 5. Поток в сети G' после выполнения этапа 1

Выполним действия этапа 2. Перенесем найденный на предыдущем этапе поток на исходный граф

О (рис. 6).

Рис. 6. Поток в сети G после выполнения этапа 2

Выполним действия этапа 3. Найдем максимальный поток на графе G. Заметим, что поток, показанный на рис. 6, максимальной величины. Следовательно, окончательное решение задачи нахождения максимального потока в сети G c потерями в вершинах уже найдено.

Задача о минимизации потерь в сети

Рассмотрим задачу нахождения потока максимальной величины в сети с потерями, в вершинах удовлетворяющего условию (2), для которого суммарная величина потери потока минимальна, т.е.

£a(x) ^ min. (3)

x£Xi

Для поиска такого максимального потока F на графе G, что выполняется условие (3), будем применять алгоритм 2, основанный на алгоритме нахождения максимального потока минимальной стоимости [9]. Для этого с каждой дугой u £ U свяжем величину b(u) - стоимость прохождения по ней единицы потока.

Теорема 2. Решение задачи нахождения максимального потока при условии (3) может быть найдено при помощи следующего алгоритма.

Алгоритм 2. Шаг 1. На исходной сети G для любой вершины x, такой что x £ X,, величину стоимости b(u) для каждой дуги и, входящей в x, полагаем равной b(u) = min{c(u), \y(x)}. Для всех остальных дуг стоимость полагаем равной нулю.

Шаг 2. Выполняем одну итерацию алгоритма нахождения максимального потока минимальной стоимости при условии, что искомый поток на данной итерации будет единичной величины. В результате такой итерации получим увеличивающую цепь /л = {и1,...,ик}. Для нее определим величину

насыщения e(f) = mm(c(ut) - F(щ)).

i=\,...,k

Шаг 3. Если такой цепи не найдено, то делаем вывод, что поток F является максимальным и алгоритм заканчивает работу.

Шаг 4. Введем в рассмотрение величину a —

фактические потери потока при насыщении цепи f . Положим a =0 (так как насыщение по найденной цепи не происходило, а значит, потерь не было).

Шаг 5. Произведем насыщение сети G потоком по найденной цепи, причем делать это будем последовательно для каждой дуги этой цепи, начиная с первой.

Рассмотрим дугу щ = f(i) Vi £ [1; к \. Если ее стоимость равна нулю (b(ui) = 0), то выполняем насыщение следующим образом: F(ui) := F(ui) + e(f) - af,

иначе выполняем следующую последовательность действий: F(ui) := F(щ) + e(ff) - a ,

aM := a^ + mm(y(x), ef) - aM), \y(x) := x) - aM.

Шаг 6. Возвращаемся к шагу 1.

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

Вычислительная трудоемкость алгоритма 2 определяется трудоемкостью нахождения максимального классического потока минимальной стоимости и в данном случае ограничена величиной O(n3 * m) (см. [9]), где n =\ X |, m =\U |.

Пример 4. Рассмотрим сеть с потерями, приведенную на рис. 7, дуги и вершины которой обладают такими же свойствами, как и в примере (1).

Рис. 7. Исходная сеть

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

На рассматриваемой сети для поиска максимального потока такого, что выполняется условие (3), применим алгоритм 2:

Итерация 1.

1.1. Стоимости дуг устанавливаются следующим образом: Ъ(щ ) = 0, Ь(и2 ) = 2, Ъ(щ ) = 1, Ъ(и4) = 0, Ъ(и5) = 0, Ъ(и6) = 0, Ъ(и7) = 0.

1.2. В сети О находим увеличивающую цепь /л = {и1 , и4 , щ } минимальной стоимости (в качестве

последовательностей вершин: /: 5 — х — х — *),

при этом е(л) = 1.

1.3. Полагаем фактические потери равными нулю (т.е а := 0).

1.4. Произведем насыщение сети О по цепи / . Рассмотрим первую дугу пути / : /(1) = щ .

Поскольку Ъ (щ ) = 0, выполняем насыщение ¥(щ ):= ¥(щ ) + е(л) - а^ = 0 +1-0 = 1.

Рассмотрим вторую дугу пути / Поскольку Ъ(и4 ) = 0, выполняем

f (2) = м4 . насыщение

F (и4) := F (и4) + e(f) - au = 0 + 1 - 0 = 1.

Рассмотрим четвертую дугу пути / : /(4) = щ . Поскольку Ъ(и7) = 0, выполняем насыщение ¥(щ ):= ¥(щ ) + е(л) - а =1 + 2-1 = 2.

Итерация 3.

3.1. Произведем пересчет стоимости дуг следующим образом: Ъ(щ) = 0, остальные стоимости не изменились.

Поскольку на полученном графе О невозможно построить ни одну увеличивающую цепь / , алгоритм 2 заканчивает работу. Полученный поток представлен на рис. 8.

Рассмотрим третью дугу пути / : /(2) = щ . Поскольку Ъ(и1 ) = 0, выполняем насыщение ¥(щ ):= ¥(щ) + е(л) - ^ =0 + 1 - 0 = 1. Итерация 2.

2.1. Поскольку на предыдущей итерации ни одна из величин ^(х) не изменилась, то величины Ъ(и) остались прежними.

2.2. В сети О находим увеличивающую цепь / = {щ, щ, щ, щ} минимальной стоимости (в качестве

последовательностей вершин: /: 5 — х — х — х — *), при этом е(л) = 2 .

2.3. Полагаем фактические потери равными нулю (т.е а := 0 ).

2.4. Произведем насыщение сети О по цепи / . Рассмотрим первую дугу пути / : /(1) = щ .

Поскольку Ъ(щ ) = 0, выполняем насыщение ¥(щ ):= ¥(щ) + е(л) - ^ =1 + 2 - 0 = 3.

Рассмотрим вторую дугу пути / : /(2) = щ . Поскольку Ъ(щ) = 0, выполняем следующие действия:

¥ (щ ):= ¥ (щ ) + е(/) - ^ =0 + 2 - 0 = 2,

а^ := а^ + шш{ 1,2} = 0 +1 = 1, ¥(х2):=¥(х2) - а/ =1-1 = 0. Рассмотрим третью дугу пути / : /(3) = щ . Поскольку Ъ(и5 ) = 0, выполняем насыщение с" 3-8

Рис. 8. Найденный поток

Замечание 1. Если в описании алгоритма 2 на шаге 2 пропускную способность насыщающей цепи f вычислять по формуле

cf) = min | jmin |ф,.) - F(u.), j ((p2 о f)(uJ ))||, (4)

то количество итераций при применении алгоритма сократится.

Это произойдет по той причине, что цепь f ,

пропускная способность которой вычислена по формуле (4), будет полностью насыщена, тогда как при строгом применении алгоритма насыщение некоторых цепей разбивается на два этапа: насыщение с потерями и насыщение без потерь. Данная ситуация представлена в примере 4 - итерации 2 и 3, а также итерации 4 и 5.

Авторы выражают благодарность своему учителю Я.М. Ерусалимскому за поддержку и постоянное внимание к их научной работе.

Литература

1. Ерусалимский Я.М., Логвинов С.Ю. Некоторые задачи достижимости на графах с ограничениями // Изв. вузов. Сев.-Кавк. регион. Естеств. науки. 1996. № 2. С. 14 - 17.

2. Ерусалимский Я.М., Скороходов В.А. Потоки в сетях со связанными дугами // Изв. вузов. Сев.-Кавк. регион. Естеств. науки. Приложение. 2003. № 8.

F(u ):= F(u) + e(f) - a =0 + 2-1 = 1.

3. Ерусалимский Я.М., Водолазов Н.Н. Нестационарный поток в сети // Вестн. ДГТУ. 2009. Т. 9, № 3(42). С. 402 - 409.

4. Скороходов В.А., Ерусалимский Я.М. Нестандартная достижимость на графах: модели и алгоритмы. Saarbrücken, Germany. 2011. 188 p.

5. Скороходов В.А. Потоки в обобщенных сетях со связанными дугами // Моделирование и анализ информационных систем. 2012. Т. 19, № 2. С. 4-52.

6. Скороходов В.А. Задача о перераспределении ресурсов на графах с нестандартной достижимостью // Изв. вузов. Сев.-Кавк. регион. Естеств. науки. 2010. № 1. С. 22-26.

7. Ерусалимский Я.М.Дискретная математика: теория, задачи, приложения. М., 2001. 279 с.

8. Водолазов Н.Н., Ерусалимский Я.М. Максимальный всплеск в сети и максимальный объем сети // Изв. вузов. Сев.-Кавк. регион. Естеств. науки. 2010. № 6. С. 9-13.

9. Басакер Р., Саати Т.Л. Конечные графы и сети. М., 1974. 368 с.

References

1. Erusalimskii Ya.M., Logvinov S.Yu. Nekotorye zadachi dostizhimosti na grafakh s ogranicheniyami [Some problems reachability graph with restrictions]. Izvestiya vuzov. Severo-Kavkazskii region. Estestvennye nauki, 1996, no 2, pp. 14-17.

2. Erusalimskii Ya.M., Skorokhodov V.A. Potoki v setyakh so svyazannymi dugami [Flows in networks with

Поступила в редакцию

related arcs]. Izvestiya vuzov. Severo-Kavkazskii region. Estestvennye nauki. Prilozhenie, 2003, no 8, pp. 3-8.

3. Erusalimskii Ya.M., Vodolazov N.N. Nestatsio-narnyi potok v seti [Unsteady flow in the network]. Vest-nik DGTU, 2009, vol. 9, no 3(42), pp. 402-409.

4. Skorokhodov V.A., Erusalimskii Ya.M. Nestan-dartnaya dostizhimost' na grafakh: modeli i algoritmy [Custom reachability graph: models and algorithms]. Saarbrücken, Germany, 2011, 188 p.

5. Skorokhodov V.A. Potoki v obobshchennykh se-tyakh so svyazannymi dugami [Flows in generalized nets with related arcs]. Modelirovanie i analiz informatsion-nykh sistem, 2012, vol. 19, no 2, pp. 41-52.

6. Skorokhodov V.A. Zadacha o pereraspredelenii re-sursov na grafakh s nestandartnoi dostizhimost'yu [The problem of the redistribution of resources on graphs with non-standard attainable]. Izvestiya vuzov. Severo-Kavkazskii region. Estestvennye nauki, 2010, no 1, pp. 22-26.

7. Erusalimskii Ya.M. Diskretnaya matematika: teo-riya, zadachi, prilozheniya [Discrete mathematics: the theory, tasks application]. Moscow, 2001, 279 p.

8. Vodolazov N.N., Erusalimskii Ya.M. Maksim-al'nyi vsplesk v seti i maksimal'nyi ob"em seti [The burst in the network and the maximum network]. Izvestiya vu-zov. Severo-Kavkazskii region. Estestvennye nauki, 2010, no 6, pp. 9-13.

9. Basaker R., Saati T. Konechnye grafy i seti [Finite graphs and networks]. Moscow, 1974, 368 p.

_3 апреля 2015 г.

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