测试两个NetworkX图是否相同(即每个节点上的相同节点集,相同的节点属性,每个边上的相同边集和相同的边属性),最有效的方法是什么?假设我们知道这两个图是同一类的。
谢谢你的回答。
答案 0 :(得分:12)
NetworkX中有一个名为 is_isomorphic()
的功能以下是该页面的示例:
>>> import networkx.algorithms.isomorphism as iso
>>> G1 = nx.DiGraph()
>>> G2 = nx.DiGraph()
>>> G1.add_path([1,2,3,4],weight=1)
>>> G2.add_path([10,20,30,40],weight=2)
>>> em = iso.numerical_edge_match('weight', 1)
>>> nx.is_isomorphic(G1, G2) # no weights considered
True
>>> nx.is_isomorphic(G1, G2, edge_match=em) # match weights
False