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是一个空字典,这会让人很懵

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值