假设我有两个图A和B,我想知道A是否是B的子图。这些节点包含属性,比如'size‘和'material’。
当我运行时:
GM = networkx.algorithms.isomorphism.GraphMatcher(B,A)
print networkx.algorithms.isomorphism.subgraph_is_isomorphic()这只按边匹配图形,而不按边和属性匹配。
有关于如何检查属性的线索吗?
同样,假设B包含A的2个连通图。
当我运行时:
GM.mapping这将只输出A的1个子图。你知道如何输出每个子图吗?
发布于 2013-03-28 08:04:14
我通过使用以下命令解决了这个问题:
print GM = iso.GraphMatcher(B,A,node_match=iso.categorical_node_match(['material', 'size'],['metal',1]))我之前不知道的是,['metal',1]只是一个默认的,而不是一个硬匹配。
发布于 2015-05-08 22:18:23
您可以通过以下方式遍历所有可能的子图
GM = networkx.algorithms.isomorphism.GraphMatcher(B,A)
for subgraph in GM.subgraph_isomorphisms_iter():
print subgraph本例中的子图是一个字典,它将B的节点映射到A的节点。
对于属性匹配的问题,drum的建议对我很有效。对于大型图,额外的属性匹配实际上可以显着提高速度。
https://stackoverflow.com/questions/15671522
复制相似问题