Проблема изоморфизма графов для помеченных графов


11

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

Я надеялся, что ситуация аналогична в случае помеченных графов. Однако мне действительно трудно найти какую-либо ссылку, которая предлагает «практически эффективный» алгоритм.

Замечание: Здесь мы требуем, чтобы изоморфизм сохранил метки. То есть изоморфизм между двумя конечными членами алгебры автоматов / процессов будет означать, что автоматы / члены по существу "равны переименованию узлов".

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

Я что-то упускаю, или это действительно так, что нет эффективных «эвристических» алгоритмов, чтобы решить, изоморфны ли два помеченных графа?

Любой намек или ссылка будет здорово.


3
Было бы неплохо дать ссылки на статью в Википедии и на статью, которую вы нашли, чтобы избавить нас от неприятностей.
Бабу

1
Что вы подразумеваете под изоморфизмом, который «сохраняет метки»? В контексте автомата метки вершин различны. Следовательно, любой изоморфизм тривиально «сохраняет метки» в том смысле, что две вершины в источнике, имеющие разные метки, также должны иметь разные метки на изображении. Эта проблема идентична проблеме изоморфизма обычных графов. Если вы имеете в виду, что изоморфизм должен отображать одну и ту же вершину с одной и той же меткой, алгоритм тривиален, когда метки вершин всегда различны: просто убедитесь, что карта тождества на метках является изоморфизмом.
Дэвид Ричерби

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

Вы действительно не хотите считать два ребра с меткой ребра изоморфными, если существует обычный изоморфизм орграфа, который также сохраняет классы эквивалентности меток? В вашем примере, рассматривая оба как FA, языки, принятые и S , в то время как разные (возможно), на самом деле являются просто гоморфными образами друг друга подстановками a c , b d . SSac,bd
Рик Декер

4
Проблема тривиально GI-полная (просто выберите график, где все ребра имеют одинаковую метку). Для того, чтобы показать , что это не сложнее , чем изоморфизм графов, построить 1: 1 карту от меток до целых чисел ( И добавьте в середине каждого ребра , меченной символ s полный граф на вершинах g ( s ) ( K g ( s ))g:a1,b2,c3,...)sg(s)Kg(s)) плюс дополнительный узел на стороне стрелки края. Полученные графы изоморфны тогда и только тогда, когда исходные автоматы изоморфны.
Vor

Ответы:


5

Вас может заинтересовать эта статья:

Эйдан Хоган: сколемизация пустых узлов при сохранении изоморфизма. WWW 2015: 430-440

Он имеет алгоритм (основанный на Nauty) для проверки изоморфизма RDF-графов, которые по существу являются ориентированными помеченными графами, которые могут содержать фиксированные метки. Алгоритм учитывает метки, чтобы сузить пространство поиска.

Если вы можете представить свой входной помеченный граф как RDF-график, вы можете попробовать использовать соответствующий программный пакет " blabel" для проверки изоморфизма.


4

Я обнаружил, что алгоритм относится к категории алгоритмов Вейсфейлера-Лемана k-размерности, и он не работает с регулярными графами. Для больше здесь:

http://dabacon.org/pontiff/?p=4148

Оригинальный пост следует:

Несколько лет назад я создал простой и гибкий алгоритм именно для этой задачи (изоморфизм графов с метками).

Я назвал его «Powerhash», и для создания алгоритма потребовалось две идеи. Первый - это алгоритм степенного итерационного графа, также используемый в PageRank. Второе - это возможность заменить внутришаговую функцию степенной итерации на что угодно. Я заменил его функцией, которая выполняет следующие действия для каждой итерации и для каждого узла:

  • Сортировка хешей (из предыдущей итерации) соседей узла
  • Хеширование сцепленных отсортированных хэшей
  • Заменить хеш узла вновь вычисленным хешем

На первом этапе на хеш узла влияют его прямые соседи. На втором шаге на хеш узла влияет соседство в 2 шагах от него. На N-м шаге на хеш узла будут влиять соседние N-прыжки вокруг него. Так что вам нужно только продолжать запускать Powerhash для шагов N = graph_radius. В конце концов, хэш центра графа будет затронут всем графом.

Чтобы получить окончательный хэш, отсортируйте хеши узла последнего шага и объедините их вместе. После этого вы можете сравнить последние хеши, чтобы определить, являются ли два графа изоморфными. Если у вас есть метки, то добавьте их (на первой итерации) во внутренние хэши, которые вы вычисляете для каждого узла.

Подробнее об этом вы можете посмотреть в моем посте здесь:

https://plus.google.com/114866592715069940152/posts/fmBFhjhQcZF

Вышеприведенный алгоритм был реализован внутри функциональной реляционной базы данных "madIS". Вы можете найти исходный код алгоритма здесь:

https://github.com/madgik/madis/blob/master/src/functions/aggregate/graph.py


Просто предупреждение о том, что ваш алгоритм является полиномиальным, и поэтому, если он завершен, вы только что решили давнюю открытую проблему в CS о GI в P. :) (Существуют различные случаи, когда алгоритм, который вы описываете, даст ложные срабатывания .)
Badroit

Алгоритм является приблизительным и, конечно, не полным (я говорю об этом в блоге тоже). Причина, по которой он работает, заключается в том, что хеши, которые он создает, огромны, поэтому в базе данных, содержащей даже миллионы графов, вероятность ложных коллизий хеш-значений будет бесконечно мала. Если вам удастся найти какой-либо случай ложного положительного столкновения хеша, мне было бы очень интересно узнать об этом. Причина (при использовании криптографических хэшей) заключается в том, что вам удалось «сломать» криптографическую хеш-функцию.
Estama

Чтобы понять, насколько бесконечно мала вероятность хеш-столкновения. Я бы посчитал, что криптографический хэш 256 бит более чем достаточно, чтобы быть уверенным в том, что все различные файлы в мире не хешируют одно и то же значение (например, git использует SHA-1, который является 160-битным, чтобы гарантировать это). Хеш от Powerhash будет 128 бит * graph_node_count (с использованием хеша MD5). Так что практически, вы никогда бы не быть в состоянии создать достаточное количество графиков (в этой вселенной) , чтобы найти хэш столкновения между ними.
estama

1
Я имел в виду ваш алгоритм будет давать ложные срабатывания даже при условии отсутствия хэш столкновений. Много полиномиальных алгоритмов времени были предложены для изоморфизма графов в литературе , и все они дают ложных срабатываний. Связанный с этим вопрос здесь: cs.stackexchange.com/questions/50939/... .
badroit

1
Спасибо за обсуждение. Проведя дополнительные исследования, я обнаружил, что приведенный выше алгоритм относится к категории алгоритмов Вейсфайлера-Лемана k-размерности, и он не работает с регулярными графами. Для более здесь: dabacon.org/pontiff/?p=4148
estama
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.