Панюкова Т.А.
Южно-Уральский государственный университет, доцент, kwark @таП . ги
Построение эйлеровых циклов с упорядоченным охватыванием как математическая модель решения
задачи раскроя
КЛЮЧЕВЫЕ СЛОВА:
Рекурсивный алгоритм, эйлерова цепь, плоский граф, математическая модель, задача раскроя.
АННОТАЦИЯ:
В статье рассматривается рекурсивный алгоритм построения эйлеровой цепи в плоском эйлеровом графе, удовлетворяющей глобальному ограничению на порядок обхода ребер. Такой граф и соответствующий ему маршрут могут быть рассмотрены как математическая модель некоторого раскройного плана. Наложенное ограничение на порядок обхода ребер означает, что отрезанная от листа часть не требует дополнительных разрезаний.
Введение
В настоящее время активно развивается такой раздел дискретной математики как теория графов. Изучение правил и законов человеческого мышления обусловило применение методов дискретной математики в тех областях техники, которые так или иначе связаны с моделированиием мышления, и в первую очередь в вычислительной технике и программировании. С помощью аппарата теории графов формализуется широкий класс проблем, начиная от занимательных до ряда серьезных теоретических и прикладных задач электротехники, физики, химии, топологии и др. Например, с помощью графа, изображающего сеть дорог между населенными пунктами, можно определить не только маршрут проезда от одного до другого пункта, но, если таких маршрутов окажется несколько, - выбрать в определенном смысле оптимальный (самый короткий или самый безопасный, самый дешевый или путь, который требует минимум энергии и т.п.). Кроме того, на алгоритмы обхода могут быть наложены дополнительные свойства (ограничения).
Большое число примеров различных типов эйлеровых цепей приведено в первом томе монографии Г.Фляйшнера «Эйлеровы графы и смежные вопросы» [1, 2], где систематизировано и достаточно подробно рассматриваются некоторые виды эйлеровых цепей, например:
• цепи, не содержащие запрещенных переходов;
• попарно-совместимые эйлеровы цепи;
• А -цепи в графах;
• самонепересекающиеся и непересекающиеся цепи;
• бинаправленные двойные обходы.
В последнее время появились публикации, посвященные новым видам маршрутов в графах, например:
• расширение класса запрещенных переходов [3];
• маршруты Петри [4];
• k -реберно-упорядоченные графы [2];
• прямолинейные маршруты в эйлеровых графах [5] и т.п.
Однако не было найдено публикаций, рассматривающих задачу построения маршрутов в плоских графах, у которых отсутствует пересечение внутренних граней пройденной части маршрута с ребрами его непройденной части.
Будем рассматривать GS - топологическое представление графа G в плоскости 5, компоненты связности множества S \ GS называются гранями плоского графа GS, а множество граничных точек грани - ее краем; теоретико-множественное объединение краев всех граней равно GS, поэтому каждое ребро и каждая вершина принадлежат краю хотя бы одной грани, и ясно также, что никакое ребро (в отличие от вершины) не может принадлежать краям более чем двух граней. Ровно одна из граней плоского графа GS является внешней (бесконечной). Причем всегда можно так изменить расположение графа GS в плоскости 5 (т. е. построить изоморфный ему граф Gs'), чтобы наперед заданная грань стала внешней: для этого достаточно сначала стереографически отобразить GS на сферу, затем повернуть ее так, чтобы полюс N попал в образ облюбованной грани, и, наконец, спроектировать граф обратно на плоскость 5.
Положим, что на плоскости 5 задан плоский граф G=(V,E), и пусть /0 -внешняя (бесконечная) грань графа G. Для любого подмножества Н$ G обозначим через 1п\.(Н) подмножество 5, являющееся объединением всех связных компонент множества 5\Н, не содержащих внешней грани /0. Множества вершин, ребер и граней графа G будем обозначать через V, Е(О) и F(G) соответственно, а - число элементов (мощность) множества S.
Определение 1. Будем говорить, что цикл C=VlelV2e2...Vk в эйлеровом графе в имеет упорядоченное охватывание, если для любой его начальной
части С1=у1е1у2е2...еь выполнено условие С, I П Е(Сг) = 0_
Например, для плоского эйлерова графа, приведенного на рис.1., цикл v1e1v2e2v3e3v1e4v2e5v3e6v1 удовлетворяет условию упорядоченного охватывания, а цикл ^1е4У2е5У3е6У1е1У2е2У3в3У1 - не удовлетворяет, т.к.
е5
Рис. 1. Пример эйлерова графа
В терминах задачи раскроя используемые определения интерпретируются следующим образом: 5 - раскраиваемый лист, G -раскройный план, С - траектория движения режущего инструмента, 1п1:(С.) - отрезанная от листа часть при прохождении режущим инструментом части траектории. Тогда условие упорядоченности охватывания означает, что отрезанная от листа часть не требует дополнительных разрезаний.
Представление заданного плоского графа G = (V,Е) возможно с помощью задания для каждого ребра е ОЕ следующих функций:
• г1(е), v2(e) - вершины, инцидентные ребру е;
• /1(е), /2(е) - грани, находящиеся слева при движении по ребру е от вершины Ук(е) к вершине У3_к (е), к = 1,2.
• к(е), 12(е) - ребра, принадлежащие граням /к (е), к = 1,2, инцидентные вершинам Ук (е).
Иллюстрация введенных функций дана на рис. 2. Их построение не составляет проблем. Фактически они определяются и используются еще на этапе проектирования графа G.
Пространственная сложность такого представления не будет
Рис. 2. Представление ребер графа
Задаче построения эйлеровых циклов с упорядоченным охватыванием посвящено достаточно большое число публикаций автора
превосходить
данной работы, например [6-7]. Подробно задача описана в работе [6].
1. Рекурсивный алгоритм построения эйлерова цикла с упорядоченным охватыванием
Будем использовать представление заданного плоского графа G = (V >E) с помощью введенных ранее функций (рис.2) для каждого ребра e О E.
Алгоритм А1 основан на доказательстве теоремы о существовании в эйлеровом графе цикла с упорядоченным охватыванием [8]. Псевдокод алгоритма А1 приведен на рис.3.
Алгоритм использует структуры FirstLast и Edge. Структура FirstLast состоит из двух целочисленных полей First и Last, предназначенных для возврата функциями номеров первого и последнего ребер соответственно в построенных циклах. Исходный граф G задается в виде массива структур Edge. Отдельный элемент массива соответствует ребру графа. Поля структуры предназначены для хранения значений одноименных функций, определенных на соответствующем ребре._
Алгоритм А1
Входные данные: граф G = (V, E), первое рассматриваемое ребро
e0f0;
Выходные данные: Очередь Mark, первое ребро в очереди Ret.First
, последнее ребро в очереди Ret.Last;
V e G EMark (e ) = ж ;
Start = Next = e0;
do
Vertex = v1 (Next); e0 = Next; Next = l1 (e0); if (Mark (Next) = Г ) do if ( Next = Start) do Mark(e0) = Next;
break; od
else do
e = l2 (Mark (Next)); if ( e Ф Start ) do while (Mark(e) do
e = l2(li(e)); if ( e = Start ) break; od
Next = e; od od od
_if (Vertex = v2 (Next) ) REPLACE( Next);_
Mark(e0) = Next;
od while (Next фStart); Mst = 0; do
if( l2(Next)фe0 and Mark(l2(Next))=n ) do if (Mst = 0 ) Mst = l2 (Next); if ( Vфv2(l2(Next)) ) REPLACE(l2(Next)); Ret =A1(G, l2(Next)); if ( Mark(e^n ) do Mark (Ret.Last) = Mark (e0) ; Mark (e0) = l2 (Next); od
e0 = Next; Next = Mark (e0); Vertex = v1 (e); od while( Next фRet.First and Next ФStart ); if (Mst = 0 ) Ret.First = Start; else Ret.First = Mst; Ret.Last = First; return Ret;
_end._
Рис. 3. Функция CYCLE алгоритма построения обхода с упорядоченным охватыванием
Порядок работы алгоритма A1 следующий. Сначала производится инициализация полей Mark, являющихся элементами массива структур Edge.
Представление графа фактически задает ориентацию его ребер. Далее предполагается, что движение по ребру для определенности осуществляется от вершины v2(e) к вершине v1(e). Поскольку при задании графа G неизвестно, какое из ребер в каком направлении будет пройдено, то при выполнении алгоритма производится перестановка значений полей v1(e), v2(e)и l1(e), l2(e) некоторых ребер. В алгоритме данную процедуру
выполняет функция REPLACE. (рис. 4)._
Функция REPLACE
Входные данные: Edge - ребро, для которого нужно
поменять функции местами.
tmpi = v2 (Edge); tmp2 = l2 (Edge);
v2 (Edge) = vi (Edge); l2(Edge) = li (Edge); v1 (Edge) = tmpi; l1 (Edge) = tmp2;
_end._
Рис. 4. Функция REPLACE
Работу алгоритма A1 можно разбить на две части.
Первая часть функции, соответствующая первому циклу do...while (рис. 3), предназначена для нахождения цикла из ребер, смежных внешней грани
графа G(t), где t = v1(e0). Данный цикл представляется заданием поля Mark (ранга) для каждого его ребра.
Определение 2 [9]. Ранг каждого ребра e графа G(V,E) может быть определен рекурсивно:
8. Все ребра, ограничивающие внешнюю грань f графа G(V,E),
образуют множество ребер El-{e&E е с fQ} с рангом i Ve е Еу п. km ark (е) = 11
Гк=\ \\
к
9. Ребра ранга графа ^ 4Í=0 // формируют множество ребер Ек> имеющих ранг к для исходного графа G, т.е.
(Ve е Ек) i lanar к (е) = к <
Вторая часть, соответствующая следующему циклу do...while, рекурсивно вызывает алгоритм Al для каждого ранее непомеченного ребра, инцидентного вершинам цикла, построенного при прохождении первого цикла do...while. После построения обхода соответствующей компоненты связности, он включается в результирующий обход.
Таким образом, описанный в этом разделе алгоритм A1 позволяет найти эйлеров цикл с упорядоченным охватыванием в плоском эйлеровом графе.
Результативность работы алгоритма следует из доказательства теоремы существования эйлерова цикла с упорядоченным охватыванием. Произведем оценку сложности алгоритма.
Как отмечено выше, алгоритм Al состоит из двух частей. При нахождении в первой части алгоритма очередной пометки Next, требуется просмотреть в худшем случае d(vi) ребер, где d(vi) - степень вершины vi.
Данный цикл с учетом рекурсии выполняется ровно |E(G)| раз,
следовательно, сложность выполнения цикла не превосходит величины, пропорциональной
Vv
то есть эта часть алгоритма имеет сложность O(| E|2).
Во второй части алгоритма осуществляется рекурсивный вызов, при этом происходит последовательный просмотр всех вершин, поэтому сложность этой части функции не превосходит O(| V (G )|). Следовательно,
сложность всего алгоритма составляет величину O(| E (G )|2). Таким образом, предложенный алгоритм решает задачу за полиномиальное время O( E (G)|2).
2. Построение Л-цепей с упорядоченным охватыванием в 4-регулярном графе
Еще одной разновидностью цепей, используемых для моделирования процесса раскроя, являются Л-цепи. Определение данного вида цепи и теоретические результаты, касающиеся свойств этих цепей, подробно описаны в [1].
Определение 3 [1, 10]. Пусть в графе G(V,E) для каждой вершины v еV задан положительный циклический порядок обхода ребер O + (О). Эйлеров маршрут Т будем называть А -цепью, если для любого {е*,еу}еХт(О) (где ХТ(О) - заданная система переходов) У = *_ 1 или
У = * +1.
Другими словами, в А -цепи возможен переход только на соседнее ребро, получающееся при вращении текущего ребра против часовой стрелки (либо по часовой стрелке).
Рассмотрим плоский 4-регулярный граф (т.е. граф, для которого V Vе V:deg (V)=4 ). Очевидно, что данный граф является эйлеровым.
Предложение. В плоском 4-регулярном графе существует А -цепь с упорядоченным охватыванием.
Доказательство. Рассмотрим систему переходов Хт (О), соответствующую некоторой А -цепи в графе О. Выберем произвольную вершину V0е/0 и построим из нее цикл С(/0) из ребер, смежных внешней грани (имеющих ранг 1). Удалив все ребра е еС (/о), получим к компонент связности, ребра которых имеют ранг больше 1. Причем, любая пара ребер ранга 2 будет иметь хотя бы одну общую вершину второй степени (этой вершине были инцидентны два ребра е1,етеС(/0)). В соответствии с изложенным выше алгоритмом возможно построение А -цепи с упорядоченным охватыванием следующим образом. Из вершины Vое/о, выбранной в качестве начальной начать построение цепи по ребру е1 : ктагк(е1) = 2. В силу 4-регулярности графа, ребра, инцидентные начальной вершине не могут иметь больший ранг. А ребра, инцидентные ребру е :ктагк(е) = к, не могут иметь ранг, отличающийся от к более, чем на единицу. Далее, используя алгоритм А1 , построим эйлерову цепь с упорядоченным охватыванием. Снова, в силу 4-регулярности графа О, на всех уровнях рекурсии переход будет осуществляться на соседнее ребро большего ранга (если это возможно). Последнее ребро цепи, е|Е|, будет смежно внешней грани, а следующим для него в циклическом порядке будет начальное ребро е1 . Таким образом, построенный эйлеров цикл с упорядоченным охватыванием является и А -цепью. Предложение доказано.
Приведем алгоритм для построения А -цепи с упорядоченным охватыванием в 4-регулярном графе.
Алгоритм А2
Входные данные: Граф G (V, E), представленный шестью функциями для каждого ребра:
• v1(e), v2(e) - вершины, инцидентные ребру e;
• l1(e), l2(e) - ребра, инцидентные вершинам vk(e), и получающиеся при вращении ребра e против часовой стрелки;
• r1(e), r2(e) - ребра, инцидентные вершинам vk(e), и получающиеся при вращении ребра e по часовой стрелке.
Выходные данные: A -цепь C с упорядоченным охватыванием.
Шаг 1. Положить k = 1 и G = G (V, E).
Шаг 2. Определить цикл Ck из ребер, смежных внешней грани графа G. Всем ребрам этого цикла присвоить пометку k (таким образом Ve еCk, kmark(e) = k). Положить k = k +1.
Шаг 3. Положить G = G \ Ck. Если в G остались еще не помеченные ребра, перейти на шаг 2. В противном случае перейти на шаг 4.
Шаг 4. Начать построение цикла из вершины v0е/0. Выбрать первое ребно e1, инцидентное v0 и имеющее ранг 2. Положим, что v0 = v1(e1), в противном случае необходимо поменять индексы кодирующих функций данного ребра местами (функция REPLACE алгоритма А1). Пусть e = e1 -текущее ребро, помещаемое в цепь: C = {e1}.
Шаг 5. Предположим, что движение по ребру e осуществляется из вершины v1(e) в вершину v2(e). В противном случае необходимо изменить направление прохода по ребру заменой индексов задающих его функций на противоположные, т.е. k заменить на (3 - k), где k = 1,2. Пусть C = C U {e}. Пометить e как пройденное. Если | C \=\E \, завершить выполнение алгоритма A -цепь с упорядоченным охватыванием найдена, в противном случае, перейти на шаг 6.
Шаг 6. Чтобы не нарушить свойство A -цепи, выбрать одно из соседних для e ребер, имеющее максимальный возможный ранг и не пройденное ранее (не включенное в цепь C). Таким образом,
• e = r2(e), если kmark(r2(e)) > kmark(l2(e));
• e = l2(e), если kmark(r2(e)) < kmark(l2(e));
•если kmark(r2(e)) = kmark(l2(e)) продолжить обход по любому из ребер, по возможности не повышая связности непройденного подграфа.
Перейти на шаг 5.
Конец алгоритма.
В силу того, что алгоритм A2 является модификацией алгоритма A1, он также является полиномиальным, а его результативность следует из результативности алгоритма A1.
Исследование выполнено при поддержке Министерства образования и науки РФ,
соглашение 14.В37.21.0395.
Литература
1. Fleischner H. Eulerian Graphs and Related Topics, Part 1, Vol.1, Ann. Discrete Mathematics, No 45
(1990).
2. Fleischner H. Eulerian Graphs and Related Topics, Part 1, Vol.2, Ann. Discrete Mathematics, No 50
(1991).
3. Szeider S. Finding paths in graphs avoiding forbidden transitions// Discrete Applied Mathematics, 2003. - 126. - P. 261-273.
4. Zitnik A. Plane graphs with Eulerian Petrie walks // Discrete Mathematics, 2002. - 244. - P. 539549.
5. Pisanski Т., Tucker T.W., Zitnik A. Straight-ahead walks in Eulerian graphs, Discrete Mathematics 281 (2004) - P. 237-246.
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.
8. 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.
9. Панюкова, Т.А. Оптимальные эйлеровы покрытия для плоских графов / Т.А.Панюкова// Дискретный анализ и исследование операций. 2011. - Т.18, №2, с. 64-74.
10. Jonathan L. Gross, Jay Yellen, Handbook of Graph Theory (Discrete Mathematics and Its Applications)/ CRC Press. - 2003. - 1192 p.