Существуют инструменты для проверки того, являются ли два графика изоморфными или нет. Одной из возможностей является библиотека под названием igraph , которая имеет интерфейсы более высокого уровня для R и Python. К сожалению, igraph в настоящее время не может читать файлы DOT, поэтому вам придется конвертировать график в какой-либо другой формат (например, подойдет стандартный формат списка ребер). После преобразования вы можете сделать что-то подобное в Python:
>>> from igraph import load
>>> g = load("my_graph.txt", format="edgelist")
>>> g2 = load("my_other_graph.txt", format="edgelist")
>>> g.isomorphic(g2)
False
Другой выбор - NetworkX , который также является пакетом Python. Он может читать файлы DOT изначально, но он реализован на чистом Python, поэтому он имеет тенденцию быть медленнее, чем igraph , который в основном реализован на C. Так что, в общем, вам, вероятно, будет лучше с NetworkX , если ваши графы относительно малы или маловероятно, что они изоморфны, так как последний случай обычно оказывается ранним, когда проверяются распределения степеней двух графов. (Если они изоморфны, распределение степеней должно быть одинаковым). Если два графика велики, и они, как ожидается, будут изоморфными, вам, вероятно, лучше использовать igraph , поскольку в этом случае доказательство изоморфности в вычислительном отношении более интенсивно.