使用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
答案 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