Базовый алгоритм восстановления конечного графа
Аннотация
Рассматривается задача восстановления графа агентом, перемещающимся
по его ребрам, считывающим и изменяющим метки на элементах графа.
Предложен базовый метод восстановления. Алгоритм требует 2
различные краски и кубического, от числа вершин графа, числа шагов.
Найдены модификации алгоритма, которые понижают верхнюю оценку
временной сложности. Найдены операции над графами, результирующий
граф которых имеет верхнюю оценку сложности выполнения базового
алгоритма не хуже, чем исходный.
Ключевые слова: восстановление графов, агент, метка вершины,
блуждание по графу.
1 Введение
Рассматривается задача распознавания конечного,
неориентированного графа, без петель и кратных ребер при помощи
агента, который перемещается по нему и изменяет метки на вершинах
и ребрах графа [1]. Данная работа посвящена анализу базового алгоритма,
предложенного в [4]. Показывается, что алгоритмы, предложенные в
[5–7], являются модификациями алгоритма, предложенного в
[4].
Рассматриваются классы графов, на которых понижается верхняя оценка
сложности выполнения базового алгоритма или его модификаций. Найдены
операции над графами, результирующий граф которых имеет порядок
верхней оценки сложности выполнения не хуже, чем исходный.
2 Необходимые определения и понятия
Рассматриваются конечные, неориентированные графы, без петель и
кратных ребер. Все неопределяемые понятия общеизвестны и их можно
найти, например, в [2–4]. Пусть G(V,E) – граф,
у
которого V - множество вершин, Е – множество
ребер, Е С V х V, мощности пит, соответственно.
Ясно, что т < 5. Тройку ((u,v),v) будем
называть инцидентором ("точкой прикосновения") ребра (u,v) и
вершины v. Множество таких троек обозначим I. Множество
L = UEUIназовем множеством элементов графа G. Краской будем
называть ресурс, который имеется у агента в неограниченном
количестве, а камнем - ресурс, который имеется у агента в
единичном экземпляре. Краски и камни образуют множество
меток –
М,
которые могут быть использованы при раскраске элементов графа G.Если
элемент графа метится некоторой краской, то предыдущая краска
стирается и вместо нее наносится новая. Если элемент графа метят
камнем, то существующая на нем краска не уничтожается, а
становится "невидимой" до тех пор, пока камень будет находиться на
элементе. Функцией раскраски графа G назовем отображение ц
: L -М , где М = {w, b, г, l..,p}, w интерпретируется
как белый цвет (краска), г – красный, b –
черный, а
множество чисел 1, ..,р интерпретируется как множество камней.
Последовательность U1, U2 попарно смежных вершин называется путем в
графе G , а к – длина пути. При U1 = Uk этот
путь
называется циклом. Окрестностью 0(v) вершины v будем называть
множество элементов графа, состоящее из вершины v, и смежных с v,всех
ребер (m, v) и всех инциденторов цикломатическое число графа равное
т–n + 1. Изоморфизмом графа G и графа Я
назовем
такую биекцию <f>:VG->VH, что (u,v)
G EG точно тогда, когда (ф{у),ф(и)) G ЕH.
Изоморфные графы равны с точностью до обозначения вершин и
раскраски их элементов.
Мобильный агент А (далее просто А) характеризуется
следующими свойствами. Он передвигается по графу из вершины и в
вершину v по ребру (v,u). При этом он может изменить
окраску вершин u,v, ребра (v,u), инциденторов((v,u),v),((v,u),u)
метками из множества М. Находясь в вершине v А воспринимает
("видит") метки всех элементов окрестности 0(v) и на этом основании
определяет по какому ребру (v,u) он будет перемещаться и как будет
перекрашивать элементы из О (у). А обладает конечной, неограниченно
растущей внутренней памятью, в которой фиксируется результат его
функционирования на каждом шаге, и, кроме того, выстраивается
представление графа G, вначале неизвестного А, списками ребер и вершин.
Вершину, в которой А находится в данный момент, будем называть
текущей. Будем говорить, что А "зациклился" , если он попал в
вершину, из которой он может попасть только в ранее посещенные вершины.
Откатом будем называть отход А по вершинам красного пути (далее
г –
путь) из его конца к его началу или же из некоторой вершины
г –
пути к
его концу при восстановлении обратных ребер. Длина отката зависит от
длины г – пути, длина которого не более, чем n.
Нумерацией F : V{G) – N вершин графа G называется
инъективное
отображение множества его вершин во множество N натуральных чисел.
Номер вершины ueVGв нумерации F обозначается F(v) .
М –
нумерацией вершин графа называется нумерация вершин графа,
соответствующая порядку их обхода при поиске в глубину [4]. Древесными
ребрами называются [4] ребра, порождающие дерево поиска при обходе
графа в глубину, остальные ребра – обратные. Вершиной
сочленения будем
называть вершину v такую, что после ее удаления и инцидентных ей ребер
граф становится несвязным [9].
Т(п) назовем временной сложностью выполнения алгоритма, а Т*(п) и
ТЦ, соответственно, верхней и нижней оценкой временной сложности.
S(n) – емкостная сложность выполнения алгоритма.
3 Постановка задачи
Пусть задан класс К графов конечных, неориентированных, без
петель и кратных ребер, все элементы которых окрашены краской w.
Требуется разработать такой алгоритм функционирования А (т.е.
передвижения по графу и раскраски его элементов), что он, будучи
помещен в произвольную вершину произвольного неизвестного ему
графа G G К, через конечное число шагов построит граф Я, изоморфный G,
т.е. восстановит G.
4 Алгоритм восстановления графа
4.1 Стратегия
Предлагаемый алгоритм основан на стратегии поиска в глубину.
Предлагаемая стратегия обладает рядом особенностей, по сравнению с
известными. Во – первых, граф G А не известен и
А на
каждом шаге обладает информацией о красках элементов из окрестности
0(v) текущей вершины v. Во – вторых, при прохождении вершин графа
G А
создает неявную М – нумерацию пройденных вершин: при первом
посещении
вершины и она окрашивается красным цветом и ей фактически ставится в
соответствие следующий номер по порядку. На основе этой нумерации и
происходит построение графа Н изоморфного G, с точностью до меток
на элементах. В процессе обхода графа G А строит неявное дерево поиска
в глубину и относительно этого дерева все ребра разделяются на:
древесные и обратные. Древесные ребра проходятся, по крайне мере, 2
раза: при первом прохождении А метит один из инциденторов ребра
красной краской, а при последнем проходе он окрашивает оба инцидентора
ребра черным цветом. Обратные - проходятся один раз и при первом
прохождении оба инцидентора ребра метятся черной краской.
Древесные ребра восстанавливаются при первом проходе А по ним.
Красные вершины графа G, на каждом шаге алгоритма, образуют
простой г – путь длины не более, чем п. С помощью этого пути
распознаются обратные ребра, при проходе в новую вершину г –
путь
удлиняется, при проходе назад – укорачивается, при
распознавании
обратного ребра – не изменяется. Вершина, у которой все
инцидентные
ребра восстановлены, красится черным. Алгоритм завершает работу, когда
г – путь становиться пустым, а все вершины черными.
4.2. "Базовый алгоритм"
В описании алгоритма v – текущая вершина графа G, V#,
Ен – списки
вершин и ребер графа, Н – счетчик числа посещенных вершин
графа G.
к(1), к(2),.., k(t) – список номеров вершин г –
пути, t – длина этого
списка, j – счетчик, используемый для восстановления
обратных ребер.
1. Сч:=1;
2. t := 1;
3. k(t) :=Сч;
4.VH = {1};
5.Ен := 0;
6.А красит: j,(v) := г;
7.if в 0(v) есть ребро (v,u) с n((u,v),v) = w
then goto 8 else goto 9;
8.if в 0(v) есть ребро (v,u), у которого ц(у,и)
= w и ц(и) = fi(v) = г then ВОССТ» else ВПЕРЕДИ)
9.if в 0(v) есть ребро (v,u) с fi(((v,u), v))
= г then do НАЗАД(^); goto 7; end do;
10.А красит: fj,(v) := b; ВПЕРЕДИ)
1.А выбирает из 0(v) произвольное ребро (v,u), у которого
ц(и) = fi(v,u) = w, и переходит по нему в вершину и;
2.t(у,и) := г, ц(и) = г, ц((у,и),и) := г;
3.Сч:=Сч+1;
4.k(t + l) :=Сч;
5. t :=£ + l;
6. v := и;
7. VH := VH U {Сч}
8. EH:=EHU{k(t-l),k(t)};
НАЗАД(и)
1.выбирает ребро (v,u) е 0(v), у которого
/i(v,u) = г, и /i((v,u),v) = г, переходит по нему в вершину и.
2. А красит: c{у) := b, i(v,u) := b;
3. v := и;
4.t:=t – 1;
5. Из списка к{1),.., k(t + 1) удаляется элемент k(t + 1); ВОССТ(v)
1.выбирает из 0{у) произвольное ребро (v,u)
2. А красит: i(v,u) := b;
3. А выбирает из <Э{у) ребро (h, г), у которого c(g,г) = г
и ^((b,*),*) = г, и переходит по нему в вершину z;
4. k := z ;
5. j := 1;
6.в окрестности О (и) есть ребро (и, г), у которого ц{и,г) = г и
/i((u,z),z)
= r do
7.А переходит по ребру (и, z) в вершину z;
8.b := z;
9.j :=j + l; end do
10. £H := ^H U {(k(t), k(t
– j))}; Подробно
базовый
алгоритм описан в [5].
Теорема 1. Выполняя "Базовый алгоритм", А восстановит любой граф GeK
с точностью до изоморфизма, за время не большее, чем 0(п3).
При этом используется 2 краски и не более, чем ячеек памяти. Нижняя
оценка временной и емкостной сложности равны 0(п).
Доказательство теоремы приведено в [5].
При выполнении процедуры ВПЕРЕДИ) и НАЗАД(^) А проходит одно ребро,
при выполнении процедура ВОССТ» А проходит одно обратное ребро и
не более п – ребер г – пути, т. е. цикл, состоящий из
обратного ребра и
некоторого конечного отрезка г – пути, соединяющего вершины,
инцидентные обратному ребру. При выполнении алгоритма А проходит
дерево поиска в глубину, состоящее из п — 1 ребер, и т –
п+1
обратных ребер. Будем считать, что инициализация алгоритма (строки
1–6
описания алгоритма восстановления), анализ окрестности 0(v) текущей
вершины и выбор одной из трех процедур занимают некоторое
постоянное число единиц времени. Так же будет считать, что выбор ребра
при выполнении процедур и проход по ребру осуществляется за 1 единицу
времени. Тогда временная сложность алгоритма определяется суммой
следующих величин:
1. Инициализация
выполняется один раз и ее сложность равна O(l);
2. Процедура ВПЕРЕДИ) выполняется ровно п – 1 раз и
общее время
ее выполнения оценивается как 0(п);
3. Общее время выполнения процедуры НАЗАД(г>) оценивается
как 0(п)
4. Выполнение процедуры ВОССТ один раз оценивается как
<Э(п), а ее выполнение для всех обратных ребер как 0(п(т
— п + 1)), т.е. как значит, Т*(п) есть величина. Емкостная
сложность S(n) алгоритма определяется сложностью списков Vh,Eh,
к(1),.., k(t), сложность которых, соответственно, определяется
величинами 0{п),0{п2}, 0{п). Следовательно: S{n) = 0{п2}.
5. Модификации "Базового алгоритма"
"Базовый алгоритм" имеет достаточно высокий порядок верхней
оценки временной сложности и, поскольку число вершин графов
неограниченно, А требуется конечная, но бесконечно растущая
память. Модификации "Базового алгоритма" дают лучшие оценки
временной и емкостной сложностей.
В настоящей работе рассматриваются следующие модификации "Базового
алгоритма":1) разделить А на два агента: агента исследователя АИ,
с конечной памятью, и агента экспериментатора АЭ; 2) восстанавливать
обратные ребра, сразу все для одной вершины; 3) восстанавливать
обратные ребра, при "зацикливании" А; 4) Разделить множества ребер
на непересекающиеся классы,которые восстанавливаются различными
стратегиями.
Подробно эти методы описаны в [5–7]. Целью настоящего
раздела -
показать, что "Базовый алгоритм" является основой этих модификаций.
5.1. Модификация 1
Поскольку при обходе графа и разметки его элементов А не пользуется
записанной ранее в память информацией, а только оперирует с ней на
определенных этапах обхода и разметки, возможно разделение А на два
агента АИ и АЭ. Первый будет перемещаться по графу G, считывать и
изменять метки на элементах графа, и передавать сообщения АЭ о своих
передвижениях и изменениях меток. Второй будет принимать сообщения,
обрабатывать их и на их основании строить граф Я. Принципиально
"Базовый алгоритм" не изменяется, изменяется, только то, что АИ будет
передавать соответствующее сообщение и не будет строить в своей памяти
представление графа Я. Различных видов сообщений, которые передает АИ,
будет ограниченное количество, поэтому АИ может быть реализован
конечным автоматом. Данная модификация позволяет АЭ строить граф Я либо
в процессе приема сообщения от АИ, либо после того, как АИ отправит
последнее сообщение. Алгоритм, где применяется данная модификация
подробнее описан в [6]. Данная модификация не меняет порядка Г*(и), а
только ослабляет ограничения накладываемые, на АИ.
5.2. Модификация 2
При стратегии восстановления всех обратных ребер, инцидентных
вершине и, за одно выполнение процедуры ВОССТ(f) изменится только
процедура ВОССТ(f). В ней А будет метить исследуемую вершину и камнем I
(признак того, что для данной вершины восстанавливаются обратные
ребра), а затем отходить от нее по г - пути к его началу, для
поиска белых ребер, смежных с вершиной и, у которой fi(u) = I. При этом
подсчитывается количество переходов до каждого момента, когда А видит
вершину fi(u) = I . Затем на основании неявной М - нумерации происходит
восстановление всех обратных ребер вершины и и по г - пути АИ
возвращается в его конец. При этом процедура ВОССТ(f) вызывается только
один раз для каждой вершины графа, вне зависимости от количества
обратных ребер, смежных с ней. Тогда вызов процедуры ВОССТ» будет
производиться не – п+1 раз (количество обратных
ребер), аn раз
(для каждой вершины один раз). В этом случае Г*(и) будет величиной 0{п2)
, однако А потребуется один дополнительный камень I.
5.3. Модификация 3
Обратные ребра можно восстанавливать как при первом их появлении, а
так же при "зацикливании" А. При этом не произойдет изменения ни Т*(п),
ни S(n) и А потребоваться то же самое количество камней, однако это
повлияет на то, в какой момент времени будет вызываться процедура
ВОССТ(f) , т.е. обратные ребра будут восстановлены в графе Я.
5.4. Модификация 4
Множество вершин графа G разобьем на два множества: ординарные
и неординарные вершины. Вершина v G Vg ординарная, если deg(v)
< D , где D – заранее известная константа. В противном
случае
вершина неординарная. Для того, чтобы А на графе G мог разбить
множество вершин на два непересекающихся класса, необходимо выполнения
условия: для всех (u,v) G Eg, либо
v, либо и – ординарная вершина. В этом случае множество
ребер
разбивается на три непересекающиеся множества: древесные, обратные
и неординарные, т.е. те, которые смежны с неординарной вершиной.
Обратные и древесные ребра для ординарных вершин восстанавливаются, так
же как и в "Базовом методе" или его модификации 1 – 3.
Обратных ребер у
ординарной вершины не более, чем D, А может их подсчитать и при
выполнении процедуры ВОССТ(f) подсчитывать количество
восстановленных ребер и прекратить отход по вершинам г - пути, когда он
восстановит все обратные ребра вершины, не доходя до начала
г –
пути.
Неординарные ребра восстанавливаются так: неординарное ребро, по
которому А попал в неординарную вершину и пометил ее камнем г из
множества камней {1, ..,р}, восстанавливается при первом
прохождении. В момент пометки вершины камнем г, в графе Н с камнем
г ассоциируется следующая по порядку вершина, и, таким образом, ей
присваивается неявный номер. Все остальные неординарные ребра
неординарной вершины, помеченной г камнем, восстанавливаются, когда А
попадает в вершину г – пути, из которой видно неординарную
вершину,
помеченную камнем г, в этом случае для неординарного ребра неявные
номера смежных с ним вершин вычисляются без дополнительных переходов.
Алгоритм, реализующий данную модификацию, подробно описан в [6].
Поскольку А строит представление графа в виде списка ребер графа , то в
случае, если р – заранее известная константа, количество
ребер будет
величиной 0(п) и тогда S(n) будет величиной 0(п), что на порядок лучше,
чем в общем случае.
6. Частные случаи классов графов и операции над ними
В данном разделе будут рассмотрены некоторые классы графов и
операции над ними, такие, что при выполнении на них "Базового
алгоритма" или его модификаций 1–4 возможно будет
понизить верхнюю
оценку временной или емкостной сложности, либо она не будет ухудшена.
6.1. Классы графов
Рассмотрим следующие классы графов.
Пусть К – класс графов конечных, неориентированных, без
петель и
кратных ребер, элементы которых можно метить специальными красками. Это
самый широкий класс графов, все остальные классы являются его
подклассами.
Пусть Кр£ – класс графов, содержащих р
неординарных вершин, а степень ординарных не превышает D.
Отдельного внимания заслуживает случай, когда р = О, обозначим его KD.
Лемма 1. Верхняя оценка емкостной сложности восстановления
графа G G KD "Базовым алгоритмом" или его модификациями
1–4
является величиной 0(п).
Доказательство. А строит граф Я в виде списка ребер. Поскольку т
< Dn, то для хранения потребуется 2т ячеек памяти и не более, чем
п – ячеек для хранения списка вершин г – пути.
Таким образом,
S(n) будет величиной 0(п).
Замечание 1.Утверждение леммы справедливо и для графа G G KpD,
при условии, что р заранее известная константа. Поскольку
количество неординарных ребер не превосходит рп, то S(n) будет
величиной порядка 0(п+рп) = О in).
Лемма 2. Верхняя оценка временной сложности "Базового алгоритма" на
графе G G KD является величиной 0(п2).
Доказательство. Поскольку граф G G KD , то в нем будет не
более, чем Dn обратных ребер, для каждого из которых будет выполнять
процедуру ВОССТ» , которая выполняется не более, чем за п шагов.
Тогда Т*(п) будет величиной 0(п2).
6.2. Операции над графами
Рассмотрим операции над графами, при применении которых верхняя
оценка результирующего графа не ухудшается.
6.2.1. Операция отождествления
Отождествление двух вершин гл и v2 графов i и G2
из класса К, порождают граф G , в котором вершины V и V2
объединяются в вершину сочленения и. Частный случай
отождествления, когда один из графов G1 или G2 состоит из двух вершин,
соединенных ребром. Такое отождествление фактически является
добавлением к графу висячей вершины. Отождествление будет правильным,
если: 1) не будут отождествляться ординарная и неординарная вершины; 2)
не будет нарушаться ординарность получаемой вершины сочленения; 3)
нарушение ординарности увеличит D на константу. Далее будем
рассматривать только правильные отождествления.
Лемма. Граф G, полученный отождествлением двух графов Gx
и G2, восстанавливается за время не большее, чемTj*(n)
+ Т2*(п), где Tj*(n) и Т2*(п) - верхние
оценки временной
сложности восстановления G и G2, соответственно.
Доказательство. Рассмотрим все возможные варианты начала выполнения
агентом А алгоритма восстановления G. Пусть и\ вершина сочленения G\ и
СоСуществует три различных начальных положения А : 1) А попал в
вершинуmщ; 2) А попал в вершину ы G V(Gi)\{ui}; 3) А попал в вершину v2
G V(G2)\{ui}. Рассмотрим эти случаи.
добавляет вершину и\ в г – путь. После этого он либо
попадет в
вершину vi/ G V(Gi)\{m}, либо в вершину v2f G F(G2)\{ui}.
Предположим, что он попал в V\l (v2f). Поскольку вершина и\
добавлена в г – путь, то А может попасть из вершин
содержащихся в
V(G\)\{ui} (V(G2)\{u\}) в вершины, содержащиеся в V(G2)\{ui}
(V(Gi)\{ui}), только после того, как он посетит их все, восстановит
инцидентные им ребра и вернется в щ. А восстановит подграф G, который
совпадает с графом Gi (G2). Затем он вернется в щ и перейдет
в вершину v2l (v1l) и продолжит обход графа. Таким образом,
А восстановит подграф G, который совпадает с графом G2 (Gi).
Тогда Г*(и) = Т*(п) + Т*(п).
2. А добавит вершину V\ в г – путь. В этом случае
существует
два различных варианта дальнейшего выполнения алгоритма.
2.1. А из г>1 начинает выполнение алгоритма и
выполняет его для подграфа G, который совпадает с G. Затем он попадает
в вершину Ui, а из нее в вершину v2l £ V(G2)\{u\}
и продолжает выполнять алгоритм, для подграфа G, который совпадает с Gx.
Следовательно, Г*(n) = Т*(п) + Т*(п).
2.2. А из г>1 начинает восстановление и выполняет его для
подграфа G, который совпадает с G, подграфом G. Затем он попадает в
вершину U, а из нее в вершину v2f G V(G2)\{u\} и
продолжает восстанавливать подграф G, который совпадает с G2.
После перехода в вершину щ А добавит ее в г – путь, и из
подграфа G,
который совпадает с G2, А уйдет только после того, как
полностью его восстановит. После чего А вернется в вершину U\ и
продолжит восстановление графа, для оставшейся части G = Gi\Gxl
. В силу выше сказанного Г*(и) = 2\*(п) + Т2*(п).
Следовательно, в этом случае утверждение теоремы для G выполняется.
3. Этот случай полностью аналогичен случаю 2. Воспользуемся
рассуждениями из пункта 2., рассматривая вместо графа G2
граф Gx, а вместо графа Gx граф G2.
Из пунктов 1 -3 следует справедливость леммы.
Лемма 4. Граф G, полученный добавлением в граф Съ из
некоторого класса, висячей вершины имеет порядок сложности выполнения
"Базового алгоритма" и его модификаций 1 – 4, такой же, что
и Gx.
Доказательство. В добавленную висячую вершину можно будет попасть
только по добавленному вместе с ней ребру. Значит, добавленное ребро
может быть только древесным и для него А выполнит 2 шага. Таким
образом, Т*(п) изменится на величину О(2), что не изменит порядок ее
сложности.
Замечание 2. Если в граф последовательно добавить к висячих вершин,
то Т*(п) изменится на величину О(2k), что не изменит порядок ее
сложности.
6.2.2. Введение вершины "Штейнера". Введение в граф "вершины
Штей-нера" [8] - добавление вершины между двумя соединенными ребром
вершинами с последующим удалением соединяющего ребра и соединением
ребрами добавленной вершины и исходных.
Лемма 5. Граф G, полученный добавлением в граф G1, из
некоторого класса,вершины "Штейнера" имеет порядок сложности
выполнения "Базового алгоритма" и его модификаций 1–- 4,
такой же,
что и Gx.
Доказательство. Предположим, что между вершинами vi и v2
была добавлена вершина и, ребро (vhv2) было
удалено из графа Gx, а ребра – (уъи) и
(v2,u)
добавлены.
Рассмотрим, как изменится Г*(и), в зависимости от того, было ли
ребро (vbv2) древесным или обратным при
выполнении А восстановления графа G.
1.Если ребро (vi,v2) было древесным, то (vbu)
и (v2,u) в графе G так же будут древесными, поскольку А в
вершину и может попасть из вершины V1, а выйти из нее, только в вершину
v2, и наоборот. Значит, А потребуется выполнить еще
дополнительно 4 шага, в этом случае к Т*(п) прибавится величина 0(4),
что не изменит порядка ее сложности.
2. Если ребро (vi,v2) было обратным, то рассмотрим,
появятся ли в графе дополнительные циклы, которые приведут к
ухудшению Т*(п). Поскольку при выполнении этой операции удаляется
одно ребро и добавляется два новых, то m =1 +1 и п = п + 1, тогда х
= m – п + 1 = mi + 1 – (щ + 1) + 1 =
mi –
щ + 1 = xi. Значит,
дополнительных циклов не появится, и верхняя оценка временной сложности
не ухудшится.
6.2.3. Классы графов, порожденные операциями над графами.
Рассмотрим классы графов, порожденные специфическим
отождествлением нескольких графов из некоторого класса.
Пусть Тк - класс квази - деревьев. Будем говорить, что
граф G G Тк, если он образован последовательным
отождествлением графов Gj <EK,j = 0,.., к где к G
N, и щ,.., Wfc_i – вершины сочленения, если, отождествив Gj,
j = 0,
..,к с вершинами, а вершины uq,
..,Uk-i с ребрами, мы получим граф вида дерево.
Лемма 6. Граф G, полученный последовательным отождествлением графов
Gj G К, j = 0,..,к, восстанавливается за время не большее, чем Ekj=iTj*(n),
где Т*(п) – верхняя оценки временной сложности
восстановления Gj.
Доказательство. Для графа, полученного последовательным сочленением
Gj G К, j = 0,.., к где к G N, и щ, ..,Uk-i – полученные
вершины
сочленения, можно провести такие же рассуждения, на этапе построения,
как и для Gi и G2 из леммы 4, для полученного после j-ого
сочленения графа и следующего для сочленения графа Gj+i.
Значит, утверждение верно.
Пусть Sk – класс квази колец. Будем
говорить, что граф
G G Sk, где к G N, если он образован сочленением
Gj-i с Gj, j = 1, ..,к, и
G0 с Gk, где Gj е К, j = 0, ..,к,
Uo,..,Uk - вершины сочленения, если, отождествив Gj, j = 0,.., к с
вершинами, а вершины Uq, ..,Uk
с ребрами, мы получим граф вида – цепочка вершин соединенных
по кругу.
Лемма 7.Пусть G еК. Разобьем множество его вершин на два не
пересекающихся подмножества V2(G) и V3(G),
где множество V2(G) = {v G V(G) : deg(v) < 2}, а
множество V3(G) = {v G V(G) : deg{v) > 3}, V{G) = V2{G)
U V3(G). Тогда T*(n) есть величина 0(Y,vev3(G)
deg(v)n).
Доказательство. Для доказательства рассмотрим два подмножества
множества вершин графа G, и выясним, в каких случаях они порождают
откаты при восстановлении обратных ребер.
Рассмотрим множество вершин V3(G). Каждая вершина из V3{G)
не может породить откатов более, чем ее степень. Действительно,
откаты возникают при восстановлении обратных ребер вершины. При этом,
если v G V3(G) вызывает "зацикливание то она порождает
откат. Если эта вершина из множества V3{G) не вызывает
"зацикливания" то она будет смежна с вершиной, которая вызовет
"зацикливание" и откат. Значит, каждая вершина v G V3{G)
может вызвать откат не более, чем deg(v) раз. Тогда будет не более,
чем V3(G)\deg(v) откатов.
Рассмотрим множество вершин V2{G). Они порождают откаты в
двух случаях.
Вершина из V2(G) является вершиной, из которой А
начинает выполнение "Базового алгоритма". В этом случае, А
восстановит только ребра из ее окрестности. Это ребро, по которому А
совершил проход в глубину графа. И одно не пройденное ребро, по
которому он может попасть в начальную вершину. Значит, вершина, которой
оно инцидентно, вызовет "зацикливание" и откат. Таким образом, вершина
из V2(G), будучи начальной, может вызвать откат. Так как эта вершина
может содержаться либо на последовательности вершин, которые
соединяют две вершины из множества V3(G), в этом случае
откат, вызываемый этой вершиной, уже учтен при подсчете откатов,
порождаемых вершинами из множества Vs(G), либо на цепочке вершин,
которая примыкает к вершине из множества Vs(G), в этом случае откат,
порождаемый вершиной из множества V2(G), учтен при подсчете
откатов для вершин из множества Vs(G). Значит, вершины из
множества V2(G) могут породить не более одиного отката и не
повлияют на Т*(п).
Вершина из V2(G) не является вершиной начальной для
выполнения алгоритма, но смежна с вершиной из множества V%{G).
Откаты, порождаемые этой вершиной, были учтены при подсчете
количества откатов для ребер вершин из множества V3(G).
Таким образом, согласно известной нам верхней оценке временной
сложности "Базового алгоритма" 2п – 1 + (ш - п + 1)п.
Слагаемое (k–n
+ 1)п соответствует откатам. Тогда сложность можно переписать с
учетом количества откатов, а их T,vev3(G) de9(v) штук.
Следовательно, Т(п) < 2п – 1 + T,vev3(G)
deg(v)n, а при достаточно больших п, Т*(п) есть величина 0(J2V£V(G)
deg(v)ri).
Лемма 8. Пусть G G Sk, тогда Т*{n} есть величина Ej=iT/N
+ O(Ev€G0deg{v)n), где Gj G К j = 0,..,к, где Т*{п)- верхняя
оценка временной сложности выполнения "Базового алгоритма" на графе Gj,
множество V3(Gj) определено как и в лемме 8, а G0
подграф, соответствующий части графа, в которую был помещен А
изначально.
Доказательство. Для данного класса графов существенным является
начальное положение А . Поэтому, не нарушая общности рассуждений,
предположим, что А попадает в вершину v G V(Go)\{uo}. Если же А попал в
вершину v G Gj, j^ 0, перенумеруем Gj и щ,Uk так, чтобы j = 0.
Легко видеть, что при разъединении графа G по вершине и^ мы получим
граф Gt G Tfc, а если удалить из G граф, соответствующий
графу G0, то мы получим граф Gil G Tfc_1.
Рассмотрим случаи: А изначально попадает в вершину, А попадает в
вершину v<EV(Go)\{u0,uk}.
изначально попал в вершину ик. Этим А фактически
разъединит граф G по вершине ик. Рассмотрим граф Gl,
полученный в результате этого. Для этого графа справедлива лемма 6 и
рассуждения, приведенные при ее доказательстве. Таким образом, убрав из
рассмотрения вершину ик, можно утверждать, что Т*(п)есть
величина
Однако, необходимо учесть действия, которые выполняются с
вершиной сочленения. Поскольку она добавлена в г - путь, то действия по
восстановлению ребер е1 = (v,k,v), где v G V(Go), могут происходить
только в рамках подграфа, соответствующего Go и уже учтены в
слагаемом Т£(п). Для ребер е2 = (ик,и), где
и G V(Gk), вершина ик будет вызывать
"зацикливание"и откаты как в пределах подграфа, соответствующего Gk,
так и длины, соизмеримой с п, поскольку для того, чтобы пройти в ик
по ребрам, инциденторы которых помечены г, А придется пройти по
вершинам, принадлежащим всем Gj, где j = 0,..,к. Первые откаты
учтены в слагаемом Т£(п). Количество же вторых не превысит deg(uk).
Значит, их можно учесть, добавив к сумме величину 0{deg{uk)n).
Тогда, Г*(и) есть величина £*=1 T*{n) + 0(deg(uk)n).
2. Изначально попал в v G V(Go)\{uo,uk}. В этом случае А
выполнит следующие действия: восстановит часть или весь подграф,
соответствующий G0, после чего попадет в вершину щ (ик),
а из нее пройдет далее в вершину и G V(G\) (и G V(Gk)),
распознает весь или часть подграфа, соответствующего G\ (G2), и так
далее, до тех пор, пока он не попадет в вершину ик (tr),
добавив ее в г - путь, и пойдет далее в вершину и G V(Gk) (и
G V(G0) ). Таким образом, А фактически разъединит граф G,
убрав из него подграф, соответствующий G0. Рассмотрим граф Gff,
полученный в результате этого. Для него будет справедлива лемма 7.
Вершины подграфа, соответствующего Go, могут вызывать
"зацикливание" и откаты при восстановлении обратных ребер, как в
пределах подграфа G0, так и длины, соизмеримой с n.
Поскольку при "зацикливании" в 1-окрестности вершины могут находиться
вершины, в которые можно пройти по ребрам, инциденторы которых
помечены г, предварительно пройдя по всем вершинам подграфов Gj, где j
= 0,.., к. Таким образом, Г*(p) будет состоять из Т*(n) для Gff и
слагаемого, в котором будут учтены откаты для вершин подграфа,
соответствующего G0. Их будет не более v V(G0) deg(v) штук.
Таким образом, Г*(и) есть величина J2kj=iT*(n)
+ 0(vV(G) deg(v)n).
Исходя из 1 - 2 можно заключить, что Т* есть величина E7=i?1*(n)+
O(J2vev:i(G0) deg(y)ri), поскольку слагаемые в
пункте 1. T£(G) и 0(deg(uk)n)
поглощаются'слагаемым O(£„ev(G0) deg(v)n)
из пункта 2.
В [6] подробно рассматривались дополнительные частные случаи графов
и операции над ними для модификации 4 "Базового алгоритма" , из-за
громоздкости описания и доказательства в данном разделе они
рассматриваться не будут.
7. Выводы
Предложен базовый метод восстановления ранее неизвестного графа
с точностью до меток на его элементах графов при помощи
передвигающемуся по нему агента. Данный метод использует две краски и
имеет временную сложность 0{п) < Т{п) < 0(п3). Базовый
метод допускает модификации, которые позволяют получить лучшую
оценку временной сложности и упрощают агента А, однако, накладывают
дополнительные ограничения на восстанавливаемый граф. Найдены операции
над графами такие, что результирующий граф имеет верхнюю оценку
временной сложности не хуже, чем исходные.
1.Dudek G., Jenkin M. Computational principles of mobile robotic //
Cambridge Univ. Press. –2000 – 280 p.
2.Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ
вычислительных алгоритмов. – М.: Мир, 1979. – 536 с.
3.Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ.
– М.: МЦНМО, 2001. – 960 с.
4.Касьянов В. Н., Евстигнеев В. А. Графы в программировании:
обработка, визуализация и применение. – СПБ.: БХВ –
Петербург, 2003. – 1104 с.
5.Грунский И. С. , Татаринов Е. А. Распознавание конечного графа
блуждающим по нему агентом. // Вестник Донецкого университета.
Серия А. Естественные науки – 2009, Вып. 1. –
С.492–497.
6.Грунский И. С., Татаринов Е. А. Алгоритм распознавания графов. //
Тр. 4 междунар. конф. "Параллельные вычисления и задачи управления"
PACO’2008, Москва, Ин-т проблем управления им. В. А.
Трапезникова РАН, – 2008 – С.148–1498.
7.Татаринов Е. А. M – нумерация, как метод распознавания
графов.
//Збiрник наукових праць "Питання прикладної математики математичного
моделювання" , Днiпропетровськ – 2010. – С.260-272.
8.Кристофидес Н. Теория графов – алгоритмический подход.
– М.: Мир, 1978. – 432 с.
9.Э. Рейнгольд, Ю.Нивергельт, Н.Део Комбинаторные алгоритмы. Теория
и практика. – М.: Мир, 1980. – 477 с.E.
A.
Tatarinov
Basic
algorithm for reconstructing a finite graph.
The problem of reconstructing a graph agent moving through his
edges, read and modify marks on the elements of the graph. We propose a
basic method of reconstruction. The algorithm requires 2 different
colors and cube of the number of vertices number of steps. Found
modification of the algorithm, which lowers the upper bound of time
complexity. Found the operation on graphs, the resulting graph which
has an upper bound for the complexity of the basic algorithm is not
worse than the original.
Keywords: graph
reconstraction, agent, nod mark, move on graph .
Є.
О. Татаринов
Базовий
алгоритм вiдновлення скiнченного графа.
Розглядається задача вiдновлення графа агентом, який перемiщується
по його ребрах, що прочитує i змiнює мiтки на елементах графа.
Запропоновано базовий метод вiдновлення. Алгоритм потребує 2 рiзнi
фарби i кубiчного, вiд числа вершин графа, числа крокiв. Знайдено
модифiкацiї алгоритму, якi знижують верхню оцiнку часової складностi.
Знайдено операцiї над графами, результуючий граф яких має верхню оцiнку
складностi виконання базового алгоритму не гiрше, нiж вихiдний.
Ключовi слова: вiдновлення
графiв, агент, мiтка вершини, блукання по графу.
Получено 23.11.10