Участник:Full/Поиск автоморфизмов графов: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
Алгоритм: Поиск автоморфизмов графов<br>
Алгоритм: Поиск автоморфизмов графов<br>
Автор статьи: Ефремов С.С. группа 419
Автор статьи: Ефремов С.С. (группа 419)


= Свойства и структура алгоритмов =
= Свойства и структура алгоритмов =

Версия от 14:34, 30 октября 2017

Алгоритм: Поиск автоморфизмов графов
Автор статьи: Ефремов С.С. (группа 419)

Свойства и структура алгоритмов

Данный алгоритм, описанный в статье Егорова В.Н.[1], предназначен для поиска автоморфизмов графов, которые можно представить в виде матриц смежности, а также для исследования изоморфности графов. Так как алгоритм работает с матрицами, можно решать эти же задачи и на других комбинаторных объектах, представимых матрицами смежности[2].

Общее описание алгоритма

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

Математическое описание алгоритма

Определения и обозначения

[math]\displaystyle{ A = A^{n\times n} }[/math] - матрица смежности графа [math]\displaystyle{ G(V,E) }[/math] размера [math]\displaystyle{ n\times n }[/math]; [math]\displaystyle{ a_{ij} }[/math] - элементы матрицы ,[math]\displaystyle{ \ i,j = 1,\ldots,n=|V| }[/math].

Частичным отображением [math]\displaystyle{ g^s_k }[/math] ([math]\displaystyle{ s }[/math] - обозначает индекс элемента в множестве [math]\displaystyle{ M_k }[/math]) называется подстановка вида

[math]\displaystyle{ \begin{pmatrix} 1 & 2 & \ldots & k & k+1 &\ldots & n\cr r_1 & r_2 & \ldots & r_k & q_{k+1} & \ldots & q_n \end{pmatrix} }[/math]

, где [math]\displaystyle{ r_1,\ldots,r_k }[/math] - фиксированные (заданные) элементы, [math]\displaystyle{ q_{k+1},\ldots,q_n }[/math] - произвольные, причем последовательность [math]\displaystyle{ r_1,\ldots,r_k }[/math], [math]\displaystyle{ q_{k+1},\ldots,q_n }[/math] является перестановкой вершин заданного графа.

[math]\displaystyle{ M_k }[/math] - множество, состоящее из элементов [math]\displaystyle{ g^s_k }[/math], [math]\displaystyle{ \ s = 1,\ldots,n_k=|M_k| }[/math].

[math]\displaystyle{ |M_k| }[/math] - количество элементов [math]\displaystyle{ g^s_k }[/math] в множестве.

[math]\displaystyle{ M'_k }[/math] - множество элементов, которые содержатся в [math]\displaystyle{ M_k }[/math] и удовлетворяют критерию [math]\displaystyle{ h }[/math].

h - критерий (описанный далее).

[math]\displaystyle{ \{M'_k\} }[/math] - последовательность множеств [math]\displaystyle{ M'_k }[/math], [math]\displaystyle{ k = 1,\ldots,n }[/math].


Проверка по критерию

Критерием [math]\displaystyle{ h }[/math] является проверка подматриц на равенство. Предположим, требуется определить, удовлетворяет ли элемент [math]\displaystyle{ g^s_k }[/math] критерию h. Для этого необходимо, чтобы элементы [math]\displaystyle{ a_{ij} }[/math], для всех [math]\displaystyle{ i,j \leq k }[/math], были равны соответствующим элементам [math]\displaystyle{ a_{r_ir_j} }[/math]. Подматрица [math]\displaystyle{ g^s_k }[/math] выглядит так:

[math]\displaystyle{ \begin{matrix} & r_1 & r_2 & \dots & r_k \cr r_1 & a_{r_1r_1} & a_{r_1r_2} & \dots & a_{r_1r_k} \cr r_2 & a_{r_2r_1} & a'_{r_2r_2} & \dots & a_{r_2r_k} \cr \vdots & \vdots & \vdots & \ddots & \vdots \cr r_k & a_{r_kr_1} & a_{r_kr_2} & \dots & a_{r_kr_k} \cr \end{matrix} }[/math]

Если хотя бы одно из равенств не выполнено, это означает, что по данной частичной подстановке хотя бы одна вершина отобразилась в другую так, что структура графа изменилась. А так как частичная перестановка [math]\displaystyle{ g^s_k }[/math] фиксирует [math]\displaystyle{ r_1, \ldots r_k }[/math], то структура останется измененой, что означает отображение не будет являться автоморфизмом.


Построение множеств частичных отображений

Описание построения [math]\displaystyle{ M'_n }[/math].

На первом этапе рассматриваются все [math]\displaystyle{ g^s_1 }[/math], образующие множество [math]\displaystyle{ M_1 }[/math]. Каждый элемент [math]\displaystyle{ g^s_1 }[/math] проверяется по критерию h. Элементы, удовлетворяющие h, образуют [math]\displaystyle{ M'_1 }[/math]. В каждый элемент из [math]\displaystyle{ M'_1 }[/math] добавляется еще одно отображение (2 [math]\displaystyle{ \to }[/math] [math]\displaystyle{ r_2 }[/math]), т.е. происходит переход от [math]\displaystyle{ g^s_1 }[/math] к [math]\displaystyle{ g^s_2 }[/math]. Из каждого [math]\displaystyle{ g^s_1 }[/math] получается разных [math]\displaystyle{ (n-1) }[/math] элементов [math]\displaystyle{ g^s_2 }[/math]. Всевозможные элементы [math]\displaystyle{ g^s_2 }[/math] образуют [math]\displaystyle{ M_2 }[/math]. Далее строится [math]\displaystyle{ M'_2 }[/math], добавляя в него только те элементы из [math]\displaystyle{ M_2 }[/math], которые удовлетворяют критерию. Аналогично получаются множества [math]\displaystyle{ M_3,\ M'_3,\ M_4,\ldots, M_n,\ M'_n }[/math].


Таким образом, получается последовательнось множеств частичных отображенией:

[math]\displaystyle{ \{M'_k\} }[/math]: [math]\displaystyle{ M'_1 \subseteq M'_2 \subseteq \ldots \subseteq M'_n }[/math].

Множество [math]\displaystyle{ M'_n }[/math] является множеством всех возможных автоморфизмов (или пустое, если их нет).

Вычислительное ядро алгоритма

Макроструктура алгоритма

Схема реализации последовательного алгоритма

Последовательная сложность алгоритма

Информационный граф

Ресурс параллелизма алгоритма

Входные и выходные данные алгоритма

Свойства алгоритма

Программная реализация алгоритма

Особенности реализации последовательного алгоритма

Локальность данных и вычислений

Масштабируемость алгоритма и его реализации

Динамические характеристики и эффективность реализации алгоритма

Выводы для классов архитектур

Существующие реализации алгоритма

Литература

  1. ↑ Группы автоморфизмов и изоморфизм комбинаторных объектов и алгебраических структур. Егоров В.Н., Егоров А.В. (Ломоносовские чтения, Научная конференция, Москва, факультет ВМК МГУ имени М.В.Ломоносова).
  2. ↑ О группах автоморфизмов матриц. Егоров В.Н. (журнал "Прикладная дискретная математика").