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

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

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

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

Панюкова Т.А.

Южно-Уральский государственный университет, доцент

kwark@mail.ru

Алгоритм построения оптимального эйлерова покрытия для многосвязного графа

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

Моделью раскройного листа будем считать плоскость S, моделью раскройного плана - плоский граф G с внешней гранью Л на плоскости S. Для любой части графа JQG (части траектории движения режущего инструмента) обозначим через IntJ) теоретико-множественное объединение его внутренних граней (объединение всех связных компонент множества S\J, не содержащих внешней грани). Тогда Int(J) можно интерпретировать как отрезанную от листа часть. Множества вершин, ребер и граней графа J будем обозначать через V(J), E(J) и F(J) соответственно, а число элементов множества M - через |M|. При этом требуется, чтобы отрезанная от листа часть не требовала дополнительных разрезаний. В общем случае раскройный план представляет многосвязный граф, состоящий из вложенных компонент связности. Задача состоит в построении покрытия графа рёбрами, учитывающего ограничения, наложенные практической задачей. Автором разработаны алгоритмы построения такого покрытия для связного графа [1, 2], а также алгоритмы нахождения допустимого эйлерова покрытия с упорядоченным охватыванием для многосвязного графа [3]. В данной работе модифицируем алгоритм, изложенный в [2, 3], на случай многосвязного графа с вложенными компонентами связности.

В соответствии с [1] будем говорить, что цепь С = ve1v2e2...vk в плоском графе G имеет упорядоченное охватывание, если для любой его начальной части Сx=vхeхv2e2...e¡,¡<(|£|) выполнено условие Int(C¡)nЕ = 0 .

Также будем говорить, что последовательность реберно-непересекающихся цепей

0000 00 ^-il lili 11 n-1 n-1 n-1 n-1 n-1 n-1

C = v e1v1e°...ek0 v°0 , C= v e1 V1 е2...еЛ,..., C = v e1 v1 e2 ."V, V, с упорядоченным охватыванием, покрывающая граф G и такая, что

("m :m <n) ( иЛ- Int(C))n( U^ (C))=0 является покрытием с упорядоченным охватыванием.

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

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

Минимальную по мощности последовательность реберно-непересекающихся цепей с упорядоченным охватыванием в плоском графе G будем называть эйлеровым покрытием с упорядоченным охватыванием.

Существование эйлеровых циклов с упорядоченным охватыванием в плоских эйлеровых графах доказано в работах [4, 5]. Рекурсивные алгоритмы построения таких циклов представлены в работе [4]. Проблеме построения маршрута с упорядоченным охватыванием в плоском графе произвольного вида посвящена работа [6], в которой разработан алгоритм построения таких маршрутов, имеющий вычислительную сложность не более 0(1 е |2). В работе [7] предложен эффективный алгоритм построения циклов с упорядоченным охватыванием в плоских эйлеровых графах, имеющий вычислительную сложность О(|Е|-^2|Г|). Построению покрытий плоских связных графов последовательностью цепей с упорядоченным охватыванием посвящены статьи [2, 6]. Алгоритм нахождения допустимой цепи, покрывающей ребра многосвязного графа предложен в [3].

Рассмотрим результат, доказанный в [2] и дающий возможность построения последовательности цепей с упорядоченным охватыванием с любым наперед заданным множеством дополнительных ребер М, образующим паросочетание на множестве вершин нечетной степени ^.

Теорема. Пусть G = (У,Е) топологический плоский граф на плоскости S, не имеющий висячих вершин. Для любого множества М, являющегося паросочетанием на множестве Vodd (состоящего из 2п вершин нечетной степени графа G), и такого, что М: (Мп £) \ V = # существует эйлеров цикл С = ^е^2е2...епх'1, п =|е 1 +1М1, для любой начальной части которого С = ^е^2е2 ..V, I <|Е| + |М|, выполнено условие Ш (С, )п Е = # .

Доказательство теоремы конструктивно, в ней предложен алгоритм М-Соуег для построения искомого покрытия.

При описании алгоритма используется понятие уровня вложенности ребра е: ктагк(е).

Уровнем вложенности ребра е плоского топологического графа ,Е) будем называть значение функции ктагк(е) определяемой рекурсивно:

• все ребра, инцидентные внешней грани /о графа G(V'Е) образуют множество ребер Ех = { ееЕ: ес/0} с уровнем вложенности ("е ОЕ1 )(ктагк (е) = 1);

• ребра с уровнем вложенности 1 в графе

(дг—1

Щм

■'=1 л

к >2

составляют множество Ек ребер с уровнем вложенности к в исходном графе

G, т. е. (V е е Ек) (ктагк(е) = к) .

С точностью до гомеоморфизма представление любого плоского

графа G = (7,Е) возможно с помощью задания для каждого ребра е функций

у1(е)>у2(е)> 11(е)> 12(е)> /(е) > /2(е) (рИС.1).

Функции vk(е), к = 1,2 представляют вершины, инцидентные ребру е, /к(е), к = 1,2 - грани, которые находятся слева при движении по ребру е от вершины vk(е) к ^-к(е), и 1к(е), к = 1,2 - ребра, инцидентные граням Л(е).

Более того, алгоритм М-Соуег использует две функции из алгоритма OrderedEnclosingCover, отвечающего за построение цепи с упорядоченным охватыванием.

Рассмотренный в работе [6] алгоритм OderedEnclosingCover состоит из трех основных частей: инициализация, упорядочение и формирование.

На этапе инициализации необходимо определить начальные значения всех переменных (найти начальные вершину и ребро, все ребра считать непомеченными, а все списки - пустыми).

Функциональное назначение этапа упорядочения состоит в:

• определении значения ктагк(е) для каждого ребра;

• формировании для каждой вершины списка инцидентных ребер,

упорядоченных по убыванию значения ктагк(е).

После сортировке ребер по убыванию значения ктагк(е) осуществляется переход к третьему этапу работы алгоритма -формированию, где осуществляется:

• выбор вершины нечетной степени с максимальным значением

• построение цепи, начинающейся в этой вершине, и заканчивающуюся в другой вершине нечетной степени;

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

принадлежащие ни одной из цепей (ребра, ограничивающие внешнюю грань) - построить цикл, состоящий из этих ребер.

Приведем алгоритм M-Cover построения допустимого эйлерова покрытия графа цепями с упорядоченным охватыванием [2]. Алгоритм M-Cover Входные данные:

• плоский граф G;

• паросочетание М на множестве вершин нечетной степени ^.

Рис.1. Функции, кодирующие ребра графа

ктагк(е);

Выходные данные: су, у = ^...Уом12 - эйлерово покрытие графа G цепями с упорядоченным охватыванием.

Шаг 1. Выполнить процедуры Инициализация и Упорядочение (т.е. Шаг 1 и Шаг 2 алгоритма OderedEnclosingCover [5]). Положить у =1. Объявить вершину уо, смежную внешней грани, текущей, положить V)) = у0 .

Шаг 2. Выполнять построение цепи су с помощью процедуры Формирование [5], используя вершину уо в качестве начальной. Пусть вершина V является конечной вершиной построенной цепи. Если V0 п^, то перейти на шаг 6; иначе перейти на шаг 3.

Шаг 3. Если вершина V0 является тупиковой, то перейти на шаг 5, иначе перейти на шаг 4.

Шаг 4. Если ктагк(VI) <ктагк(V0), то положить V) = V0 и перейти на шаг 2 (продолжить построение цепи су из текущей вершины).

Шаг 5. Найти V: (V0,VI)см . Закончить построение текущей цепи: V/ = V0, у = у +1, Vodd = vodd V/}, м = м\{(/,V/)} принять V) = V/ за текущую вершину следующей цепи и перейти на шаг 2 (начать построение новой цепи су из вершины V) = V)).

Шаг 6. Останов.

Конец алгоритма M-Cover

Вычислительная сложность алгоритма M-Cover не превосходит величины О( |).

Для построения оптимального покрытия достаточно в качестве М взять кратчайшее паросочетание на множестве ^ [2].

Алгоритм OptimalCover

Входные данные:

плоский граф G, представленный списком ребер с заданными на них функциями vk(е) , 1к(е) , /к(е) , k = 1,2 .

Выходные данные: су, у = ^ |/2, - покрытие графа G цепями с упорядоченным охватыванием.

Шаг 1. Найти кратчайшее паросочетание М на множестве ^.

Шаг 2. Выполнить алгоритм M-Cover для графа G и паросочетания М.

Шаг 3. Останов.

Конец алгоритма OptimalCover

Сложность алгоритма OptimalCover не превосходит величины |3) (т.е. сложности построения паросочетания).

Пример сравнения результатов работы алгоритмов Odered-EnclosingCover и M-Cover приведен на рис.2.

В случае многосвязного графа можно применить следующий допустимый алгоритм [3].

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

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

V V (-)у V (-)V V V V (-)V V V V V V V V

V V (-) V V (-IV' V V V ) V V V V V V V V

Рис.2. Результат работы алгоритма OderedEnclosingCover (слева) и И-

Cover (справа)

Алгоритм MultiComponentCover

Входные данные: плоский граф G.

Выходные данные: С5, } = 1,...,\|/2, - покрытие графа G цепями с упорядоченным охватыванием, 5 = I2, .. - номер компоненты связности.

Шаг 1. Выявить множество 5 всех компонент связности графа G и "О найти уровень вложенности к(5).

Шаг 2. Упорядочить элементы множества 5 в порядке убывания значений к (Х>.

Шаг 3. Пусть *(5) - порядковый номер компоненты связности s, а -КО -компонента связности с порядковым номером i. Для 1</<|£| выполнить алгоритм Орйта1Соуег и получить С) - покрытие 2'-ой компоненты связности цепями с упорядоченным охватыванием.

Шаг 4. Останов.

Конец алгоритма MultiComponentCover

Очевидно, что вычислительная сложность данного алгоритма составляет величину, не превышающую 0(\у \2).

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

Вложенным объединением п будем называть семейство компонент связности £п плоского графа, в котором компонента связности с уровнем вложенности к содержит в себе (охватывает) компоненты связности с уровнем вложенности больше к.

Например, на рис.3 изображено четыре компоненты связности,

образующих два вложенных объединения.

|Ч-г

7

4-4

2 4

11

Рис. 3. Пример вложенных объединений

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

Если модифицировать алгоритм МиШСотропеМСоуег с учетом введенных замечаний, будет получен рекурсивный алгоритм для обхода всех вложенных компонент связности, фиктивные ребра с оптимальной длиной между которыми будет невозможно построить за полиномиальное время, т.к. задача сведется к поиску решения задачи коммивояжера.

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

Алгоритм OptimalMultiComponent

Входные данные: плоский граф G.

Выходные данные: С, ) = 1,...,\Vodd|/2, - покрытие графа G цепями с упорядоченным охватыванием, ^ = 1,2,... - номер компоненты связности.

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

Шаг 1. Выявить множество 5 всех компонент связности графа G.

Шаг 2. Построить полный абстрактный граф б , вершинами которого являются компоненты связности £ графа G, а длины ребер равны расстоянию между ближайшими вершинами компонент связности.

Шаг 3. Найти остовное дерево минимального веса т (Б в Б.

Шаг 4. Добавить ребра найденного остовного дерева в граф G: GБ = GиТ(Б .

Например, для графа, приведенного на рис.3, будут добавлены ребра {1;5}, {3;8} и {10;14} (рис.4).

Шаг 5. Выполнить алгоритм Ор^та1Соуег для графа GБ (например, на рис.4 представлены дополнительные построения, выполненные алгоритмом Орйта1Соуег для рассмотренного графа).

Конец алгоритма OptimalMultiComponent

о-

13

12< 14

о о

Рис. 4. Добавление ребер, соединяющих компоненты связности, и ребер, делающих граф эйлеровым

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

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

C = {5,6,7,5}, C = {1,3},C3 = {8,9,10}, C4 = {14,13,12,14}, C23 = {10,11,8}, C22 = {3,4,2}.

Шаг 1 алгоритма представляет собой волновой алгоритм, который решает свою задачу за время O(|v |2). Действия, выполняемые на шаге 2, могут быть выполнены также за время O(|v |2). Известно, что решение задачи на шаге 3 алгоритма может быть получено также за полиномиальное время O(|v |2) либо при использовании логарифмических сортировок эту величину можно уменьшить до O(|V |log2| v |). Шаг 4 имеет сложность O(1). Выше упоминалось, что сложность алгоритма OptimalCover (шаг 5) не превосходит величины O(|v |3). Таким образом, суммарная сложность алгоритма OptimalMultiComponent представляет величину O(| v |3).

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

Работа поддержана грантом РФФИ 10-07-96002-р_урал_а.

Литература

1. Panyukova, T. Cover with Ordered Enclosing for Flat Graphs // Electronic Notes in Discrete Mathematics, 2007. No. 28. Р.17-24.

2. Панюкова, Т.А. Оптимальные эйлеровы покрытия для плоских графов // Дискретный анализ и исследование операций. 2011. Т.18, №2. С. 64-74.

3. Панюкова Т.А. Эйлерово покрытие с упорядоченным охватыванием для многосвязного графа. // Материалы 3-й международной конференции «Математическое моделирование, оптимизация и информационные технологии». - Кишенев: Evrica, 2012. С.429-438.

4. Panioukova T.A. Algorithms for Construction of Ordered Enclosing Traces in Planar Eulerian Graphs. / Panioukova T.A., Panyukov A.V. // The International Workshop on Computer Science and Information Technologies' 2003, Proceedings of Workshop, Ufa, September 16-18, 2003. Volume 1, Ufa State Technical University, 2003. P. 134-138.

5. Панюкова Т.А. Построение маршрутов с упорядоченным охватыванием в плоских графах // Труды 36-й Региональной молодежной конференции «Проблемы теоретической и прикладной математики». Екатеринбург: УрО РАН, 2005. C. 61-66.

6. Панюкова Т.А. Обходы с упорядоченным охватыванием в плоских графах / Панюкова Т.А. // Дискретный анализ и исследование операций, 2006. Сер. 2. Т.13, №2. C. 31-43.

7. Panyukov, A.V. The Algorithm for Tracing of Flat Euler Cycles with Ordered Enclosing / A.V. Panyukov, T.A. Panioukova // Proceedings of Chelyabinsk Scientific Center, 2000. - \#4(9). P.18-22.

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