2015-06-22 32 views
1

我想写一个蛮力的方法来检查,如果两个图是同构的。我正在使用类networkx,但我不想使用内置函数进行同构。
我知道我必须检查图的所有节点排列,但我不知道该怎么做。那么我将如何置换networkx图中的节点呢?蛮力图同构与网络x

+0

为什么不想使用内置函数来执行此操作? – jme

+1

我有几种不同的方法来检查同构,并希望看到运行时间的差异。也作为练习。 – sebastian

回答

1

下面给出的图表H.

from itertools import permutations 

list(permutations(H.nodes(), len(H.nodes())) 

的节点之后的所有排列的列表,你可以比较它们的邻接矩阵。请参阅以下代码:https://github.com/jgloves/graphTheory/blob/master/are_isomorphic.py

+0

您提供的代码似乎不起作用。首先,它不知道第42行中的all属性。如果我将其更改为'if np.array_equal(a_h,a_g):'它从来不是真的,因为它应该是奇怪的。有任何想法吗? – sebastian

+0

对不起,这是几年前写的。感谢您的支持。 – jgloves

+0

尝试: A =(a_g == a_h),然后 if(elt for elt in A): – jgloves