ОБОБЩЕНИЕ АЛГОРИТМА ФЛОЙДА-УОРШАЛЛА НА СЛУЧАЙ НЕСКОЛЬКИХ КРИТЕРИЕВ
И.В. Блинов, Ю.В. Бугаев, С.В. Чикунов
Кафедра «Информационные технологии моделирования и управления»,
ГОУ ВПО «Воронежская государственная технологическая академия»;
Представлена членом редколлегии профессором В.И. Коноваловым
Ключевые слова и фразы: бинарное отношение; вычислительная сложность; граф; функция выбора; эффективные пути.
Аннотация: Предложен многокритериальный алгоритм, являющийся обобщением на случай нескольких критериев известного метода Флойда-Уоршал-ла, позволяющий найти множества недоминируемых путей между всеми парами вершин ориентированного графа произвольного вида.
Введение
Методы, основанные на принципе оптимальности Беллмана, являются эффективными процедурами решения задач оптимизации дискретных многостадийных процессов с аддитивным критерием оптимальности. В последнее время ведутся активные исследования по разработке алгоритмов решения подобных задач с векторным критерием: поиск лексикографических оптимумов, а также определение возможности применения алгоритма линейной свертки критериев (АЛСК).
Однако известно, что АЛСК не позволяет найти все множество нехудших решений [1]. Более надежны методы, использующие принцип прямого обобщения скалярного алгоритма на векторный случай. Так, разработан векторный алгоритм, позволяющий найти в ациклическом графе все пути от некоторой фиксированной вершины до всех остальных вершин, недоминируемые в смысле некоторого бинарного отношения предпочтения [2]. В данной работе предлагается новый, более общий метод решения подобной задачи - векторный вариант алгоритма Флойда-Уоршалла, позволяющий отыскать эффективные пути между всеми парами вершин в ориентированном графе произвольного вида.
1. Описание алгоритма
Пусть дан ориентированный граф G = (V, £), где V = {1, 2, ..., п} - множество вершин; Е - множество дуг. Каждая дуга e е Е характеризуется набором весов
pu (е), и = 1, т, то есть снабжена векторным (многокритериальным) весом. Вес произвольного пути в графе равен сумме весов составляющих дуг, и на множестве весов дуг и путей задано некоторое бинарное отношение предпочтения Я. Требуется найти между всеми парами вершин (/, ]) все пути, недоминируемые в смысле отношения Я.
Для решения этой задачи предлагается векторный вариант алгоритма Флой-да-Уоршалла.
Вспомним скалярный вариант алгоритма [3, 4]. Положим вес дуги [г, у] равным элементу матрицы А [г, у], который равен бесконечности, если в графе нет
такой дуги и А [г, г] = 0 для всех г = 1, п. Алгоритм базируется на использовании последовательности из п преобразований (итераций) начальной матрицы весов путей Б[г, у] (первоначально Б[г, у] = А[г, у] для всех г = 1, п, ] = 1, п). При этом на к-й итерации элементы матрицы представляют собой веса оптимальных путей между каждой парой вершин с тем ограничением, что путь между вершинами г и у содержит в качестве промежуточных только вершины из множества {1, 2,..., к}.
Для описания многокритериального варианта введем следующие обозначения:
- А [г, у] - векторный вес дуги [г, у]; если в графе нет такой дуги, то все компоненты вектора равны бесконечности и А [г, г] = 0 для всех г = 1, п;
- {Б[г, у]} - множество векторных весов возможных путей из вершины г в вершину у, полученное в результате работы алгоритма;
Я
- С (X) - выбор на предъявлении Х при использовании функции выбора
(ФВ), определяемой механизмом блокировки по заданному бинарному отношению Я [5].
Определение. Назовем Я-оптимальным всякий путь в графе G, недоминируемый в смысле отношения Я.
На первом этапе алгоритма производится поиск Я-оптимальных векторных оценок {Б [г, Д]} для всех пар (г, у).
Для простоты изложения алгоритм удобно описать в виде программы на неформальной версии языка Паскаль.
1
2
3
4
5
6
7
8
Алгоритм работает следующим образом.
Производится начальная установка, то есть в каждое множество {Б[і, у]} записывается значение, равное весу дуги [і, у].
Основная работа алгоритма начинается с 3-й строки, в которой задается последовательность из п преобразований (цикл по к = 1, п) начальной матрицы весов путей {Б [і, у]}.
На каждой к-й итерации в строке 4 последовательно перебираются все начальные вершины, а в строке 5 - все конечные вершины пути из вершины і в вершину у. В 6-й строке из множества {Б [і, к]}, а в строке 7 из множества
begin
for i := 1 to n do
for j := 1 to n do {D[i, j]}:= A[i, j]; for к := 1 to n do for i := 1 to n do for j := 1 to n do for q є { D [i, к] } do for p є { D [k, j] } do
{D [i, j] } := CR [{D [i, j]} U { q + p } ];
end.
{Б[к, у]} выбираются очередные .К-оптимальные значения участков пути из вершины I в вершину у через вершину к. В строке 8 на основании функции выбора СК (•) проводится сравнение нового варианта пути, полученного в результате сложения между собой этих значений, с уже существующими вариантами. Процедура повторяется до тех пор, пока не будут рассмотрены все элементы множеств {Б[г,к]} и {Б[к,у]} (строки 6 и 7). Затем рассматриваются следующие пары вершин, и процедура выбора вновь повторяется.
После выполнения к-й итерации множества {Б[г, у]}, г = 1, п, у = 1, п будут содержать все К-оптимальные пути при условии, что в качестве промежуточных они будут содержать только вершины из множества {1, 2,..., к}.
После выполнения п итераций множества {Б[г, у]}, г = 1, п, у = 1, п будут содержать критериальные оценки всех К-оптимальных путей между всеми парами вершин графа О.
Второй этап алгоритма состоит в восстановлении самих эффективных путей. В некоторых других методах при построении пути к произвольной вершине I известна вершина и , последняя перед г, и ее можно запоминать. После определения всех оптимальных расстояний можно, начиная с конца, восстановить каждый из найденных оптимальных путей. В методе Флойда-Уоршалла последняя вершина перед данной вершиной г неизвестна. Это значит, что указанный метод восстановления путей в методе Флойда-Уоршалла не пригоден. Однако, зная матрицы Б [г, у] наборов нехудших векторных расстояний между всеми парами вершин, можно построить сами кратчайшие пути между двумя заданными вершинами 5 и ? с помощью алгоритма, скалярный вариант которого имеет вид [3]:
write(t); v := t; while v <> s do
for u :=1 to n do
if ( D[s, v] = D[s, u] + ^[u, v] ) and (u<>v) then begin write(u); v:= u; break; end;
Векторный вариант более сложен, но использует ту же идею: обнаружение последней вершины и восстанавливаемого пути по совпадению D[s, v] = D[s, u] + + A[u, v]. Алгоритм имеет вид:
^-----------------------------------------------------------------
for t e V do for s e V do
for z e {D[s, t]} do begin v := t; СТЕК := t; q := z; while v <> s do
for и e V\{v} do
for p e {D[s, u]} do
if q = p + A[u, v] then begin u => СТЕК; q := p; v := u; break ( for u );
end;
write(СТЕК);
end;
Вершины восстанавливаемого пути накапливаются в стеке, содержимое которого распечатывается, как только первая вершина пути совпадет с заданной начальной вершиной s.
2. Анализ алгоритма
Докажем корректность этого алгоритма. Обозначим {d (i, j)}(k^- множество всех R-оптимальных путей из вершины i в вершину j, внутренние вершины которых содержатся в множестве {1,2,..., k}. Сделаем следующие предположения.
1. В графе G каждая пара вершин может соединяться не более, чем одной дугой.
2. Отношение R транзитивно, асимметрично и не зависит от смещения. Последнее свойство означает, что для любой пары точек (х, у) и любого вектора b следующие отношения эквивалентны: xRy и (x + b) R (y + b).
3. Векторный вес любого контура, имеющегося в графе, доминируется нулевым вектором.
Теорема. Если выполнены условия 1-3, то предлагаемый алгоритм позволяет найти все R-оптимальные пути между всеми парами вершин в графе G, и обратно, все пути, найденные алгоритмом, являются R-оптимальными, то есть для всех
k = 1, n, i = 1, n, j = 1, n выполняется равенство
{D[i, j]}(k) = { d(i, j)}(k), (1)
где { D[i, j] }(k) - результат работы алгоритма на k-й итерации.
При доказательстве нам понадобятся следующие два утверждения.
Лемма 1 [2]. Если Х - конечное множество, а отношение предпочтения R
R
транзитивно и асимметрично, то для любого x е X \ C (X) существует элемент, доминирующий над ним в смысле отношения R, то есть
V x е X \ CR (X) 3 у е CR (X) :(y, x) е R.
Лемма 2. Пусть ФВ C(»), определенная на конечном множестве T, обладает свойствами наследования и отбрасывания. Тогда для любых подмножеств X,Y с T справедливо равенство
C(X U Y) = C(X U C(Y)), (2)
то есть последовательный выбор на промежуточных множествах совпадает с вы-
R
бором на их объединении. В частности, это справедливо, если C(») = C (•), где R - асимметричное и транзитивное бинарное отношение.
Напомним, что свойства наследования (Н) и отбрасывания (О) являются фундаментальными свойствами ФВ и формулируется следующим образом:
Н: для произвольных предъявлений X и Y выполнено следование
(Y с X) ^ (C(X) П Y с C(Y));
О: для любых множеств А, В
(C(A) с B с A) ^ (C(A) = C(B)).
R
Этими свойствами обладает, например, ФВ C (•), где R - асимметричное и транзитивное бинарное отношение [5].
Известно также [6], что равенство (2) эквивалентно условию Плотта независимости от пути
C (X U Y) = C (C (X) U C (Y))
и имеет место только в том случае, когда ФВ обладает свойствами наследования и отбрасывания.
Доказательство теоремы. Предварительно отметим, что оператор в строке 8 алгоритма реализует операцию построения функции выбора после рассмотрения каждых р и q, а согласно лемме 2, это построение можно проводить после рассмотрения всех составляющих множеств. Поэтому строки 6, 7, 8 можно записать в виде:
{Б [г, у] }(к) = СК ((г, к)(к-1) + й (к, у )(к-1)}). (3)
Доказывать равенство (1) будем индукцией по к.
1. При к = 1 справедливость равенства (1) очевидна, так как в силу ограничения множество {Б[г, у]}(1) может включать либо путь, состоящий из одной дуги [г, у ], либо путь из двух дуг [г, 1] и [1, у ], либо оба пути вместе, то есть
{Б [г, у] }(1) = СК ({Б [г, у]}(0) и {й (г, 1)(0) + й (1, у)(0)}).
2. Предположим, что соотношение (1) выполняется для 2,3,..., к -1 итераций, в частности имеем {Б [г, у]}(к 1) = {й (г, у)}(к 1) для всех г = 1, п, у = 1, п и все внутренние вершины путей из г в у содержатся в множестве {1, 2,..., к -1}.
3. Докажем справедливость условия (1) для к-й итерации. Для этого, используя выражение (3), докажем, что
{й (г, у)}(к) = СК ({й ( к)(к-1) + й (к, у)(к-1) }).
Пусть 5 - такой путь из вершины г в вершину у, что р (5) е { й (г, у) }(к). Возможны два случая:
а) путь 5 не включает вершину к. Тогда множество {Б [г, у]}(к) остается неизменным и, согласно предположению индукции,
{Б [г, у]}(к) = {Б [г, у]}(к-1) = {й (г, у)}(к-1);
б) путь 5 содержит вершину к. В этом случае обозначим через 5' - часть пути 5 от вершины г до вершины к, а через 5" - часть пути от вершины к до вершины у. Тогда для пути 5' = 5/5" должны получить р(5') е {й (г, к)}(к 1).
Предположим, что это не так, то есть р(5') г {й (г, к)}(к-1). Тогда, по лемме
1, существует g" - путь от вершины г до вершины к, все внутренние вершины которого содержатся в {1,2,..., к -1} и такой, что р ^') К р (5'). Вследствие того, что К не зависит от смещения, для пути g = g' и 5" выполняется соотношение р (g) К р (5), так как
р (5) = р (5') + р (5") и р (g) = р (g') + р (5").
Но такого g, лучшего по К, чем 5, быть не должно. Отсюда следует, что
р (5') е {й (г, к)}(к 1),
а значит
р(5) е {й (г, к)(к-1) + й(к, у)(к-1) }= Н(г, у)(к).
Отсюда
p(s) е CR ( H(/, y)(k)),
иначе, по лемме 1, существует путь х с векторным весом лучшим, чем р (5).
А этого быть не может, так как р(5) принадлежит {й (г, у)}(к) - множеству всех К-оптимальных путей из г в у, все внутренние вершины которых содержатся в множестве {1, 2,..., к}.
Итак, мы доказали включение
{й (г, у)}(к) с СК (Н (г, у)(к)). (4)
Докажем обратное включение, то есть
СК (Н(г, у)(к)){й(г, у)}(к).
Пусть р(5) е СК (н (г, у)(к)). Предположим, что неверно включение
р(5) е {й(г, у)}(к), то есть р(5) г {й(г, у)}(к). Тогда, по лемме 1, найдется такой
путь g, что р(g) е {й (г, у)}(к) и р (g) К р (5). По доказанному включению (4),
если р(§)е{й(г, у)}(к), то р(§) е СК (Н(г, у)(к) ). А это означает, что не может выполняться отношение р (g) К р (5), так как оба пути недоминируемы по бинарному отношению К. Следовательно
р(5) е{й (г, у)}(к),
а значит
СК (Н (г, у)(к))с{й (г, у)}(к).
Отсюда вытекает равенство этих двух множеств, то есть {Б [г, у]}(к) ={й (г, у)} (к).
4. Воспользовавшись предположением индукции, получим выполнение данного соотношения для всех к = 1, 2,..., п . Следовательно, корректность алгоритма доказана, и при к = п будут найдены все К-оптимальные пути между всеми парами вершин в ориентированном графе, так как в этом случае все внутренние вершины всех путей будут содержаться в множестве {1, 2,..., п}.
Оценим теперь вычислительную сложность данного алгоритма. Очевидно, что число машинных операций, необходимых для выполнения первого этапа алгоритма значительно больше, чем для восстановления путей, поэтому вычислительная сложность всего алгоритма совпадает со сложностью его первой части. Пусть п - число вершин графа; Ь = тах| й (г, у)| - максимальное количество
¡, у
К-оптимальных путей среди всех пар вершин г и у; да - число критериев.
Число повторений каждого из трех внешних циклов (строки 3, 4 и 5 алгоритма) имеет порядок О(п) или, трех циклов в целом - о(п3), а каждого из двух внутренних циклов (строки 6 и 7) - О(Ь) или, в общем, о(ь2 ). В цикле 7 при каж-
дом повторении необходимо не более Ь раз провести парное сравнение да-мерных векторов. Следовательно, вычислительная сложность всего цикла 6 составит
о(т!Ь). Поскольку в большинстве практических задач значение да ограниченно
некоторой константой, то можно принять вычислительную сложность цикла 6
равной о(ь3 ).
Следовательно, общая вычислительная сложность многокритериального алгоритма Флойда-Уоршалла составляет о(Ь3 п3), против о(п3) в случае одного критерия.
Дать точную оценку величине Ь для произвольного графа весьма сложно, так как заранее найти мощность множеств эффективных путей практически невозможно. Однако численные эксперименты, проведенные авторами и описанные в [7, 8], а также теоретически полученные асимптотические оценки [9], позволяют надеяться, что, в частности, для отношения Парето величина Ь растет достаточно медленно по сравнению с числом вершин п произвольного графа, если он не близок к полному графу. Поэтому данный алгоритм может быть рекомендован для решения практически важных задач.
Работа выполнена при финансовой поддержке Рособразования, Государственный контракт № П947.
Список литературы
1. Кравцов, М.К. Неразрешимость задач векторной дискретной оптимизации в классе алгоритмов линейной свертки критериев / М.К. Кравцов // Дискрет. математика. - 1996. - Т. 8, вып. 2. - С. 89-96.
2. Бугаев, Ю.В. Применение прямого обобщения скалярных алгоритмов в векторной оптимизации на графах / Ю.В. Бугаев // Дискрет. математика. - 2001. -Т. 13, вып. 3. - С. 110-124.
3. Липский, В. Комбинаторика для программистов : пер. с пол. / В. Липский / М. : Мир, 1988. - 213 с.
4. Кристофидес, Р. Теория графов. Алгоритмический подход : пер. с англ. / Р. Кристофидес. - М. : Мир, 1978. - 432 с.
5. Юдин, Д. Б. Вычислительные методы теории принятия решений / Д.Б. Юдин. - М. : Наука, 1989. - 316 с.
6. Айзерман, М.А. Выбор вариантов: основы теории / М.А. Айзерман, Ф.Т. Алескеров. - М. : Наука, 1990. - 240 с.
7. Чикунов, С.В. Структурно-параметрический синтез моделей многокритериального поэтапного выбора решений в технологических системах : дис. ... канд. техн. наук : защищена 16.10.03 : утв. 16.01.04 / Чикунов Сергей Владимирович. -Воронеж, 2003. - 171 с.
8. Бугаев, Ю.В. Экспериментальные исследования алгоритмов многокритериального поэтапного выбора решений в технологических системах / Ю.В. Бугаев, С.В. Чикунов // Теоретические основы проектирования технологических систем и оборудования автоматизированных производств : сб. науч. тр. / Воронеж. гос. технол. акад. - Воронеж, 2007. - Вып. 5, ч. 1. - С. 68-82.
9. Бугаев, Ю.В. Обобщение схемы динамического программирования / Ю.В. Бугаев, С.В. Чикунов // Автоматика и телемеханика. - 2009. - № 2. -С. 90-100.
Generalization of Floyd-Warshall Algorithm in Case of Several Criteria
IV. Blinov, Yu.V. Bugaev, S.V. Chikunov
Department «Information Technologies and Management Modeling»,
Voronezh State Technological Academy; [email protected]
Key words and phrases: binary relation; computing complexity; graph; choice function; effective ways.
Abstract: The paper proposes multi-criteria generalized algorithm in case of several criteria of the well-known Floyd-Warshall method enabling to find a number of non-dominant ways between all the top steams of oriented graph of random type.
Verallgemeinerung des Algorithmus von Floyd-Warshall im Falle einiger Kriterien
Zusammenfassung: Es wird der multicriteriale Algorithmus, der die Verallgemeinerung im Falle einiger Kriterien der bekannten Methode von Floyd-Warshall ist, vorgeschlagen. Er erlaubt, die Mengen der nicht dominierten Wege zwischen allen Paaren Gipfel des ausgerichteten Grafen einer willkürlichen Art zu finden.
La généralisation de l’algorithme de Floyd-Warshall Sur le cas de quelques critères
Résumé: Est proposé l'algorithme multicritérial étant la généralisation sur le cas de quelques critères de la méthode connue de Floyd-Warshall permettant de trouver les multitudes de voies non dominées entre toutes les vapeurs des sommets du comte orienté de l'aspect arbitraire.
Авторы: Блинов Иван Владимирович - аспирант кафедры «Информационные технологии моделирования и управления»; Бугаев Юрий Владимирович -доктор физико-математических наук, профессор кафедры «Информационные технологии моделирования и управления»; Чикунов Сергей Владимирович - кандидат технических наук, доцент кафедры «Информационные технологии моделирования и управления», ГОУ ВПО «ВГТА».
Рецензент: Абрамов Геннадий Владимирович - доктор технических наук, профессор, заведующий кафедрой «Информационные технологии моделирования и управления», ГОУ ВПО «ВГТА».