两个相同的图表被认为不相等

时间:2016-04-04 19:22:16

标签: networkx

使用networkx,

  

MultiGraph和MultiDiGraph类允许您添加相同的内容   边缘两次

所以我猜这意味着基本类Graph()会忽略多个边缘。

我做了一个测试,发现它确实忽略了多个边缘,但是两次添加相同的边缘会使图形对象不同。有人可以解释一下原因吗?感谢

import networkx as nx

G1 = nx.Graph()
G1.add_edge(1, 2)
G1.edges() # [(1, 2)]
G1.degree(1) # 1

G2 = nx.Graph()
G2.add_edges_from([(1, 2), (1, 2)])
G2.edges() # [(1, 2)]
G2.degree(1) # 1

G1==G2 # False

1 个答案:

答案 0 :(得分:1)

您的图形是同构的(具有相同的结构)但是不同的Python对象。您可以使用nx.is_ismorphic

测试同构
import networkx as nx

G1 = nx.Graph()
G1.add_edge(1, 2)
G1.edges() # [(1, 2)]
G1.degree(1) # 1

G2 = nx.Graph()
G2.add_edges_from([(1, 2), (1, 2)])
G2.edges() # [(1, 2)]
G2.degree(1) # 1

print G1==G2 # False
print repr(G1),repr(G2)
print nx.is_isomorphic(G1,G2)

#OUTPUT
# False
#<networkx.classes.graph.Graph object at 0x7fda3174c050> <networkx.classes.graph.Graph object at 0x7fda3463e890>
#True