Научная статья на тему 'Максимальный всплеск в сети и максимальный объем сети'

Максимальный всплеск в сети и максимальный объем сети Текст научной статьи по специальности «Математика»

CC BY
98
22
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
граф / стационарный поток / динамический поток / величина потока / Graph / Stationary flow / Dynamic flow / amount of flow

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

Рассматривается динамический поток в сети с дискретным временем. Даны определения максимального всплеска (максимальная величина динамического потока, входящая в сток в некоторый момент времени) и объема сети (макимальная величина динамического потока, находящегося в сети в некоторый момент времени). Представлены алгоритмы нахождения динамического потока, дающего максимальный всплеск, и динамического потока, имеющего максимальный объем.

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

Dynamic network flow with discrete time is considered. Definitions of maximal surge (maximal value of dynamic flow entering sink node in some period) and volume of network (maximal value of dynamic flow present in network in some period) are given. Algorithms for finding dynamic flow with maximal surge and maximal value are presented.

Текст научной работы на тему «Максимальный всплеск в сети и максимальный объем сети»

УДК 519.1

МАКСИМАЛЬНЫЙ ВСПЛЕСК В СЕТИ И МАКСИМАЛЬНЫЙ ОБЪЕМ СЕТИ

© 2010 г. Н.Н. Водолазов, Я.М. Ерусалимский

Южный федеральный университет, Southern Federal University,

ул. Мильчакова, 8а, г. Ростов н/Д, 344090 Milchakov St., 8a, Rostov-on-Don, 344090

Рассматривается динамический поток в сети с дискретным временем. Даны определения максимального всплеска (максимальная величина динамического потока, входящая в сток в некоторый момент времени) и объема сети (макимальная величина динамического потока, находящегося в сети в некоторый момент времени). Представлены алгоритмы нахождения динамического потока, дающего максимальный всплеск, и динамического потока, имеющего максимальный объем.

Ключевые слова: граф, стационарный поток, динамический поток, величина потока.

Dynamic network flow with discrete time is considered. Definitions of maximal surge (maximal value of dynamic flow entering sink node in some period) and volume of network (maximal value of dynamic flow present in network in some period) are given. Algorithms for finding dynamic flow with maximal surge and maximal value are presented.

Keywords: graph, stationary flow, dynamic flow, amount of flow.

В работах [1, 2] описаны задачи нахождения максимального потока на динамических периодических графах. Для обыкновенных ориентированных графов введено дискретное время Т; рассмотрены динамические графы, множество дуг которых представляет собой объединение двух непустых непересекающихся подмножеств, называемых множеством обычных и множеством временных дуг; г - функция активности. Временные дуги графа доступны для прохождения не в любой момент времени, а только в периоды активности.

В [3] найдено ограничение на среднюю величину потока. Показано, что в некоторые моменты времени величина динамического потока может превышать среднюю величину потока.

В данной работе, которая является продолжением [1 - 3], рассматриваются динамические графы [4], т.е. графы с дискретным временем в том же понимании, что и в [1, 2], при этом предполагается, что все дуги графа обычные (множество временных дуг пусто).

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

1) нахождение максимального всплеска на графе -потока, имеющего максимально возможную величину в какой-то момент времени, не заданный заранее;

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

Постановка задачи

Пусть дан граф 0(У, Е, р, с), где V - множество вершин; Е - множество дуг; р: Е ^ V XV;

с : Е ^ 2+ - пропускная способность (ПС) дуги. Пусть ©_ (и), ©+ (и) - множество дуг, входящих и выходящих из вершины и. Рассматриваются графы с целочисленными ограничениями на ПС, однако все приведенные ниже алгоритмы можно применить и к графам с рациональными ПС. Если они - рациональные числа, то можно получить эквивалентную целочисленную задачу, умножив все ПС на целое число.

Определение 1. Стационарным потоком на графе 0(У, Е,р, с) называется отображение /: Е ^ Я+, удовлетворяющее условиям:

£ /(е)= £ /(еХ VиeV,и^ г,

ее0_ (и) ее©+ (и)

10 < f(e) < c(e), Ve е E,

(1)

где s - источник; r - сток.

Величиной стационарного потока является величина потока через любой разрез графа G, в частности,

Z f (e) - Z f (e).

ee®_ (r) ee®+ (r)

Определение 2. Динамическим потоком на G(V, Е,ф, c) называется отображение f : E х Z ^ R+, удовлетворяющее следующим условиям:

( Z f(e,t)= Z f(e,t + 1), MveV,vt s,vt r, Mt e Z,

■Le®-(v) ee®+ (v) (2)

[0 < f (e,t) < c(e), Me e E, Mt e Z.

Считаем, что суммарный поток, выходящий из вершины в момент времени t +1, равен суммарному потоку, входящему в вершину в момент времени t .

Определение 3. Величиной потока f в момент времени t назовем Q (t)= Z f (e,t), т.е. суммар-

ee®- (r )

ный поток, входящий в сток сети в момент времени t . Определение 4. Величиной потока f на интерва-

T2

ле [TiT] назовем V(f,[T{,T2])= Z Z f(e,t), т.е.

t=T1 ee®- (r)

суммарный поток, входящий в сток сети за промежуток времени от T до T .

Определение 5. Назовем вершину v достижимой потоком, если существует путь из источника в сток, проходящий через эту вершину.

Очевидно, присутствие в графе недостижимых потоком вершин не влияет на величину потока, поэтому их можно удалить из графа при поиске максимального динамического потока и максимального всплеска. Определение 6. Пусть дан интервал времени

V ( f T )

[T ;T2 ], T = T - T +1. Тогда ——--средняя величина динамического потока на промежутке [T;T2].

Для анализа динамического потока по исходному графу О можно построить вспомогательный граф О'(V,Е,р,С). Это стандартный способ расширения

сети по времени, используемый в [5]. Каждой вершине исходного графа V е V поставим в соответствие Т + 1

вершину V0,V1,v2,...,vT . Каждой дуге е :р(е) = (и,V) исходного графа поставим в соответствие Т дуг е': р(е') = (и',V+1), ' =0,...Т-1; ПС каждой дуги е' положим равной ПС дуги е исходного графа с'(е') = с(е). Уровнем вершины V' вспомогательного графа назовем Ь(у') = '. Пусть о(у,') - вершина '-го уровня вспомогательного графа, поставленная в соответствие вершине V исходного графа. Прообраз вершины а' вспомогательного графа на исходном обозначим р(а'). Уровнем ' вспомогательного графа назовем множество всех его вершин {V: Ь(у) = г} и множество всех его дуг, входящих в эти вершины.

По стационарному потоку /' на вспомогательном графе О можно построить динамический поток для графа О . Для этого положим /(е, ') = /'(е'). Из выполнения условий (1) для /' следует выполнение условия (2) для / . При этом величина стационарного потока /' на О' равна величине потока в момент времени Т2 на графе О (по определению величины потока в момент времени '). Аналогично по любому динамическому потоку, имеющему величину Q в момент времени Т , можно построить стационарный поток величины Q на вспомогательном графе.

Нахождение максимального всплеска

Определение 7. Назовем максимальным всплеском в сети О величину W = max ^ ('), где Е - множе-

'е2, /' е^

ство всех динамических потоков на графе О .

Покажем, что определение 7 корректно для случая целочисленных ПС. По определению 3 2 /(е,') < 2 с(е), т.е. Qf (') ограничена сверху

ее&_ (г ) ее&_ (г )

суммарной ПС дуг, входящих в сток.

Рассмотрим 2 интервала времени: [Т ';Т2'] и [Т ";Т2"]. Можно построить вспомогательный граф для каждого из них и найти максимальный поток с помощью алгоритма Эдмондса-Карпа [6]. Для графов с целочисленными ПС он будет целочисленным и, следовательно, максимальный поток на 2 вспомогательных графах будет отличаться не менее чем на 1. Так как величина потока ограничена сверху и при увеличении интервала может увеличиваться не менее чем на 1, то максимум из определения 7 достигается на некотором интервале времени. Если заранее известен такой интервал, то для нахождения максимального всплеска можно применить алгоритм нахождения максимального динамического потока. Приведем алгоритм, который позволяет находить максимальный всплеск, когда такой интервал неизвестен.

Модифицируем известный алгоритм Эдмондса-Карпа. В отличие от классической реализации в приведенном ниже алгоритме поиск увеличивающей цепи производится не из источника, а из стока. Алгоритм во время работы будет строить вспомогательный граф О', добавляя новые уровни по мере необходимости. Считаем, что в начале работы О' - пустой. Для алгоритма понадобится очередь помеченных вершин вспомогательного графа О'. Для определенности положим Т = 0 , Т будет определено алгоритмом.

В алгоритме вершина будет помечаться меткой вида (а, Ь, ё), которая для вершины V означает, что V помечена из вершины а ; Ь = «+», если V помечена по дуге е: <р' (е) = (а, V) и Ь = «-», - е: р (е) = а); ё -величина, на которую может быть увеличен поток из V в сток. Для стока значения а и Ь не определены, а ё = да . Опишем подробно модифицированный алгоритм, который мы назвали алгоритмом Эдмондса-Карпа с обратным поиском.

1. Для каждой вершины V еV графа О добавим

в О вершину V .

2. Обозначим текущий уровень графа О ' и положим его равным 0.

3. Начальный поток /' на графе О' не определен ни на одной дуге.

4. Ищем увеличивающую цепь из стока в один из источников.

a. Пометим сток меткой (~, да), очистим очередь помеченных вершин и добавим сток в очередь.

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

г Выбираем одну вершину а из очереди.

п. Если ' = у , то расширяем граф О' вниз. Для каждой вершины V еV графа О добавим в граф О' вершину V-1. Для каждой дуги е е Е :р(е) = (и, V) графа О добавим в граф О' дугу е' е Е: р'(е') = (и11,V1), определим /' на дуге е' как /'(е') = 0 . Положим ' = у -1.

ш. Для каждой непомеченной вершины Ь , смежной с а : если Ь смежная с а по дуге е:р<(е) = (Ь,а'') и е ненасыщена, то пометим Ь меткой (а1,+, ё(Ь)), где ё(Ь) = min(c(Ь, а]) - /'(Ь, а]), ё(а])). Если Ь смежная с а по дуге е: <р(е) = (а*1 ,Ь) и е нагружена, то пометим Ь меткой (а1,-, ё(Ь)), где ё(Ь) = шт(/'(ау,Ь), ё(а})).

Добавим Ь в очередь помеченных вершин. Если а -один из источников, то найдена увеличивающая цепь из источника в сток. Восстановим увеличивающую цепь по меткам и изменим поток по дугам цепи: пройдем по ним от источника к стоку, и если конечная вершина дуги е помечена знаком «+», то присвоим /'(е') = /'(е') + ё(и), если знаком «-», присвоим /'(е') = /(е') - ё(и). Перейдем на шаг 4.

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

с результатом О и / . По графу О можно восстановить динамический поток на исходном графе О.

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

Если на шаге 4.Ь.и при рассмотрении вершины а, выбранной на шаге 4.Ьл из очереди помеченных вершин, был добавлен новый уровень во вспомогательный граф О , то, так как рассматривается граф без недопустимых для потока вершин, на исходном графе существует цепь из р(а) в сток. Пусть длина этой цепи равна к , к < п, где п - число вершин в исходном графе. Цепь проходит по его вершинам V, V,•••,V*. На шаге 4.2.ш о^2,' -1) будет добавлена в очередь помеченных вершин.

Всего вершин во вспомогательном графе на этом шаге п(' +1), следовательно, в очереди не более п(' +1) вершин. Тогда возможны 2 варианта: 1) за не более чем п(' +1) шагов будет найдена увеличивающая цепь; 2) алгоритм на шаге 4.2л выберет из очереди о(уг,' -1) и добавит о(^,' - 2) в очередь помеченных вершин. Теперь во вспомогательном графе п(' + 2) вершин и, следовательно, в очереди помеченных вершин не более п(' + 2) вершин. Алгоритм, просмотрев их, либо найдет увеличивающую цепь, либо выберет из очереди вершину о(^,' - 2) на шаге

4.2л и добавит о^4,' -3). Таким образом, не более чем за п(' + 1) + п(' + 2) + п(' + 3) + •.. + п(' + к) =

(' + к + 1)(' + к + 2\ = п(---) шагов алгоритм выберет на

шаге 4.2л вершину о(ук,' - к + 1) и найдет увеличивающую цепь.

По стационарному потоку /', найденному алгоритмом на вспомогательном графе О', можно получить динамический поток / , как описано выше. Поток по дугам, не входящим в интервал времени, полученный алгоритмом, положим равным 0. Докажем, что алгоритм находит поток, величина которого в момент времени 0 совпадает с максимальным всплеском. Предположим, что поток, найденный алгоритмом, имеет величину в момент времени 0 меньше величины максимального всплеска. Из корректности определения следует, что существует поток / , отличный от нуля лишь на некотором интервале [Т";Т2"]. Его величина в момент времени Т2'' совпадает с максимальным всплеском и больше величины

/ в момент времени ' - 0. Можно сдвинуть поток /'', положив /''(е,') = /''(е,' -Т2"). Тогда максимальный всплеск будет достигаться сдвинутым / в момент времени 0, и / будет отличен от 0 на интервале [Т ;0] . Построим вспомогательный граф О для этого интервала времени.

Возможны 3 варианта:

1. Граф О'' имеет столько же уровней, сколько и граф О .

2. Граф О имеет меньше уровней, чем граф О .

3. Граф О имеет больше уровней, чем граф О .

Рассмотрим 1-й случай. Граф О совпадает с графом О'', но величина потока /'' больше /'. Значит поток / , найденный предложенным алгоритмом, не максимален. Тогда из теоремы Форда - Фалкерсона [7] следует, что для О' и /', полученного на последнем шаге алгоритма, существует увеличивающая цепь из одного из источников в сток (цепь из источника в сток, в которой каждая дуга, направленная от источника к стоку, ненасыщена, а каждая дуга, направленная от стока к источнику, нагружена). Так как ни один из источников не был помечен на последнем шаге алгоритма, а сток помечается на каждом шаге, эта цепь частично проходит через помеченные вершины, а частично через непомеченные. Пусть 1-я помеченная вершина в цепи (если считать от источника) - и , предыдущая - V. Они соединены дугой увеличивающей цепи. Это дуга е :р(е) = (и, V) либо е (е) = ^, и). Если они соединены дугой е: р(е) = (и, V), то из того,

что это дуга увеличивающей цепи, следует, что она ненасыщена. Но тогда алгоритм пометил бы вершину

V на шаге 4. Если это дуга е: р'(е) = ^,и), то, так как это дуга увеличивающей цепи, она нагружена, и получаем, что алгоритм должен был пометить вершину

V на шаге 4. Таким образом, получено противоречие, и поток / не может иметь величину большую, чем величина потока / на О .

Рассмотрим 2-й случай. Граф О имеет меньше уровней, чем О , величина потока / больше величины потока / . Добавим в граф О столько уровней, чтобы их число совпало с количеством уровней в О . Поток / на добавленных уровнях положим равным 0. Он удовлетворяет условиям (1) и имеет ту же величину, что и / . Но по 1-му пункту этот поток не может иметь величину, большую величины потока / .

Рассмотрим 3-й случай. Граф О'' имеет больше уровней, чем О , величина потока / больше величины потока /'. Расширим поток /' на О'', положим его равным 0 на принадлежащих О и не принадлежащих О' дугах. Поток /' не максимален на графе О . Следовательно, существует увеличивающая цепь. Но на исходном графе О' ее не было, значит эта цепь частично проходит по добавленным дугам. Пусть V - 1-я вершина цепи (если считать от стока), не принадлежащая О , а и - предыдущая (если считать от стока) вершина. Тогда из стока в вер-

шину V существует увеличивающая цепь, и вершина

V должна быть помечена алгоритмом. Следовательно, на шаге 4.Ь.п в граф О' был бы добавлен еще один уровень, содержащий вершину и, что противоречит тому, что и не содержится в О'. Таким образом, доказана

Теорема. Алгоритм Эдмондса-Карпа с обратным поиском находит максимальный всплеск на графе О'.

Нахождение потока, имеющего максимальный объем

Определение 8. Назовем объемом потока / на графе О(у, Е,р, с) в момент времени ( величину

А (()= £ Г (е, г).

ееЕ

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

Подобная задача решена в [8], где ищется не максимальный поток из источника в сток, а максимальный поток, циркулирующий в сети. При этом условия (2) должны выполняться во всех вершинах сети, начиная с некоторого момента времени. В отличие от [8] в нашей работе условия (2) выполняются для всех вершин, кроме источника и стока, во все моменты времени. Можно свести задачу поиска потока, имеющего максимальный объем, к задаче, решенной в [8], добавив дугу неограниченной ПС из стока в источник на исходном графе и применив алгоритм, изложенный в [8]. Приведем способ решения этой задачи с помощью алгоритма Эд-мондса-Карпа с обратным поиском.

Для определенности будем искать поток с максимальным объемом в нулевом уровне. Из определения 8 следует, что объем потока в момент времени Т совпадает с величиной потока, проходящего через разрез (Б, К) вспомогательного графа О', такой, что

V е Б , если V: Ь(у) < Т, V е К, если V: Ь(у) > Т. Для нахождения потока, имеющего максимальный объем в некоторый момент времени, нужно максимизировать поток, проходящий через такой разрез на вспомогательном графе. Приведем алгоритм поиска потока, имеющего максимальный объем.

1. Найдем максимальный всплеск на графе О , используя алгоритм Эдмондса-Карпа с обратным поиском. Алгоритм построит вспомогательный граф О'. Дальше будем максимизировать поток на верхнем уровне вспомогательного графа, полученного на этом шаге. Если максимальный всплеск равен 0, то максимальный объем равен 0, алгоритм завершен.

2. Добавим во вспомогательный граф новый сток гт. Соединим все стоки О' г' такие, что Ь(г') > 0 с новым стоком дугами е' неограниченной ПС. Поток на е' положим равным потоку, входящему в сток г' .

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

3. Соединим все вершины верхнего уровня О', кроме источника, со стоком гт дугами е неограниченной ПС. Поток по е положим равным 0. С помо-

щью 4 шага алгоритма Эдмондса-Карпа с обратным поиском найдем увеличивающую цепь в новый сток на графе О'.

4. Если увеличивающая цепь не найдена, алгоритм завершает работу, суммарная величина потока, проходящего через дуги нулевого уровня, равна величине максимального объема.

5. Увеличивающая цепь найдена. Так как поток через стоки г' в О' на каждом шаге максимален, то новая цепь проходит через одну из вершин верхнего уровня О', не являющуюся стоком. Пусть это вершина а . В силу того, что рассматриваются графы только с допустимыми для потока вершинами, на исходном графе существует путь из вершины р(а) в сток г. Пусть длина этого пути к , к < п, где п - количество вершин в исходном графе. Удалим из О' временные дуги е и добавим в него к новых уровней над верхним уровнем графа О', соединим их стоки со стоком

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

6. Переход на шаг 3.

Покажем, что алгоритм закончит свою работу за конечное время. На каждой итерации цикла из п. 3-6 алгоритм поиска максимального объема находит максимальный всплеск, используя алгоритм Эдмондса-Карпа с обратным поиском. Выше было показано, что алгоритм Эдмондса-Карпа с обратным поиском находит максимальный всплеск за конечное время. Нужно показать, что количество итераций цикла конечно. Выход из цикла происходит на шаге 4, если не найдена увеличивающая цепь ни в одну из вершин верхнего уровня вспомогательного графа О'. При этом величина потока из источников с уровнем меньше 0 в стоки с уровнем больше 0 ограничена величиной разреза (Б, К) вспомогательного графа О'. На каждом шаге

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

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

вне временного интервала, рассматриваемого алгоритмом, положим равным 0.

Покажем, что алгоритм находит поток, дающий максимальный объем в момент времени 0. Предположим, что на потоке g в некоторый момент времени достигается больший объем. Если он достигается не в момент времени 0, а в момент времени ? Ф 0 , то можно получить поток g', положив ¿(е, I) = g(e, / - ). Объем ^ в момент времени 0 равен объему g в момент времени / '.

Поток g' может быть отличным от 0 на дугах для любых моментов времени. Алгоритм получает поток, отличный от 0, лишь на некотором временном интервале. Для сравнения g' и / получим из потока g' стационарный поток g'' на вспомогательном графе О'', такой, что величина g'' через разрез (БД) равна объему потока g' в момент времени 0. В качестве О'' возьмем О', добавим к нему еще один источник ¿т. Соединим ¿Т со всеми вершинами нижнего уровня О , кроме его источника. Для каждой добавленной дуги к ' (к) = ^т, а') положим с(Н)= £ g' (к),

ее@- (а' )

g '' (к) = с(к). Тогда условие (1) будет выполнено в вершинах нижнего уровня графа О''. Соединим ¿т со всеми источниками О'' дугами к' :р"(к') = (¿т,) неограниченной ПС. Пусть g''(к') = £ g'(е). Соединим

ее©- )

все вершины верхнего уровня О , кроме источника, со стоком гт дугами к'' :р''(к'') = (Ъ', гт) неограниченной ПС. Пусть g''(к'') = £ g'(е). Тогда условие (1)

ее©- (Ъ'

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

Граф О"

Получим поток g' '', который равен 0 на дугах, выходящих из источников с уровнем больше 0, и дугах, входящих в сток с уровнем меньше 0. Фактически нужно обнулить часть потока g'', проходящую по выделенным пунктиром на рисунке дугам, и уменьшить поток на всех дугах так, чтобы он удовлетворял условиям (1). Для этого применим к потоку ^' на вспомогательном графе О теорему о декомпозиции [7]. Поток ^' будет разложен на множество потоков, каждый из которых равен 1 либо на простом пути,

проходящем от источника S" к стоку /", либо на простом цикле; на остальных дугах такой поток равен 0. Удалим из этого множества все потоки, которые отличны от 0 на дугах, инцидентных o(s, i), i > 0 или o(r,i), i < 0. Сумму оставшихся потоков обозначим g'''. Так как во вспомогательном графе все дуги направлены из вершин с меньшим в вершины с большим уровнем, то поток по дугам, входящим в вершины нулевого уровня, не изменится. Удалим из вспомогательного графа G'' дуги, выходящие из o(r, i), i < 0, и дуги, входящие в o(s, i), i > 0 (дуги, выделенные пунктиром на рисунке). Так как поток по ним равен 0, то условия (1) не будут нарушены. Перенесем поток f на полученный G , положим его равным 0

на дугах h : <р''(h) = (sm, ai ).

Объем потока g"' в нулевой момент времени равен объему потока g в этот же момент и, следовательно, больше объема потока f ', т.е. величина потока f ', проходящего через разрез (БД), меньше величины потока g''', проходящего через разрез (БД). Следовательно, величина потока g больше величины потока f на G . Но тогда существует увеличивающая цепь на G для потока f и, следовательно, алгоритм поиска потока, имеющего максимальный объем, нашел бы увеличивающую цепь на шаге 3 и не закончил бы свою работу на шаге 4 с результатом f '. Полученное противоречие доказывает, что приведенный алгоритм находит поток, имеющий максимальный объем.

Таким образом, в результате исследования динамического потока доказано существование максимального всплеска, предложены алгоритмы нахождения максимального всплеска в сети и максимального объема сети.

Литература

1. Ерусалимский Я.М., Кузьминова М.В. Динамические периодические графы // Математическое моделирование и биомеханика в современном университете : тр. III всерос. школы-семинара. Ростов н/Д, 2007. С. 39-40.

2. Кузьминова М.В. Динамические периодические графы. Задача о максимальном потоке // Молодежь XXI века -будущее российской науки : сб. материалов докл. 5-й всерос. науч.-практ. конф. студентов, аспирантов и молодых ученых : в 2 т. Т. 1. Ростов н/Д, 2007. С. 99-100.

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

4. Aronson J.E. A survey of dynamic networkows // Annals of Opérations Research. 1989. Vol. 20. P. 1-66.

5. Ford L.R., Fulkerson D.R. Constructing maximal dynamic flows from static flows // Operations Research. 1958. Vol. 6. P. 419-433.

6. Edmonds J., Karp R.M. Theoretical Improvements in Algorithmic Efficiency for Network Flow Problems // J. of the Association for Computing Machinery. 1972. Vol. 19, № 2. P. 248-264.

7. Кристофидес Н. Теория графов. Алгоритмический подход : пер. с англ. М., 1978. 432 с.

8. Orlin J.B. Maximum-throughput dynamic network flows // Math. Progr. 1983. Vol. 27. P. 214-231.

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

2 марта 2010 г.

m

m

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