ПРИКЛАДНАЯ ДИСКРЕТНАЯ МАТЕМАТИКА
2015 Прикладная теория графов №3(29)
УДК 519.171 + 519.175.1 + 519.17:5
ОБ АЛЬТЕРНАТИВНОМ СПОСОБЕ ЗАДАНИЯ КОНЕЧНЫХ ГРАФОВ
М. Н. Назаров
Национальный исследовательский университет «МИЭТ», г. Москва, Россия
Рассматривается линейная нотация — полный инвариант графов, который позиционируется как альтернатива для описания конечных графов. Данный инвариант строится с помощью алгоритма, близкого к алгоритму поиска канонических форм графов. Хранение линейной нотации в памяти вместо обычного графа позволяет проще решать две основные задачи: построение иллюстраций для графов и сравнение графов на изоморфизм. Для полученного описания дополнительно демонстрируется переносимость таких понятий теории графов, как раскраски и пути, непосредственно на линейные нотации.
Ключевые слова: изоморфизм графов, классы автоморфизма вершин и рёбер, инварианты графов.
DOI 10.17223/20710410/29/7
AN ALTERNATIVE WAY OF DEFINING FINITE GRAPHS
M. N. Nazarov
National Research University of Electronic Technology, Moscow, Russia E-mail: [email protected]
In this paper, we consider the graph linear notation — a complete graph invariant, which is positioned as an alternative to description of finite graphs. This invariant is constructed using an algorithm which is close to the search algorithm for canonical forms of graphs. The storage in a memory of a graph linear notation instead of the graph itself simplifies the procedures for constructing graph illustrations and testing two graphs for isomorphism. We demonstrate how the main graph theory concepts including colouring and graph paths can be defined in terms of graph linear notations.
Keywords: graph isomorphism, automorphism classes of vertices and edges, graph invariants.
Введение
В работе [1] введена линейная нотация абстрактного графа I [G]. Для нотации I [G] продемонстрировано, что она является полным инвариантом и по своим свойствам во многом аналогична обычным графам G. В частности, для I[G] введены понятия абстрактных вершин и абстрактных рёбер, а также подграфы, раскраски, пути и некоторые элементарные операции на графах. Отдельно следует отметить, что алгоритм перехода от I[G] к обычным графам G является полиномиальным. Поскольку I[G] является полным инвариантом, данный факт служит основанием для использования нотации I[G] в качестве альтернативного способа хранения графов.
84
М. Н. Назаров
Реализована линейная нотация I[G] с помощью номеров I(v) и I(u, v) классов автоморфизма вершин и рёбер графов. Для данных номеров доказано, что они являются однозначными идентификаторами для классов автоморфизма вершин и рёбер и позволяют ввести на множестве этих классов линейные порядки: VI ^ V2 ^ I(vl) ^ I(V2) и (VT/UI) ^ (v2,u2) ^ I(vi,ui) ^ I(v2,u2). Это означает, что можно пронумеровать классы вершин числами 1 , ...,m, а классы рёбер — числами 1 ,...,k, если у графа m классов автоморфных вершин и k классов автоморфных рёбер. Нужно отметить, что в работе [1] была допущена неточность: во всех иллюстрациях и примерах вершины и рёбра помечены именно такими порядковыми индексами, а не I(v) и I(u/v), как утверждается в подписях к ним. В данной работе мы в первую очередь проведём разграничение между индексами и номерами классов автоморфизма вершин и рёбер и переформулируем все основные результаты из [1] в приложении к индексам классов автоморфизма.
Для демонстрации преимуществ линейной нотации I [G] по отношению к классическому описанию графов дополнительно рассмотрим примеры задания стандартных графов, а также приведём алгоритмы для построения путей и реализации раскрасок на I [G].
1. Построение линейных нотаций для классов изоморфных графов
Мы исключаем из рассмотрения ориентированные графы, графы с петлями, кратными рёбрами и бесконечные графы [2]. Отметим, что построить обобщение нашей методики будет относительно просто только для классов ориентированных графов и графов с петлями.
Определение 1. Графом будем называть пару G = (V, E), где множество вершин V — это любое конечное множество, а множество рёбер E С V х V — это бинарное отношение на V, для которого выполняются следующие условия:
1) Va, b Е V ((a, b) Е E ^ (b, а) Е E) — отношение симметрично;
2) Va Е V ((а, а) Е E) — отношение антирефлексивно.
Определение 2. Пусть дан произвольный граф G = (V, E), у которого |V| = п. Тогда, если выбрать некоторый порядок а = (vT,... , vn) на множестве вершин V, то можно поставить в соответствие графу G матрицу смежности A по следующему правилу:
A(i,j) = 1 ^ (vi, vj) Е E & A(i,j) = 0 ^ (vi,v?-) Е E.
На рис. 1 представлен пример двух матриц смежности, которые построены для разных порядков aT и а2 на множестве вершин V графа G.
С1
G
а1 = (a, b, c, d, e)
d
a
Ai a b c d e
a 0 1 1 0 1
b 1 0 1 0 1
c 1 1 0 1 1
d 0 0 1 0 1
e 1 1 1 1 0
a2 = (c, e, b, d, a)
A2 c e b d a
c 0 1 1 1 1
e 1 0 1 1 1
b 1 1 0 0 1
d 1 1 0 0 0
a 1 1 1 0 0
Рис. 1. Пример двух разных матриц смежности Ai и A2 для одного графа
Об альтернативном способе задания конечных графов
85
Определение 3. Кодом матрицы смежности A конечного графа G будем называть число y(A) = A(n, n) + A(n, n — 1) ■ 2 + ... + A(n, 1) ■ 2n-1 + A(n — 1, n) ■ 2n + + ... + A(1,1) ■ 2n -1, где A(i, j) —элементы матрицы смежности A.
Например, для двух матриц, изображённых на рис. 1, получим следующие коды: ^(A1) = 110110101110110010111110 и y(A2) = 111110111110011100011100.
Определение 4. Наибольший из всех возможных кодов y(A) матриц смежности A графа G назовём макси-кодом графа ymax(G). Если для некоторого порядка вершин а код матрицы смежности y(A) = ymax(G), то говорим, что а соответствует макси-коду.
В [1] доказано следующее утверждение о макси-коде ymax(G).
Утверждение 1 [1]. Если два порядка вершин а1 = (vj,...,^) и а2 = (v)2, ... щП) соответствуют макси-коду ymax(G) графа G, то вершины в этих порядках попарно автоморфны: v1 ~ v2 для всех i = 1,... , n.
Элементы последовательностей вершин а = (v1,..., vn) будем обозначать vi = a(i).
Определение 5. Пусть макси-коду графа G соответствует некоторый порядок следования вершин а. Назовём номером класса автоморфизма вершин v натуральное число N(v), которое равно первому вхождению в порядок а вершины из класса v: N(v) = min i.
i:a(i)Ev
Определение 6. Пусть макси-коду графа G соответствует некоторый порядок следования вершин а. Назовём номером класса автоморфизма рёбер (x, у) натуральное число N(x,у), равное номеру первого вхождения ребра из класса (x,у) в матрицу смежности A графа G, построенную в соответствии с а (при нумерации элементов
матрицы по строкам): N(x,у) = min j + (i — 1) ■ n.
A(i,j) = 1
(a(i),a(j))~(x,y)
Утверждение 2. Номера N(v) естественным образом порождают линейный порядок на классах автоморфных вершин: щ ^ v2 N(щ) ^ N(v2).
Доказательство. По определению номера N(v) являются натуральными числами; согласно утверждению 1, номера совпадают только у автоморфных вершин. Получаем, что множество номеров N(щ),... , N(vk) линейно упорядочено и, следовательно, порядок щ ^ v2 N(v1) ^ N(v2) линейный. ■
Утверждение 3. Номера N(vyu) естественным образом порождают линейный порядок на классах автоморфных ребер: (v1; u1) ^ (v2, u2) ^ N(v1; u1) ^ N(v2, u2).
Доказательство. Доказательство аналогично доказательству утверждения 2. Если два порядка вершин а1 и а2 соответствуют макси-коду графа ymax(G), то матрицы смежности для этих порядков совпадают. В результате рёбра, которые соответствуют одинаковым позициям в этих матрицах, автоморфны. ■
Определение 7. Введём для графа G индексы классов автоморфизма вершин I(v) через номера классов N(v) с помощью следующих индуктивных правил:
1) N(v) = min N(u) ^ I(v) = 1 — базис индукции для определения первого ин-
U
декса;
пч (N(v) > N(u)) & 1
2) & Vu* = u (N(v) > N(u*) ^ N(u) > N(Щ / ^ 1 (v) = 1 (u) + 1 — переход'
Определение 8. Аналогично определению для вершин введём понятие индекса классов автоморфизма рёбер I(x, у), заменив классы автоморфизма вершин на классы автоморфизма рёбер.
86
М. Н. Назаров
Теорема 1. Если G = H, то для u Е V(G), v Е V(H) равенство I(u) = I(v) выполняется тогда и только тогда, когда существует изоморфизм ф : V(G) ^ V(H), такой, что ф(и) = v.
Доказательство. Докажем сначала, что из ф(и) = v, где ф — изоморфизм, следует совпадение индексов классов автоморфизма I(и) = I(v).
Если два графа изоморфны, то у них один и тот же макси-код //max(G) =
где а\ = (ui,... ,un) —некоторый порядок, который соответствует макси-коду в G, а а2 = (v1,...,vn) —порядок, соответствующий макси-коду в H. Поскольку номер N(u) —натуральное число, то а1 (N(u)) задаёт некоторую вершину u* = a1(N(u)). Эта вершина u* обладает двумя свойствами: u ~ u* и среди всех симметричных по отношению к u вершинам u* имеет наименьший индекс в а1. Если допустим, что N(u) = N(v), то получим ф(u*) ф ф(u). В результате получаем противоречие: ф(u*) ф ф(u) и u ~ u*. Таким образом, у всех изоморфных вершин (ф^) = v) номера классов автоморфизма обязательно совпадают (N(u) = N(v)). Пользуясь утверждением 2 и учитывая определение для индексов I(v), получаем, что I(u) = I(v).
Пусть G = H и совпали индексы I(u) = I(v). Поскольку G = H, то существует некоторый изоморфизм ф0 : V(G) ^ V(H). Для образа v* = ф0^) по первой части данного утверждения получим I(v*) = I(u) = I(v). Из этого можно заключить, что вершины v, v* автоморфны. Обозначим автоморфизм, переводящий эти вершины одна в другую, через ф: ^(v*) = v. Тогда искомый изоморфизм ф можно определить в виде композиции двух изоморфизмов ф = ф0 о ф. ■
Теорема 2. Если G = H, то для двух рёбер (u1;u2) Е E(G) и (v1,v2) Е E(H) равенство I(u1; u2) = I(v1; v2) выполняется тогда и только тогда, когда существует изоморфизм ф : V(G) ^ V(H), такой, что ф(^) = v1 и ф(^) = v2, или ф(u1) = v2 и
ф(u2) = v1.
Доказательство. Доказательство достаточности аналогично доказательству для вершин. Если допустить, что существует изоморфизм ф : V(G) ^ V(H), такой, что ф(^) = v1 и ф(u2) = v2, то совпадут номера N(u1;u2) = N(v1; v2). Из совпадения номеров для всех классов рёбер следует I(u1, u2) = I(v1; v2).
Необходимость также можно доказать по аналогии с теоремой 1. Пусть G = H и I(u1; u2) = I(v1; v2). Для образов изоморфизма v* = ф0(u1) и v* = ф0(u2) по первой части данного утверждения получим I(u1;u2) = I(v1; v2) = I(v*,v*). Из этого можно заключить, что рёбра автоморфны: (v1,v2) ~ (v*,v*). Обозначим через ф следующий автоморфизм: Vi (ф(^*) = v^). Искомый изоморфизм — композиция ф = ф0 о ф. ■
Непосредственным следствием из теорем 1 и 2 является тот факт, что индексы I(v) и I(v1, v2) являются уникальными идентификаторами для классов автоморфизма. Таким образом, эти индексы можно использовать вместо самих вершин и рёбер при определении инварианта для класса изоморфных графов [G]. В частности, можно сначала представить граф G в виде строки символов с помощью алгоритма, похожего на алгоритм построения линейной нотации для молекулярных графов SMILES [3], а затем в данной строке заменить названия вершин v на их индексы I(v) и получить инвариант для графа G.
Определение 9. Симметрическая линейная нотация L(G) для связного графа G — это строка символов, которая определяется на основе следующего алгоритма.
Vmax(H). В этом случае изоморфизм можно представить в виде ф
Об альтернативном способе задания конечных графов
87
Ш а г 0. Введём множества исключённых вершин Ve и временно заменённых вершин Vr. На начало работы алгоритма оба эти множества полагаются пустыми: Vr = = Ve = 0. Каждой новой вершине v, помещённой в множество замененных Vr , будем присваивать специальный код #m, где m — число элементов | VR | после добавления вершины v. Признаком окончания работы алгоритма является помещение всех вершин V(G) графа G в множество исключённых вершин Ve.
Ш а г 1. Выбираем любую вершину vi первого индекса (I(vi) = 1) и записываем её
в нотацию L(G), добавляя к ней открывающую скобку первого номера: L(G) = v1 ...
При этом помещаем v1 в множество Vr и присваиваем ей первый специальный код #1.
Ш а г 2 (рекурсивный). Пусть линейная нотация доведена до некоторой вершины vk. При этом часть из рассмотренных вершин v1,...,vfc помещена в множество исключённых Ve, а другая часть — в множество замененных Vr. Вместо заменённых вершин можем использовать коды #1,... , #m (код #m соответствует vk). Среди всех вершин из окружения vk, которые не были удалены или заменены на предыдущих этапах, выбираем любую vk+i, которая удовлетворяет следующим условиям:
1) наибольший приоритет у вершины с минимальным индексом I (vk+i);
2) если у двух вершин индексы совпали (I(vk+i) = I(vk+J), то предпочтение отдаётся вершине vk+1, у которой меньше индекс ребра: I(vkTv+l) < I(vk, vk+1);
3) при совпадении индексов вершин и рёбер у vk+1 и v^+1 предпочтение отдаётся вершине, которая в графе G ближе к вершине кода #1 (то есть может быть соединена с ней путём из меньшего числа вершин). Если эти расстояния совпадают для вершин vk+1 и v^+1, то вершине, которая ближе к вершине кода #2, и так далее до #(m — 1);
4) если вершины vk+1 и v^j+1 из окружения vk не удалось различить с помощью условий 1-3 по индексам вершин, рёбер и расстояниям до вершин кодов #1,... , #m, то выбирается любая из них.
Если с помощью условий 1-4 удалось найти вершину vk+1, то добавляем её в линей... ив множество Vr. После этого
m+1
переходим к рекурсивному шагу 3 для vk+1 . Если вершину vk+1 не удалось найти, то удаляем vk из множества Vr и переводим её в Ve , полностью исключая из рассмотрения. Затем закрываем скобку уровня m в линейной нотации L(G) и повторяем шаг 2 для той вершины vj, которая на текущий момент соответствует коду #(m — 1).
Ш а г 3 (рекурсивный). Пусть линейная нотация доведена до некоторой вершины vk. В первую очередь проверяем, нет ли в графе ребра, которое соединяет вершину vk и вершину кода #1. Если такое ребро имеется и оно до сих пор не было учтено
-д #1;... , где i = I(vyvk). Повторяем процесс для кода #2 и так далее до последнего кода #(m — 1). По завершении переходим к рекурсивному шагу 2 для вершины vk.
Определение 10. Линейной нотацией класса изоморфных графов [G] назовём строку I [G], которая получается из любой произвольной симметрической линейной нотации L(G) путём замены всех вершин v на индексы классов вершин I(v).
Пример 1. Рассмотрим работу алгоритма для построения L(G) и перехода к линейной нотации I[G] с пошаговым выводом множеств Vr и Ve (рис. 2).
Согласно определению 9, одному графу G может соответствовать несколько различных симметрических нотаций L(G). Для этого достаточно, чтобы у графа G хотя
в нотации, то добавляем запись: L(G) =
гk.
vk
ную нотацию L(G)
гк.
vk
гк +1
vk+1
88
М. Н. Назаров
b
(14 >»С
к d2
[G]
I (a) = 1 I (c) = 1 I(d) = 2 I(b) = 3
I(e) = 4
Step Symmetric Linear Notation Ve
1 a [1 (a) 0
2 a[H c[2 (a,c) 0
3 a[H c[2H d[3 (a, c, d) 0
4 a[H c[2H d[,^#1 (a, c, d) 0
5 a[H c[2H d[,^#1;^ e[ (a, c, d, e) 0
6 a[H c[2H d[,^#1;^ e[] (a, c, d) e
7 a[H c[2H d[,^#1;^ e[]] (a,c) e, d
8 a[H c[2H d[,^#1;^ e[]]H b[3 (a, c, b) e, d
9 a[H c[2H d[,^’#1;^ e[ ]] H b[3H#1] (a,c) e, d, b
10 a[H c[2H d[,H#1;H e[]]H b[3H#1]]] 0 e, d, b, c, a
Рис. 2. Пример построения линейной нотации I[G]
бы две вершины были автоморфными. Например, если в графе G есть две вершины первого индекса, то нотацию L(G) можно начать с любой из них. Таким образом, необходимо доказать, что линейная нотация I[G] определена корректно и не зависит от выбора L(G).
Утверждение 4. Линейная нотация I[G] определяется однозначным образом для любого конечного связного графа G.
Доказательство. Проведём доказательство однозначности I[G] по индукции. Базис индукции. Рассмотрим шаг 1 алгоритма определения L(G). После замены вершины v1 на её индекс I(vi) = 1 имеем одну и ту же начальную строчку
I[G] = 1 ... для любых L(G).
Li
Индуктивный переход. Допустим, что неоднозначность в определении I [G] не возникла до начала отдельной итерации рекурсивного шага 2 алгоритма определения L(G). После замены вершин гд и гд+1 на их индексы I(vk) и I(vk+i) получим
одну и ту же строчку I [G]
ifc,
I (Vk )
гк +1
> I(vk+1) ... для любых L(G).
Lm+1
Допустим, что неоднозначность в определении I[G] не возникла до начала отдельной итерации рекурсивного шага 3 алгоритма определения L(G). Если предположим, что коды #j, с которыми связана Vk, различаются для двух разных L(G), то получим противоречие с условием 3 выбора новых вершин на рекурсивном шаге 2. Таким
образом, переход к I[G] =
*к.
I (Vk )
-д #1;... на шаге 3 также однозначный.
l m
Замечание 1. Отметим, что для линейной нотации I[G] можно ввести понятия абстрактных вершин и абстрактных рёбер, связав их с соответствующими индексами автоморфизма. При этом у I [G] может быть несколько экземпляров абстрактных вершин, которые соответствуют одному и тому же индексу j, и то же самое для абстрактных рёбер.
Определение 11. Раскраской для линейной нотации I[G] отдельной абстрактной вершины j в цвет а будем называть такую строку I*j a)[G], которая получается из линейной нотации I[G] путём замены первого вхождения j на пару (j,a). Раскраску для большего количества вершин и большего количества цветов определим индуктивно как последовательную раскраску графа по одной отдельной абстрактной вершине.
Об альтернативном способе задания конечных графов
89
При этом достаточно потребовать, чтобы на каждом шаге раскраски выбирались только те вершины, которые не были раскрашены на предыдущих.
Теорема 3. Линейная нотация класса изоморфных графов I [G] является полным инвариантом для любого конечного связного графа G.
Доказательство. Докажем необходимость, то есть что из изоморфизма графов Gi = G2 следует, что I[Gi] = I[G2]. Из теорем 1 и 2 получаем, что у графов Gi и G2 один и тот же набор индексов для вершин и рёбер. Как следствие, с учётом утверждения 4, нотации L(G1) и L(G2) отличаются только названиями вершин. Таким образом, I[G1] = I[G2].
Докажем достаточность, то есть что из совпадения линейных нотаций I[G1] = I[G2] следует изоморфизм графов G1 = G2. Для этого с помощью раскраски названиями V1 вершин G1 = (V1, E1) перейдём от I[G1] к L(G1). При этом остановимся на том варианте раскраски L(G1), который однозначно соответствует графу G1 по связям Е1 между вершинами, потенциально перебрав все | V11! вариантов. Затем повторим аналогичную процедуру для G2 и получим L(G2). Построим изоморфизм в явном виде, отобразив все подряд идущие вершины из L(G1) в соответствующие им по порядку вершины из L(G2). Если допустить для данного отображения, что условие изоморфизма не выполняется, то немедленно получим противоречие. Действительно, нарушение условия изоморфизма означает, что коды #1, ... , #m стоят на разных позициях в L(G1) и L(G2), что невозможно ввиду тождества I[G1] = I[G2] и однозначного определения I [G] на основе L(G). ■
Для демонстрации изложенных результатов на рис. 3 приводятся примеры I [G] для трёх графов G1, G2 и G3, чьи вершины помечены индексами I(v), а рёбра — I(u, v).
Рис. 3. Примеры линейных нотаций I[G] для классов изоморфных графов [G1 ], [G2] и [G3]
2. Практическое приложение линейных нотаций
Классический способ применения инвариантов графов сводится к вычислению и сравнению инвариантов каждый раз при проверке двух графов на изоморфизм.
3
[<
[G3]
90
М. Н. Назаров
Достаточно очевидно, что подобная схема совершенно неприменима для полных инвариантов, так как задача их построения относится к классу NP. В частности, для нотаций I[G] имеем следующие оценки (параметр n = \V(G)\):
1) переход от G к I [G] —задача эквивалентна задаче об изоморфизме графов;
2) проверка на совпадение для I[G] —задача сложности O(n2);
3) переход от I[G] к G на основе раскраски — задача сложности O(n2).
Общая идея заключается в том, чтобы хранить в памяти компьютера I[G] вместо обычного графа G. При таком подходе упрощается проверка на изоморфизм, поскольку не требуется предварительно вычислять инвариант I [G], а процедура сводится к полиномиальной задаче проверки на совпадение I[Gi] = I[G2]. Для графов с небольшим числом вершин можно использовать базовый алгоритм перехода от G к I [G], несмотря на его принадлежность к классу NP, поскольку потребуется применить его один раз перед сохранением линейной нотации I [G]. Однако для графов с большим числом вершин такой подход непрактичен. Фактически, построение линейных нотаций I[G] для больших графов требует определения стандартных классов графов непосредственно на основе I [G], а также введения некоторого набора операций полиномиальной сложности на I[G] для получения более сложных классов изоморфных графов.
Рассмотрим, как можно с помощью линейной нотации I[G] описать в общем виде следующие стандартные классы графов: пути Pn, циклы Cn, полные графы Kn и полные двудольные графы Kn,m [2, 4].
Пример 2. Для путей Pn рассмотрим два случая: когда n чётное (n = 2k) и нечётное (n = 2k — 1):
I [P2fc ] = 1 I [P2k-i] = 1
i1
Л 2
А 2
L2
А 3
n
... а n[]
n— 1
L3
n[ ]
22
A 2
33
3
n
... А n[]
23
n— 1
n[ ]
Пример 3. Линейная нотация для циклов Cn задана однозначно:
I [Cn] = 1
11
1
. . . 1 1
А #1
Пример 4. Линейная нотация для полного графа Kn также задана однозначно:
I [Kn] = 1
Пример 5. Для двудольных графов Kn,m рассмотрим два случая: n < m и n = m:
[ -А 1 1 А1 1 2 А #1; А 1 3 [ ... -А 1 -4 А #1; А #2; . . n .; -А #n—2
I [Kn,m] — 1
. . . 1 1
1
А #2;...; А #2m—4; А 2 А #1; А #3;...; А #2m — 3
2m 1 2m
12
2m
А #1; А #3;...; А #2m — 3
I [Kn,n] = 1
. . . 1 1
1
А #2;...; А #2n — 4; А 1 А #1; А #3;...; А #2n — 3
2n 1
2n
Замечание 2. Как видно из примеров для I[P2k-1] и I[Kn m], линейную нотацию I[G] легко можно адаптировать для сжатия данных, если использовать специальную нотацию S х n для подстрок;, кото
получим I*[P2k-1] = 1 А 2 А 3 ... ——У n[] ... ; х2
1
эые повторяются n раз подряд. В случае с I [P2k-1]
n1
3
1
3
1
2
2
3
2
n
Об альтернативном способе задания конечных графов
91
Перейдём к рассмотрению элементарных операций на графах. При этом произвольную операцию на классах изоморфных графов будем описывать в форме алгоритма строковой обработки для линейных нотаций I [G].
Пример 6. Введём операцию удлинения цепочек, определив результирующий граф G как полученный из исходного графа G путём присоединения ко всем вершинам первой степени ровно по одной новой вершине (реализацию операции см. на рис. 4).
Рис. 4. Пример использования операции удлинения цепочек
Алгоритм построения линейной нотации I [G] для результирующего графа на основе исходной нотации I[G] можно свести к следующим трём шагам строковой обработки. Ш а г 1. Проводим поиск по строке I[G] вершин, которые соответствуют шаблону
(... A k[]...) для вершины первой степени. Среди всех этих вершин вычисляем минимальный индекс автоморфизма k и максимальный k + m, которые соответствуют данному шаблону.
Шаг 2. Вводим новые индексы классов k + m +1,k + m + 2,...,k + 2m, которые будут соответствовать новым вершинам графа G.
Ш а г 3. Получаем I [G] из исходной линейной нотации I [G] путём замены подстрок
по шаблону: строку
j+i
> k + i [ ]...) меняем на
j+i
> k + i
j+i+m
> k+m+i[]
Пример 7. Рассмотрим операцию присоединения вершин первой степени к вершинам первого класса автоморфизма (реализацию операции для конкретных графов см. на рис. 5). Формально при отработке данной операции мы к каждой вершине v с индексом автоморфизма I(v) = 1 присоединяем ровно одну вершину v* степени 1.
Алгоритм построения линейной нотации I [G*] для результирующего графа на основе исходной нотации I[G] можно свести к следующим трём шагам.
Ш а г 1. Проводим поиск по строке I[G] вершин, которые соответствуют шаблону
(... A k[]...) и при этом связаны ребром с вершиной первого класса. Если таких вершин нет, то переходим к шагу 2. В противном случае добавляем в окружение каждой вершины первого класса одну деполнительную вершину класса k, осуществив строко-
вую замену по шаблону: строки выход.
A k[]
меняем на
A k[]; A k[]
1
1
Ш а г 2. Ищем вершины первой степени (... A k[] ...). Среди всех этих вершин вычисляем минимальный индекс автоморфизма k и максимальный k + m.
Ш а г 3. Производим строковую замену всех индексов вершин от k до k + m по следующему шаблону: строки ^... —A k + i[] .. .^ меняем на ^... -+г+\ k+i + 1[] .. .^. После этого добавляем в окружение каждой вершины класса 1 по одной новой вершине
класса k в соответствии с шаблоном:
A k[]
1
92
М. Н. Назаров
3
2
И
Рис. 5. Пример использования операции присоединения новой вершины к вершинам первого класса
Замечание 3. Для всех рассмотренных операций, а также для описания стандартных классов графов опустим доказательство корректности. При желании эти доказательства можно легко получить по аналогии с уже рассмотренными.
В определении 11 введено понятие раскраски для отдельных абстрактных вершин линейной нотации I [G]. По аналогии с этим определением можно ввести раскраску и для абстрактных рёбер на I[G]. Если у исходного графа G было n вершин, то, раскрасив итерационно все абстрактные вершины I[G] в n разных цветов, получим L(G*) и восстановим исходный граф с точностью до изоморфизма G* = G. Важно отметить, что подобная операция перехода от I[G] к обычному графу G* = G в предельном случае потребует восстановить связи между каждыми двумя вершинами графа и, как следствие, имеет максимальную сложность O(n2). Помимо восстановления обычного графа на основе I [G], алгоритм раскраски можно использовать для построения молекулярных графов [5], если в качестве красок для вершин использовать названия химических элементов H, O, C, N, а в качестве красок для рёбер — типы связей.
Пример 8. На рис. 6 представлен молекулярный граф пиридина, а также маркированная линейная нотация, которая получена для этого графа с помощью алгоритма итерационной раскраски для вершин и рёбер (двойные связи показаны двойной стрелкой ^).
H
5
H
H
.6
7
N
4
I*[G] = (1,C) [4(2,0) [4(3,0) [-4(4,N) [4(3,0) [-4(2,0) [4#1 ;4<6,H)] ;4<7,H)]] 4(7,H)] 4(6,H)] 4(5,H)]
Рис. 6. Пример задания молекулярного графа в виде маркированной линейной нотации
Об альтернативном способе задания конечных графов
93
При описании молекулярных графов на основе маркированных линейных нотаций I* [G] получаем три очевидных преимущества:
— проверка на изоморфизм двух графов имеет сложность O(n2);
— все возможные симметрии молекулы представлены в удобной форме через индексы классов автоморфизма вершин и рёбер;
— задание реакций между молекулами в виде операций на нотациях I [G] сводится к процедурам строковой обработки, что упрощает их реализацию.
Алгоритм раскраски для I[G], помимо уже рассмотренных приложений, может быть использован для построения путей на графе. В этом случае раскраска проводится натуральными числами 1, 2,... ,n, а две соседние вершины, получившие порядковые номера i, i + 1, должны быть соединены ребром в I[G]. Отметим, что отдельный интерес представляет поиск на линейной нотации I[G] гамильтонова пути [6]. На основании перебора графов с числом вершин | V| ^ 7 была выдвинута следующая гипотеза относительно существования гамильтонова пути.
Гипотеза 1. Для того чтобы на I[G] существовал гамильтонов путь, необходимо и достаточно, чтобы I[G] удовлетворял одному из двух шаблонов: либо I[G] = 1
j
k
2
, либо I [G] = 1
А k i ; А m
л 2 2 . .
где внутри скобки
вложенных скобок в точности равно числу абстрактных вершин.
2
число
Заключение
Таким образом, можно утверждать, что линейная нотация I[G] способна стать удобной альтернативой для классических графов G в приложении к целому ряду практических задач. Представляется актуальным продолжение исследований в данном направлении и построение новых алгоритмов на I [G], в том числе и алгоритмов для реализации операций на графах. Более того, если удастся построить базис (набор операций, с помощью которых можно получить любой конечный граф, применяя их суперпозицию к некоторым простейшим графам) операций на I [G] полиномиальной сложности, то нотацию I[G] можно будет использовать на практике для хранения больших графов.
Сложность хранения в памяти I[G] асимптотически равна O(n2), где n — число вершин графа. Можно повысить коэффициент сжатия данных для I [G], если воспользоваться приёмом замечания 1, а также если отбросить индексы m для всех скобок
... в записи I [G] (данные индексы введены в определении L(G) только для более
Lm
наглядного представления нотации).
Помимо уже рассмотренных приложений для линейных нотаций I [G], можно попробовать построить оптимизированный алгоритм для полного перебора графов из n вершин с отбрасыванием всех изоморфных копий. Фактически, если перебирать I[G], а не матрицы смежности A графов G, то можно добиться многократного прироста производительности такого алгоритма, так как число классов изоморфных графов из n вершин существенно меньше числа таблиц из нулей и единиц размера n х n [7].
Как отмечено в работе [1], линейную нотацию I [G] можно достаточно легко обобщить на случай упорядоченных графов, а также на гиперграфы [8]. С другой стороны, для классов автоморфизма вершин v и рёбер (u, v) можно ввести альтернативные индексы, если выбрать вместо макси-кода другой полный численный инвариант матрицы смежности. В частности, можно задействовать мини-код вместо макси-кода. С практической точки зрения такие альтернативные конструкции будут целесообразны, если
94
М. Н. Назаров
удастся показать, что с их помощью упрощается определение некоторых алгоритмов на классах изоморфных графов.
ЛИТЕРАТУРА
1. Назаров М. Н. Альтернативные подходы к описанию классов изоморфных графов // Прикладная дискретная математика. 2014. №3. С. 86-97.
2. Зыков А. А. Основы теории графов. М.: Вузовская книга, 2004. 664с.
3. Weininger D., Weininger A., and Weininger J. SMILES. 2. Algorithm for generation of unique SMILES notation // J. Chem. Inf. Comput. Sci. 1989. V. 29. No. 2. P.97-101.
4. Белов В. В., Воробьев Е. М., Шаталов В. Е. Теория графов. М.: Высшая школа, 1976. 391 с.
5. Brecher J. Graphical representation of stereochemical configuration // Pure Appl. Chem. 2006. V. 78. No. 2. P. 1897-1970.
6. Харари Ф. Теория графов. М.: КомКнига, 2006. 296с.
7. Harary F. and Palmer E. M. Graphical Enumeration. N.Y.: Academic Press, 1973. 240 p.
8. Zykov A. A. Hypergraphs // Russian Mathematical Surveys. 1974. V.29. P.89-154.
REFERENCES
1. Nazarov M. N. Al’ternativnye podkhody k opisaniyu klassov izomorfnykh grafov [Alternative approaches to the description of classes of isomorphic graphs]. Prikladnaya diskretnaya matematika, 2014, no. 3, pp. 86-97. (in Russian)
2. Zykov A. A. Osnovy teorii grafov [Basics of Graph Theory]. Moscow, Vuzovskaya Kniga Publ.,
2004. 664 p. (in Russian)
3. Weininger D., Weininger A., and Weininger J. SMILES. 2. Algorithm for generation of unique SMILES notation. J. Chem. Inf. Comput. Sci., 1989, vol. 29, no. 2, pp. 97-101.
4. Belov V. V., Vorob’ev E. M., Shatalov V. E. Teoriya grafov [Graph Theory]. Moscow, Vysshaya Shkola Publ., 1976. 391 p. (in Russian)
5. Brecher J. Graphical representation of stereochemical configuration. Pure Appl. Chem., 2006, vol. 78, no. 2, pp. 1897-1970.
6. Kharari F. Teoriya grafov [Graph Theory]. Moscow, KomKniga Publ., 2006. 296 p. (in Russian)
7. Harary F. and Palmer E. M. Graphical Enumeration. N.Y., Academic Press, 1973. 240 p.
8. Zykov A. A. Hypergraphs. Russian Mathematical Surveys, 1974, vol. 29, pp. 89-154.