Пожалуй, так можно записать идею. Весь алгоритм поиска изоморфизма по спискам семейств подобных вершин она, конечно, не описывает, но суть одного из улучшений, по первому впечатлению, передает.
Тогда Ваш алгоритм можно представить так:
1.
2. Для каждого
выполнить
3. Для каждого
при помощи оракула построить
4. Для каждого
выполнить
5. Выбрать произвольную вершину
6. Выбрать произвольную вершину
7. Соответствие
включить в
8. Построить графы
9. Если
, то выдать
и остановиться
10.
11. Перейти к пункту 3
Похоже, что для изоморфных графов,
действительно будет изоморфизмом. Теперь это нужно доказать.
Все вроде так. Вот черновик начала доказательства, что в нем не хватает, как лучше доказать?
Т.к. на шаге 8 новые графы получаются удалением вершины,то
. Т.о. алгоритм делает не более
шагов по циклу. Оракул должен быть полиномиальным по времени, остальные действия также полиномиальны, следовательно, алгоритм будет полиномиальным.
Если
и вершины
подобны, то
(Харари, Теория графов, С.202). Вершины, принадлежащие множеству
, будут подобными c вершиной
и в случае графа
и в случаях
. Т.о. если в изоморфных графах
удаляются подобные вершины
, то пара вершин
будет парой подобных вершин для всех графов последовательностей
.
Далее можно продолжить
Улучшением 1, что установленная очередь удалений однозначно задает последовательность удаления подобных ребер, однако из этого продолжения возникает похожий алгоритм, который представляется более легким для доказательства.
Алгоритм 2.Пронумеруем все семейства подобных вершин и пометим каждую вершину номером своего семейства. Выберем пару подобных вершин
и обойдем из них графы в ширину, строя остовные деревья
, при этом, просматривая ближайших соседей очередной вершины, будем сначала добавлять в дерево вершины с наименьшей меткой.
Доказательство. Расстояния между корнем дерева и любой вершиной в исходном графе и в дереве будут равны. Вершины с равными расстояниями от корня образуют уровень дерева, значение которого равно этому расстоянию. Из двух вершин одного уровня назовем левой ту, которая была раньше добавлена в дерево. Уровень вершин деревьев будет зависеть от расстояния до корня и не будет зависеть от нумерации вершин. Подобные вершины
имеют попарно подобных соседей
. Во время просмотра соседи добавляются к деревьям синхронно парами подобных вершин
и отмечаются как просмотренные, поэтому если у подобных вершин
только часть соседей не просмотрена, то эта часть будет состоять из попарно подобных вершин
. Таким образом, на любом уровне последовательность меток вершин от левой к правой для обоих деревьев
будет одинаковой. И действительно, на первом уровне лежит одна корневая вершина - корни деревьев подобны, на втором уровне - все соседи корня, попарно подобные соседям корня второго дерева. Пусть на
-ом уровне последовательности меток будут одинаковы, тогда вершины
, занимающие
-ое место от крайне левой на
-ом уровне, будут иметь попарно подобных соседей. Во время роста дерева для каждого уровня в левое поддерево (образованное левой вершиной) будет добавляться максимально возможное количество не просмотренных ранее вершин (т.е. дерево будет упорядочено). Т.о. ветвями и листьями поддеревьев
станут соседи этих вершин, не просмотренные ранее, причем эти непросмотренные соседи
попарно подобны для графа, а в дереве их степени будут совпадать. Т.е. вершины
дадут на уровне
одинаковые подпоследовательности меток вершин и степеней. Т.о.
(об изоморфизме упорядоченных деревьев см. классическую работу: Дж. Е. Хопкрофт, П. Е. Тарьян, Изоморфизм планарных графов, Кибернетический сборник, вып.12, М.: 1975; Hopcroft J., Tarjan R., Isomorphism of planar graphs, Proc 4d Annual Symp. on the Theory of Computing, Shaker Heigts, 1972, 131) и подграфы, образованные ребрами, не вошедшими в остов и всеми вершинами своего графа, будут изоморфны, причем хотя бы один из изоморфизмов деревьев и подграфов совпадает, этот изоморфизм, получаемый простым наложением одного дерева на другое, будет искомым изоморфизмов графов. Все проделанные операции полиномиальны по времени.
Что не хватает, как лучше доказать?