Многопродуктовые потоки в сетях с нестандартной достижимостью

УДК 519.1

МНОГОПРОДУКТОВЫЕ ПОТОКИ В СЕТЯХ С НЕСТАНДАРТНОЙ ДОСТИЖИМОСТЬЮ

© 2005 г. Я.М. Ерусалимский, А.Г. Петросян

Problem under investigation is maximum flow on the multi-product net with non-standart attainability. Such flow may be find as maximum flow on special constructed net.

Введение

В классической теории графов ориентированным графом (орграфом) называется тройка G(X, U, f), где X(^ 0) - множество вершин графа; U -множество (возможно, и пустое) дуг; f - отображение, действующее из U в X х X, называемое отображением инцидентности [1]. Сетью называется орграф с выделенными источником и стоком [2]. На данный момент хорошо изучены задачи о кратчайшем пути и о максимальном потоке в сети [1-4]. В классической постановке этих задач дуги считаются равноправными. В последнее время возникают задачи о кратчайшем пути и максимальном потоке в сетях с нестандартными достижимостями, например с множествами «запрещенных» и «магнитных» дуг, с «вентильной» достижимостью [5]. В случае, когда существуют ограничения на достижимость, нельзя использовать уже известные алгоритмы, так как не все пути являются допустимыми. В [6, 7] был разработан подход к решению этих задач. Его суть заключается в том, что по исходной сети строится вспомогательная, которая содержит только допустимые пути исходной сети. В описанных выше работах мы считаем поток однородным (в том смысле, что все частицы (элементы) потока подчиняются одним и тем же ограничениям на достижимость). В данной работе рассматривается задача о многопродуктовых потоках в сетях с нестандартной достижимостью, причем типы достижимости для разных продуктов могут быть различными. Такую сеть будем называть многопродуктовой с нестандартными достижимостями. В такой постановке задача о многопродуктовом потоке в сети становится содержательной, т.е. принципиально отличающейся от однопродуктовой, а её решение позволит расширить класс возможных приложений.

Постановка задачи о потоке в многопродуктовых сетях

Рассмотрим сеть G(X, U) с нестандартной достижимостью, где U = Uu Uj и ... u Ut. Причем накладываются ограничения на прохождение по дугам из множеств Ui ,i = 1,t. Выше указывалось, что одним из этапов решения задач на сетях с нестандартной достижимостью было перестроение исходной сети G в G' - сеть со связанными дугами. При перестроении каждой вершине исходной сети ставилось в соответствие несколько вершин перестроенной сети (количество вершин определяется видом ограничения на достижимость), каждой дуге - одна или несколько

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

Рассмотрим сеть G такую, что ее множество дуг U = Uu' u...uU"m . При этом |uu'| > 1 i = 1,m, где UUi = {u(1),...,u(n^} - множество дуг сети

G, порожденное дугой ui, uieG i = 1,m. Считаем, что заданы «суммарные» пропускные способности для множеств Uu (c(Uu )) i = 1, m (сумма величин потоков, проходящих по дугам множества, не может превышать величину c(Uu ) ). Множества Uu' будем называть множествами связанных дуг, а сеть G' такого вида - сетью со связанными дугами.

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

Определение 2. Связанно простым путем в сети G' со связанными дугами будем называть простой путь ¡л такой, что n Uui | < 1 i = 1,m .

Определение 3. Пропускной способностью дуги связанно простого

I c(u), u e UH

пути л(s,t) будем называть величину сл (u) = < .

[c(U' ), u e U'

Определение 4. Пропускной способностью связанно простого пути ¿и(.s,t) в сети со связанными дугами будем называть величину с(л) = min{c„ (u )}.

uep

Необходимо отметить, что нельзя использовать классический алгоритм построения максимального потока [2] на сетях с нестандартными достижимостями, так как он не предусматривает наличия связанных дуг. В связи с этим был разработан алгоритм, называющийся «алгоритм прорыва», для построения максимального потока в сетях со связанными дугами. Данный алгоритм был подробно описан в дипломной работе одного из авторов статьи. Идея алгоритма «прорыва» заключается в следующем.

Пусть имеем сеть G с источником S и стоком t. Пусть F(u) - величина потока, проходящего по дуге u.

1. Находим кратчайший связанно простой путь ¿u(s,t) в сети G такой, что c(w) > 0.

2. Полагаем F(u): = F(u)+c(^) Vue ¡.

3. Полагаем c(u): = c(u) - c(^) Vue л и c(U): = c(U) - c(w) i = 1, к такого, что ¡n U1 Ф0.

4. Если существует связанно простой путь ¡(s, t) такой, что c(p) > 0, то переход на шаг 1. Иначе величина максимального потока равна сумме величин потоков, проходящих по дугам, выходящим из источника.

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

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

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

Постановка данной задачи привела к необходимости перейти от сетей со связанными дугами к понятию набора сетей со связанными дугами. Предлагается следующий порядок действий для решения многопродуктовой задачи.

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

Обозначим через к^и- = и"' и ...ии^ множество дуг, где и"' - множество связанных дуг сети О1, порожденное дугой ии и.&О ' = 1,т . Множество всех дуг набора сетей О1 ... Ок- и =к ии1 и . . .икии . Считаем,

что заданы «суммарные» пропускные способности множеств кии (с(кии )) ' = 1,т (сумма величин потоков, проходящих по дугам множества, не может превышать величину с(кии ) ). Множество {О1, О2,..., Ок}

будем называть набором сетей со связанными дугами, порожденных многопродуктовой сетью G. Множества *ии будем называть связанными

дугами набора сетей G1 ... О*, порожденных многопродуктовой сетью.

Предлагается алгоритм построения максимального многопродуктового потока, основанный на согласованном рассмотрении сетей из связанного набора. Каждому продукту соответствует одна сеть из набора. Допустим, что в условии задачи не оговорен порядок выбора продуктов (другой случай будет рассмотрен далее), тогда можно начинать процедуру построения максимального потока с любого продукта. Пусть выбирается продукт / Используя алгоритм «прорыва», необходимо построить максимальный поток в сети О. На величину его потока необходимо уменьшить пропускную способность дуг путей потока и связанных с ними дуг набора сетей {О1, О2,., О*}. Затем выбирается следующий продукт и т.д., пока максимальный поток не будет построен в каждой сети из набора {О1, О2,., О*} (максимальным потоком многопродуктовой сети О называем сумму максимальных потоков сетей из набора {О1, О2,., О*}).

Пример 1. Пусть имеем сеть:

Будем насыщать ее двумя продуктами с двумя видами ограничений на достижимость: I) запрещенные дуги (1-2, 2-3); II) магнитные дуги (1-2, 2-3).

Числа на дугах означают соответственно пропускную способность и поток, с(и^(Р'г)) - суммарная пропускная способность множества связанных дуг, порожденных дугой (р, г) исходного графа, где р - начальная вершина дуги в исходном графе; г - конечная вершина дуги. Связанные дуги обозначены двойной чертой.

Сделаем перестроения для каждого вида достижимости: I) для запрещенных дуг

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

Построим максимальный поток в сети первого продукта:

пропускную способность дуг путей потока и связанных с ними дуг набора

дукта:

На величину построенного потока в сети II необходимо уменьшить пропускную способность дуг путей потока и связанных с ними дуг набора сетей I и II:

Таким образом, был построен максимальный поток в обеих сетях. Причем максимальный поток в каждой из них равен единице, а суммарный поток равен двум. Нетрудно проверить, что при порядке выбора продуктов II, I в данной задаче не изменится ни величина суммарного потока, ни величины потоков каждого из продуктов. Множества путей потоков для каждого из продуктов не пересекаются, следовательно, величина максимального потока одного не влияет на величину максимального потока другого. Ниже приведен пример, в котором указанные множества пересекаются, следовательно, существует несколько вариантов распределения максимального потока по продуктам.

Пример 2. Пусть имеем сеть с двумя продуктами.

I) Для первого продукта будем считать запрещенными дуги 1-2 и 2-4.

II) Для второго продукта будем считать запрещенными дуги 2-3 и 3-4.

2

3

Сделаем перестроение сети для случая I:

Максимальный поток в сети без ограничений равен четырем. Анализируя обе сети, видим, что при насыщении исходной сети данными продуктами можно получить поток, равный четырем. Причем он имеет два варианта распределения: 1) величина поток-продукта I равна двум, II -двум; 2) величина поток-продукта I равна одному, II - трем.

Следует отметить, что возможна ситуация, в которой пути потока в перестроенных сетях для различных продуктов совпадают. Ясно, что в этом случае использование нескольких продуктов не позволит увеличить поток в сети, так как насыщение путей одним продуктом приведет к невозможности насытить их другими продуктами. Отсюда следует, что использование нескольких продуктов позволит увеличить поток только в том случае, когда существуют различные пути потока в различных перестроенных сетях.

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

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

Пример 3. Пусть дана сеть.

2

I) Для первого продукта будем считать запрещенными дуги 1-2 и 2-4.

II) Для второго продукта запрещенных дуг нет.

III) Требуется построить максимальный поток в сети, при этом величина потока каждого из продуктов должна быть не меньше единицы.

При любом порядке выбора продукта максимальный суммарный поток будет равен четырем. Теперь посмотрим на выполнение условия III. Если начать с продукта I, то задача разрешима. Если же начать с продукта II, то может возникнуть ситуация, когда продукт II насытит дуги 1-3 и 3-4, а это единственный путь для продукта I. Следовательно, условие III задачи не будет выполнено. Поэтому становится ясно, что при такой постановке задачи появляется необходимость перебора вариантов насыщения сети различными продуктами.

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

Пример 4. Пусть дана сеть.

2

3

Имеем два продукта:

I) Для первого будем считать запрещенными дуги 1-2, 2-4 и 2-3.

II) Для второго - 1-2, 2-4, 1-3 и 3-4.

Величина максимального потока продукта I в данной сети равна двум; II - одному, т.е. суммарный двухпродуктовый поток равен трем, в то время как максимальный поток в данной сети без ограничений равен пяти.

Работа выполнена по проекту «Графы и сети с нестандартной достижимостью» по разделу 3.3: Развитие научно-исследовательской работы молодых преподавателей, научных сотрудников, аспирантов и студентов по ведомственной научной программе Минобразования РФ «Развитие научного потенциала высшей школы» (рук. проекта Я.М. Еру-салимский).

Литература

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

2. Форд Л.Р., Фалкерсон Д.Р. Потоки в сетях: Пер. с англ. М., 1966.

3. Басакер Р.Д., Саати Т.Л. Конечные графы и сети: Пер с англ. М., 1974.

4. Харари Ф. Теория графов: Пер. с англ. М., 1973.

5. Басангова Е.О., Ерусалимский Я.М. Различные виды смешанной достижимости // Алгебра и дискретная математика. Элиста, 1985. С. 70-75.

6. Ерусалимский Я.М., Логвинов С.Ю. // Изв. вузов. Сев.-Кавк. регион. Естеств. науки. Приложение. 1996. № 2. С. 14-17.

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

Ростовский государственный университет 4 мая 2005 г.