如果我们希望判断两个网络是否同构,以及同构时,两个网络之间的节点映射关系,那么我们可以使用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是一个空字典,这会让人很懵
如果觉得《networkx 判断两图是否同构 得到同构的节点映射》对你有帮助,请点赞、收藏,并留下你的观点哦!