Отказ от ответственности: я новичок в теории графов, и я не уверен, относится ли это к SO, Math SE и т. Д.
Учитывая 2 матрицы смежности A и B, как я могу определить,A и B изоморфны.
Например, A и B, которые не являются изоморфными, и C и D, которые изоморфны.
A = [ 0 1 0 0 1 1 B = [ 0 1 1 0 0 0
1 0 1 0 0 1 1 0 1 1 0 0
0 1 0 1 0 0 1 1 0 1 1 0
0 0 1 0 1 0 0 1 1 0 0 1
1 0 0 1 0 1 0 0 1 0 0 1
1 1 0 0 1 0 ] 0 0 0 1 1 0 ]
C = [ 0 1 0 1 0 1 D = [ 0 1 0 1 1 0
1 0 1 0 0 1 1 0 1 0 1 0
0 1 0 1 1 0 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0 0 1
0 0 1 1 0 1 1 1 0 0 0 1
1 1 0 0 1 0 ] 0 0 1 1 1 0 ]
(sorry for this ugly notation, I'm not quite sure how to draw matrices on SO)
Вот как я начал свой алгоритм (простите мойотсутствие математической строгости), пожалуйста, помогите мне завершить / исправить!
- Если размер (количество ребер, в данном случае количество 1 с) A! = размер B => графы не изоморфны
- Для каждой вершины A посчитайте ее степень и найдите соответствующую вершину в B, которая имеет такую же степень , а не было сопоставлено ранее.Если совпадений нет => графы не изоморфны.
- Теперь, когда мы не можем быстро доказать, что A и B не изоморфны, каков следующий шаг?Было бы правильно попробовать каждую перестановку строк в A, пока A не совпадет с B?На самом деле не уверен насчет этого ...