Научная статья на тему 'Маршруты с локальными ограничениями: алгоритмы и программная реализация'

Маршруты с локальными ограничениями: алгоритмы и программная реализация Текст научной статьи по специальности «Математика»

CC BY
338
26
i Надоели баннеры? Вы всегда можете отключить рекламу.
Журнал
Прикладная информатика
ВАК
RSCI
Область наук
Ключевые слова
ГРАФ / МАРШРУТ / ЦЕПЬ / ЦИКЛ / ОГРАНИЧЕНИЯ / СИСТЕМА ПЕРЕХОДОВ.

Аннотация научной статьи по математике, автор научной работы — Панюкова Т.А., Алферов И.О.

Авторами ставится задача построения допустимого пути в графе. Показано, что в эйлеровом графе возможно построить допустимый эйлеров цикл, а для произвольного графа — покрытия допустимыми цепями. Работа алгоритмов проиллюстрирована на примерах с помощью разработанного авторами программного обеспечения.

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

Текст научной работы на тему «Маршруты с локальными ограничениями: алгоритмы и программная реализация»

№ 1 (43) 2013

Т. А. Панюкова, канд. физ.-мат. наук, доцент Южно-Уральского государственного

университета, г. Челябинск И. О. Алферов, студент Южно-Уральского государственного

университета, г. Челябинск

Маршруты с локальными ограничениями: алгоритмы и программная реализация

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

Введение

Задачи нахождения маршрутов на графах, удовлетворяющих определенным ограничениям, вызываются конкретными практическими потребностями. В задачах раскроя листового материала плоский граф — это модель раскройного плана, а маршрут, покрывающий все ребра, определяет траекторию перемещения режущего инструмента. Ограничением является отсутствие пересечения внутренних граней любой начальной части маршрута с ребрами его оставшейся части [1]. При построении систем управления манипуляторами с помощью неориентированного графа отображают всевозможные элементы его траектории и решают задачи построения маршрутов, удовлетворяющих различным ограничениям, например: прямолинейных маршрутов [2]; маршрутов, в которых следующее ребро определяется заданным циклическим порядком на множестве ребер, инцидентных текущей вершине [3-5]; маршрутов, в которых часть ребер следует пройти в заданном порядке [5].

Ограничения на порядок обхода вершин и ребер графа можно классифицировать:

• на локальные, когда следующее ребро в маршруте определяется условиями, заданными в текущей вершине или на текущем ребре [2-5, 6-8];

1 Работа выполнена при поддержке Министерства образования и науки РФ, соглашение 14.В37.21.0395.

• глобальные (эйлеровы, гамильтоновы циклы, бинаправленные двойные обходы [4, 5] и т. д.).

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

Алгоритм построения допустимой цепи

Обобщение большинства частных случаев задачи построения простой цепи с локальными ограничениями и анализ вычислительной сложности этой проблемы даны С. Зейдером [7]. Приведем основные определения и результаты его работы.

Ограничимся рассмотрением конечных простых графов. Множество вершин и множество ребер графа G обозначим соответственно через У^) и E(G). Для вершины у е У^) определим множество Ее(у) всех ребер графа G, инцидентных вершине V. Степень вершины V (число ребер G, инцидентных вершине V) обозначим как d(v); для d > 0 положим Уё := {у е Уd(v) = d}. Тот факт, что Н есть вершинно-индуцированный подграф графа G (т. е. подграф, полученный из графа G отбрасыванием некоторого мно-

№ 1 (43) 2013

I

¡8

I

¡5

о &

I &

I

и

I

8-о

жества вершин и всех ребер, инцидентных вершинам этого множества, и только их), обозначим как Н < G.

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

Определение 1. Пусть G — граф. Графом переходов Тв (V) вершины V е Vа) будем называть граф, вершинами которого являются ребра, инцидентные вершине V, т. е. V(TG(V)) = Ев(V), а ребрами — допустимые переходы.

Определение 2. Системой разрешенных переходов (или короче, системой переходов) Та будем называть множество {Тв (V)! V е V(G)}, где Тв (V) — граф переходов в вершине V.

Определение 3. Путь Р = v0, е1, v1,..., ек, vk в графе G является Тв -совместимым, если е(, е(+1 е Е(Тв )) для каждого 1 < i < к -1.

Теорема 1 (С. Зейдер). Если все графы переходов принадлежат либо классу М полных многодольных графов, либо классу р паросочетаний, то задача построения Та -совместимой цепи является разрешимой за время 0(|Еа)). В противном случае данная задача является NP-полной.

Если система переходов вершины V е V(G) — это паросочетание, то задача сводится к задаче для графа

& : V(&) = Vа) \ {V}, Е (а')=(Е(в)\Е(а^)))и{{/у1 }еТв (V)}.

Если "V е V(а), граф Тв(V) является полным многодольным графом, то цепь можно построить с помощью следующего алгоритма [9].

I Алгоритм ^-СОВМЕСТИМЫЙ ПУТЬ

¡3

0

ч

1

.5?

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

• граф а = (V ,Е);

• вершины х,у, между которыми требуется найти цепь без запрещенных переходов;

• система переходов

Тв : (V е V(а)) Тв (V) е М .

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

• последовательность ребер, определяющая Та (V)-совместимый путь между вершинами х и у, либо сообщение об его отсутствии.

Шаг 1. Если вершина X или вершина у является изолированной, останов: пути нет.

Шаг 2. Удалить из графа а изолированные вершины.

Шаг 3. Построить вспомогательный граф а следующим образом (рис. 1):

• каждую вершину V е V(G) расщепить на вершины v1,v2,...,vp(V), где р(у) — число долей графа Та(V). Вершине vp инцидентны ребра соответствующей доли графа Тв (V) и одна дополнительная вершина vp(V);

• добавить две новые вершины w1(v) и w2(v), ребро w1(v)w2(v), и ребро vp(V)wj (V) для каждой доли графа Тв(V), 1 < \ < 2.

Шаг 4. Построить первоначальное паро-сочетание в графе а

М(а) = и

VеV (в)

и ^ин^м}

У.р=1,2,..рМ

Шаг 5. Искать чередующуюся последовательность между вершинами х и у, увеличивающую мощность паросочетания в графе &. Если ее найти не удается — останов

Рис. 1. Иллюстрация построения вспомогательного графа G'

50

№ 1 (43) 2013

V,

{1У5 }} }},

{2У8 }}, {4У6 }},

■{V 8 }},

{8У7 }}, {7У6 }}

{УбУ5 }},

Рис. 2. Пример графа и системы переходов

У1У4 }}

2 }},

V2V1}},

У4У3 }},

У8У5 }},

У7У8 }},

}},

У5У6 }}.

со

о &

и

§ § § £

(паросочетание М(3) имеет максимальную допустимого маршрута или множества мар-

мощность, а граф не имеет "^-совместимо- шрутов, покрывающих все ребра исходного

го пути). В противном случае все ребра дан- графа, нерешенной. ного увеличивающего пути за исключением Покажем на примере графа G и системы

ребер, добавленных при построении графа переходов Тв, представленных на рис. 2, что

G', образуют Тз-совместимую цепь между алгоритм ^-СОВМЕСТИМЫЙ ПУТЬ не мо-

вершинами х и у. Останов.

жет быть использован для построения мар-

Заметим, что в работе [7] вопрос рас- шрутов, покрывающих все ребра графа 3.

познавания многодольности графов Т3 (V)

Граф 3', необходимый для нахождения

остался открытым, а проблема построения Т3-совместимого пути между вершинами

v1 и v7, построение которого описано на шаге 3 алгоритма, приведен на рис. 3.

Первоначальное паросочетание М3') выделено на рисунке жирными линиями. Для него чередующейся увеличивающей последовательностью ребер является

{/5,2} {5X2 } {,2^5,2} {г^}

{{/5,1} {</5,1} {/6,2} {,2^2}

{,2^6,2 }, {,2,1}, {{/6,1} {V6,1V6,1},

{/7,2 }.

Ребра этой последовательности, не вошедшие в первоначальное паросочетание, изображены пунктирной линией. Они образуют множество

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

{/5,2 } {,2^5,2 } {¡/5,1} 5,1 V6,2 }, {,2^6,2}, {,1^6,1} {V6,1V7,2}.

П 51

Рис. 3. Граф ^, полученный с помощью вспомогательных построений из графа G

№ 1 (43) 2013

И

¡8

I

¡5

о &

I &

I

и

I

8-

0

1

¡3

0

ч

1

.5?

Все ребра данного множества, принадлежащие графу G, т. е. },{\/6уе},{еУ7}, образуют Тв -совместимый путь из вершины v1 в вершину v7.

С помощью алгоритма ^-СОВМЕСТИМЫЙ ПУТЬ возможно построение только простой цепи между двумя различными вершинами (т. е. цепи, в которой любая ее вершина встречается ровно один раз).

На рисунке 4 показаны элементы экранного интерфейса программной реализации [6] данного алгоритма. Жирной линией отмечена найденная цепь между вершинами 1 и 4, удовлетворяющая системе разрешенных переходов, задаваемой в отдельном окне FORM_TRANSP.

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

Например, в графе е, приведенном на рис. 2, маршрут

{ V } , } , { ^ } , { V } , {^5 } , {}

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

2},{*}, следовательно, в графе е

не существует чередующегося пути, содержащего оба этих ребра.

Таким образом, открытым остался вопрос распознавания многодольности графов Тв(V), а также проблема построения допустимого маршрута или множества маршрутов, покрывающих все ребра исходного графа.

Рис. 4. Окна программы поиска совместимой цепи

Построение допустимой эйлеровой цепи

Выше были сформулированы ограничения на допустимость маршрутов в терминах системы разрешенных переходов [7] и показано, что задача построения допустимого пути в графе & разрешима за полиномиальное время, если система переходов Тв содержит только паросочетания и полные многодольные графы. Распознавание принадлежности графа разрешенных переходов классу паросочетаний тривиально. Для распознавания принадлежности графа переходов классу полных многодольных графов целесообразно применить понятие системы разбиения [3-6, 8], используемое для определения допустимой цепи в терминах запрещенных переходов [9].

Определение 4. Пусть дан граф & = (V, Е). Пусть Рв (V) — некоторое разбиение множества Ев (V). Системой разбиения графа & будем называть систему множеств Р& := {(V)| V е V(G)}.

Определение 5. Пусть р е Рв(V), е^ е р. Цепь, не содержащую переходов е ^ V ^ f и f ^ V ^ е, будем называть Р^совмести-мой, а переходы е ^ V ^ f и f ^ V ^ е — запрещенными.

Заметим, что граф разрешенных переходов Тв (V) однозначно определяет граф запрещенных переходов Те (V), который явля-

52

№ 1 (43) 2013

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

Напротив, граф разрешенных переходов, определяемый с помощью системы разбиения Ре, не может быть произвольным, а принадлежит классу М полных многодольных графов: элементы разбиения Ре (V) определяют доли графа Те(V) е М, а множество его ребер

Е(Тз(V)) = { е Ев(V): (Ур е Рв(v))(e,f) £ р}.

Граф запрещенных переходов Те (V) в данном случае представляет собой набор из |Ре(V) клик, этот факт может быть использован для распознавания принадлежности Т(V) е М с помощью следующего алгоритма.

Алгоритм РАЗМЕТКА

Входные данные: граф переходов Те (V).

Шаг 1. Объявить все вершины графа Те (V) непомеченными. Положить I = 1.

Шаг 2. Пока список непомеченных вершин не пуст, выполнять шаги 3, 4 и 5. В противном случае — останов: граф Те (V) является многодольным, и вершины, принадлежащие одному элементу разбиения множества вершин, имеют одинаковые пометки.

Шаг 3. Найти некоторую непомеченную вершину V. Присвоить ей пометку I.

Шаг 4. Применить волновой алгоритм для присваивания пометки I всем вершинам, достижимым из вершины V в графе Те (V). Очевидно, что все помеченные на данном шаге вершины будут принадлежать одной компоненте связности графа Те (V).

Шаг 5. Если в выделенной компоненте связности любая пара вершин смежная, то найденная компонента связности является кликой. Положить I = I +1 и перейти к выполнению шага 3. В противном случае — останов: граф Те (V) не является многодольным.

Оценим сложность приведенного алгоритма. Расстановка пометок в конкретной компоненте связности Тк составляет величину О(| Е (Тк )|). Проверка, является ли данная компонента связности кликой, также требует не более О(| Е (Тк))) операций. Таким образом, сложность алгоритма РАЗМЕТКА равна

О

XI Е(Тк )| = О(| Е (Т))).

V У к

со

о &

и

§ §

1

Как было отмечено, алгоритм С. Зей-дера в общем случае не позволяет строить допустимые цепи максимальной длины. Особый интерес представляют собой допустимые эйлеровы цепи. Необходимое и достаточное условие существования Ре-совместимых цепей дает следующая теорема [8].

Теорема 2 (А. Коциг). Связный эйлеров граф е имеет Ре-совместимую эйлерову цепь тогда и только тогда, когда

(УV еУ)( Ур е Ре(V)) < 1 dе(V)

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

О (Е е)|).

Таким образом, на Е (V) (множестве ребер, инцидентных вершине V) задана система разбиения на подмножества. Если ребра е1 и е2 принадлежат одному подмножеству, то после ребра е1 не может следовать ребро е2. Граф е(У ,Е) зададим в виде списка смежности, элементами которого будут структуры. Каждый элемент данной структуры состоит из двух полей [10]: номера вершины V, смежной текущей вершине, и номера с1 элемента разбиения. Для определения степени текущей вершины достаточно узнать длину ее списка смежности.

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

53

№ 1 (43) 2013

I

s

I

¡5

I

о &

I

=s !

I

I

о

л

¡3

о

ч

U f

дет принадлежать разным системам разбиения.

Входные данные в программе представлены в виде списка смежности

vector < list < pair <string, int> > > Graph;

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

Ниже приведен алгоритм построения совместимой цепи.

Алгоритм Ра-СОВМЕСТИМАЯ ЭЙЛЕРОВА ЦЕПЬ

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

• эйлеров граф G = (V,E), заданный списком смежности для каждой вершины;

• система переходов PG(v) Vv е V(G): в списке смежности вершины, относящиеся к одному элементу разбиения, имеют одинаковые пометки.

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

• допустимый эйлеров цикл Gk+1.

Шаг 1. Положить k = 0, Gk = G.

Шаг 2. Найти вершину v, у которой dGk (v) > 2.

Шаг 3. Найти элемент разбиения, который содержит максимальное число ребер. Для этого достаточно просмотреть список смежности текущей вершины v и посчитать число вхождений в него каждого элемента разбиения. Выбрав тот элемент, который встречается чаще, получим класс C е PGk (v): C = {max|C||C е PGr (v)}.

Шаг 4. Выбрать ребра e1(v) е C1 и e2(v) е Eg (v)- C1. По возможности выбрать ребра e1 и e2, инцидентные вершинам, степень которых больше двух. Если множество Eg (v)- C1 = 0, останов: Ре-совместимой эйлер овой цепи не существует. В противном случае перейти на шаг 5.

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

Шаг 5. Построить граф ек+1, отщепив от вершины V вершину V, которой инцидентны только ребра е1 и е2. Остальные ребра оставить инцидентными вершине V. Так как новая вершина V имеет степень 2, то она не рассматривается на последующих шагах работы алгоритма.

Шаг 6. Выбрать класс С2 е Ре (V), которому принадлежит ребро е^). Исключить из системы разбиения вершины V классы С1 и С2. Для этого нужно найти

Р- (V ):= Р^) - {ад}.

Для дальнейшей модификации системы разбиений выполнить следующие действия.

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

Шаг 6.2. Если системы C и C стояли из одного ребра >).

с = с2 = 1

PG.»:= P-

Шаг 6.3. Если

C

P'

1 п

gJv) := PGk (v) U {C - {e1(v)}}.1 Ш аг 6.4. Если

> \сг\ = 1

C > 1

со, то

то

то

Р3к1 (V) := Р- (V) и {С - {е^)},С2 - {e2(v)}}.

Ш аг 6.5. Построить

р-к+1 = и р-к.(х).

х еУ (312)

Шаг 7. Определить значение о(3к+1) = 2(|Е(3к+1)|-|У(3к+1)). Заметим, что количество ребер графа остается неизменным, а количество вершин на каждой итерации увеличивается на единицу.

Шаг 8. Если о(ек+1) > 0, положить к = к +1, перейти на шаг 2, для графа ек+1. В противном случае — перейти на шаг 9.

Шаг 9. Выбрать любую вершину V и пометить все вершины, достижимые из данной. Если остались непомеченные вершины, перейти на шаг 10, иначе останов — построенный граф ек+1 является эйлеровой цепью, не содержащей запрещенных переходов.

Шаг 10. Из списка помеченных и не помеченных вершин графа ек+1 найти вершины v1 и v2, отщепленные от одной вершины V графа е0 и объединить их в вершину V,,-.

54

№ 1 (43) 2013

Получим модифицированный граф положим к = к +1.

Шаг 11. Выбрать ребра е^12) е С1 и е2(^2) е Ее ^12)- С1, так чтобы {е1,е2} ф Е(v1) и {е1,е2} фЕ (v2). Если множество Ее (^2) - С1 = 0, останов: Ре — совместимой эйлеровой цепи не существует. В противном случае построить граф ек+1, отщепив от вершины v12 вершину у12, которой инцидентны только ребра е1 и е2 . Остальные ребра оставить инцидентными вершине v12 и перейти на шаг 9.

В [9] доказана следующая теорема.

Теорема 3. Алгоритм PG-СОВМЕСТИ-МАЯ ЭЙЛЕРОВА ЦЕПЬ корректно решает задачу построения Р(е) -совместимой эйлеровой цепи.

Доказательство. Если для некоторого к,

такого что С" е Р^ ^ (V), выполнено неравенство С"| > С - {е^)}|, то С" е Ре+ (V) и

< \С"\ = С < 1 ^ (V) -1 = 1 ^+l(v).

На основании указанного факта можно заключить, что |С| < 1 бе+ ^ (V) для каждой вершины V е V(ек+1) и каждого класса С е Рвк ^ (V) с Ре ^. При этом величина

ое+1) = \Е(ек+1)-\\/(ек+1)\ <о(ек). Если граф ек+1 является циклом, то число его ребер и вершин совпадают, т. е. в данном случае

о(ек+1) = 0. Если же граф ек+1 является цепью, то число вершин превышает число ребер на 2, следовательно, в этом случае о(ек+1) = -2. Если же на некотором этапе для е^) е С1 не удалось найти е2^) е Ее (V) - С1, это значит, что С > а^)/2, т. е. не выполнены необходимые и достаточные условия существования эйлерова цикла (теорема Коцига). Из этих фактов следует корректность выполнения алгоритма. Теорема доказана.

Оценим вычислительную сложность предложенного алгоритма. Выполнения шагов 2, 6, 6 и 7 можно организовать с использованием не более 0(1) операций (за счет специальных структур данных). Выполнения же шагов 3 и 4 можно организовать с использованием не более 0(а& (V)) операций. Цикл алгоритма будет повторен не более чем а (е) раз. В итоге имеем, что алгоритм потребует число операций не менее

0

х авк V) = о(|е(е)| • V(е)|).

У.к=о,1...о(е)

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

Рассмотрим построение допустимой эйлеровой цепи для графа, приведенного на рис. 6.

1 (2,2) (6,1) (8,2) (5,1)

2 (1,2) (6,1) (7,1) (3,2)

3 (2,1) (7,1) (5,2) (4,2)

4 (3,2) (5,1)

5 (4,1) (3,1) (8,2) (1,2)

6 (1,1) (2,1) (7,2) (8,2)

7 (2,2) (3,1) (6,1) (8,2)

8 (1,2) (6,1) (7,2) (5,2)

0 &

и

сэ

55 £

§

1 £

Рис. 5. Пример графа и заданная система переходов

55

№ 1 (43) 2013

I

¡8

I

¡5

о &

I &

I

и

I

8-о

Л

¡3

0

ч

и

1 (8,2) (5,1)

2 (7,1) (3,2)

3 (2,1) (7,1) (5,2) (4,2)

4 (3,2) (5,1)

5 (4,1) (3,1) (8,2) (1,2)

6 (1',1) | (2',1) (7,2) (8,2)

7 (2,2) (3,1) (6,1) (8,2)

8 (1,2) (6,1) (7,2) (5,2)

1' (2',2) (6,1)

2' (1,2) (6,1)

ация алгоритма

1 (8,2) (5,1)

2 (7,1) | (3',2)

3 (7,1) (4,2)

4 (3,2) (5,1)

5 (4,1) | (3',1) (8,2) (1,2)

6 (1',1) (2',1) (7,2) (8,2)

7 (2,2) (3,1) (6,1) (8,2)

8 (1,2) (6,1) (7,2) (5,2)

1' (2',2) (6,1)

2' (1,2) (6,1)

3' (2,1) (5,2)

Рис. 8. Третья итерация алгоритма

56

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

№ 1 (43) 2013

1 (8',2) (5,1)

2 (7',1) (3',2)

3 (7',1) (4,2)

4 (3,2) (5',1)

5 (3',1) (1,2)

6 (2',1) (8',2)

7 (6',1) (8,2)

8 (7,2) (5',2)

1' (2',2) (6',1)

2' (1,2) (6,1)

3' (2,1) (5,2)

5' (4,1) (8,2)

6' (1',1) (7,2)

7' (2,2) (3,1)

8' (1,2) (6,1)

Рис. 12. Седьмая (последняя) итерация алгоритма

\, 57

№ 1 (43) 2013

s

I

¡5

5

о

6

I

ss !

I

»

£

8-

0

1

s

0

ч

to

1

.S?

Построим допустимый эйлеров цикл, начинающийся и заканчивающийся в вершине 1. На первой итерации будет осуществлено расщепление начальной вершины. Для простоты на рис. 6-12, иллюстрирующих пример, не показаны дополнительные построения при расщеплении вершин.

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

На рисунках 7-12 представлены последующие итерации работы алгоритма, списки смежности для рис. 10 и 11 заинтересованному читателю предлагается построить самостоятельно.

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

1 ^ 2 ^ 6 ^ 8 ^ 1 ^ 5 ^ 3 ^ 2 ^ ^ 7 ^ 3 ^ 4 ^ 5 ^ 8 ^ 7 ^ 6 ^ 1.

Покрытие графа допустимыми цепями

Рассмотрим задачу покрытия графа допустимыми цепями [9]. Будем считать, что система переходов TG содержит только паросочетания и полные многодольные графы.

Алгоритм ПОКРЫТИЕ Тд-ДОПУСТИМЫМИ ЦЕПЯМИ

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

• граф G = (V,E),

• графы переходов TG(v) Vv e V(G).

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

• набор маршрутов T, i = 1,2,...,k, покрывающих граф G, где m = 2k — число вершин нечетной степени.

Шаг 1. Пусть U = {v е V(G) : TG(v) — паро-сочетание. Произвести редукцию графа G до графа G' :

58

V(G') = V(G)\ U , E(G') =fE(G)\ U Eg (v) 1U

V veU y

U { U { }:{{ vv } e tg (v)}

Графы TG (v) редуцировать до графов TG, (v) заменой всех вхождений вершин u eU: vu,wu е ET (u) вершиной w.

Шаг 2. Достроить граф G' до G введением дополнительной вершины v*, смежной всем вершинам нечетной степени графа G'. Систему переходов TG,(v) модифицировать до системы переходов TG. введением Vv е V'(G): d(v) = 1 (mod 2) в граф переходов TG. (v) вершины vv *, смежной всем вершинам в графе TG,(v).

Шаг 3. Для Vv е V(G) таких, что Зр е P(v): |р| > d(v)/2 , ввести 2|р| -d(v) дополнительных ребер (vv*)., i = 1,2.....21p\ - d(v) в граф

G*. Модифициро вать граф переходов TG. (v) введением вершин (vv*)., смежных всем вершинам исходного графа TG.(v) и только им.

Шаг 4. Найти в G" Г .-совместимый эй. G леров цикл T .

Шаг 5. Построить покрытие T' графа G' цепями, удалив из T' ребра (vv ).

Шаг 6. Модифицировать маршруты из T' до маршрутов из T добавлением вершин u eU, удаленных на шаге 1.

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

Теорема 4. Алгоритм ПОКРЫТИЕ Ts-ДОПУСТИМЫМИ ЦЕПЯМИ корректно решает задачу минимального покрытия графа TG-допустимыми цепями. Его сложность не превосходит величины 0(|E(G)| • |V(G)|).

Доказательство. В результате выполнения шага 1 приходим к задаче для полного многодольного графа G . Данное преобразование возможно выполнить, используя не более 0(| E (G))) операций.

В результате выполнения шага 2 получаем задачу для эйлерова графа, в каждой вершине v которого граф переходов TG.(v) является полным и многодольным. Введенная в граф TG,(v) дополнительная верши-

№ 1 (43) 2013

на ^ * — это отдельный элемент разбиения в Р^^).

На шеаге 3 проверяется выполнение необходимых и достаточных условий существования допустимого эйлерова цикла (теорема Коцига). Во всех вершинах, где условия теоремы Коцига не выполнены, в граф 3 добавляются мультиребра (*)., i = 1,2,...,2|р^)]-d(v). Также модифицирует^-ся и система разбиения Р^^) добавлением элемента разбиения, содержащего все ребра (V*).. Такие модификации также выполняются за время, не превосходящее О(|У(3) • |Е(3)).

В результате проведенных модификаций граф е" будет эйлеровым, а его система разбиения удовлетворит теореме Ко-цига.

Для построения допустимого эйлерова цикла, содержащего и дополнительные ребра, смежные V*, на шаге 4 требуется не более О(|У(е)\ • |Е(3)) операций.

На шаге 5 получим I = d(v ) простых цепей удалением ребер, инцидентных вершине V*, которые были добавлены на шагах 2 и 3. Все полученные таким образом цепи будут Рв,-допустимыми в графе 3. Сложность этого этапа составляет величину О(| Е (3)).

На шаге 6 происходит добавление удаленных на шаге 1 вершин, что также требует не более чем о(| Е (3)) операций вставки.

В результате выполненных операций получим покрытие графа I +1 цепями за время О(|У(3)\ • |Е(3)). Предположение существования покрытия с меньшим числом цепей приведет к противоречию с теоремой Коцига. Теорема доказана.

Заключение

В работе предложен алгоритм распознавания системы переходов, позволяющий построить допустимый путь за линейное время. Показано, что в эйлеровом графе 3 возможно отыскание Р3-допустимого эйлерова цикла или установление его отсут-

00

ствия за время 0(| E (G)| • |^(G)|) с помощью Ц

разработанного алгоритма Ре-СОВМЕС- j|

ТИМАЯ ЭЙЛЕРОВА ЦЕПЬ. Покрытие гра- ^

фа G допустимыми цепями также возмож- ss

но за время 0(| E (G)| • |^(G|) с помощью ал- §~

горитма ПОКРЫТИЕ ^-ДОПУСТИМЫМИ Ц

ЦЕПЯМИ. |

Список литературы к

1. Панюкова Т. А. Оптимизация использования ресурсов при технологической подготовке процесса раскроя // Прикладная информатика. 2012. № 3 (39). С. 20-32.

2. Pisanski Т., Tucker T. W, Zitnik A. Straight-ahead walks in Eulerian graphs // Discrete Mathematics. 2004. № 281. P. 237-246.

3. Фляйшнер Г. Эйлеровы графы и смежные вопросы / пер. с англ. М.: Мир, 2002. — 335 с.

4. Fleischner H. Eulerian Graphs and Related Topics. Part 1, Vol. 2. Ann. Discrete Mathematics. 1991. № 50.

5. Fleichner H. Eulerian Graphs, in: Beineke L. W., Wilson R. J. (eds.) Selected Topics in Graph Theory 2. Academic Press, London-NewYork, 1983. Р. 17-53.

6. Panyukova T. The Covering of Graphs by Trails with Local Restrictions// Proceedings oh the 13-th International Workshop on Computer Science and Information Technologies, изд-во УГАТУ, 2011. Т. 1. C. 202-207.

7. Szeider S. Finding paths in graphs avoiding forbidden transitions // Discrete Applied Mathematics. 2003. Vol. 126. Issues 2-3. P. 261-273.

8. KotzigA. Moves Without Forbidden Transitions in a Graph, Mat.-Fiz. Casopis 18. 1968. № 1. Р. 76-80.

9. Панюкова Т. А. Маршруты с локальными ограничениями // Вестник Южно-Уральского государственного университета. Серия: Математическое моделирование и программирование. Вып. 5. 2010. № 16 (192). С. 58-67.

10. Алферов И. О., Панюкова Т. А. Техника программной реализации алгоритма построения допустимой эйлеровой цепи // Информационные технологии и системы: материалы Первой междунар. конф. Банное, Россия. 28.024.03.2012 / отв. ред. В. А. Мельников. Челябинск: Изд-во Челяб. гос. ун-та, 2012. С. 32-34.

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