networkx 判断两图是否同构 得到同构的节点映射

如果我们希望判断两个网络是否同构,以及同构时,两个网络之间的节点映射关系,那么我们可以使用networkx提供的api

networkx是python的处理网络十分好用的一个包

具体使用方法如下

 GM = nx.isomorphism.GraphMatcher(atomNx,dictNx)
 GM.is_isomorphic():
 mapping = GM.mapping 

首先使用GraphMatcher()方法,将两个网络输入,这里是以第一个网络atomNx为基础,来看第二个网络dictNx是否与之同构
is_isomorphic()方法是判断两个网络是否有同构关系,返回true or false
mapping()方法返回两个网络的节点映射关系

这里需要注意:
首先输入网络是nx.Graph()
然后这里是无向图,nx有提供针对有向图,标签图,带权等不同网络不同的同构方法,可以自己看api尝试
最关键一点,GraphMatcher只是一个类,它的init方法里并没有直接测是否同构,所以在使用mapping()之前,一定要调用is_isomorphic()方法,不然得到的mapping是一个空字典,这会让人很懵

猜你喜欢

转载自blog.csdn.net/qq_34687559/article/details/121263335