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

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

CC BY
237
66
Читать
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 Надоели баннеры? Вы всегда можете отключить рекламу.