问题描述
我正在尝试使用 networkx
比较两个图是否同构。然而,我发现了一个非常奇怪的问题,让我困惑了好几天。我有一个函数 get_graph
,它将节点、边缘起点和边缘终点作为输入。在调试的时候,我在函数中加了一行print(list(edges))
来打印出压缩后的edges
。然后我震惊地发现这在某种程度上改变了同构的结果。如果你试试我下面的代码,你会发现如果你添加那条线,你会发现这两个图是同构的,但注释掉的时候不是同构的。
我认为这与 networkx
或一般图形没有任何关系。这应该被视为 print
函数的奇怪行为。就我而言,print
函数不应该改变函数的结果。有人知道吗?
import numpy as np
import networkx as nx
import networkx.algorithms.isomorphism as iso
def get_graph(nodes,edge_starts,edge_ends):
G = nx.Graph()
G.add_nodes_from(nodes)
edges = zip(edge_starts,edge_ends)
# print(list(edges))
G.add_edges_from(edges)
return G
nodes1 = [(0,{'symbol': 'Ni'}),(1,{'symbol': 'Pt'}),(2,(3,(4,(5,(6,(7,(8,(9,(10,(11,(12,(13,(14,(15,(16,{'symbol': 'CH3'}),(17,{'symbol': 'OH'}),(18,{'symbol': 'CO'})]
starts1 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18]
ends1 = [0,1,9]
G1 = get_graph(nodes1,starts1,ends1)
nodes2 = [(0,{'symbol': 'CO'})]
starts2 = [1,18]
ends2 = [0,13]
G2 = get_graph(nodes2,starts2,ends2)
print(nx.isomorphism.is_isomorphic(G1,G2))
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)