2017-10-11 13 views
0

NetworkX経由でサブグラフ同型写像を検索するときにノードのマッピングを見つける方法はありますか?例えば、サブグラフ同型化のためのNetworkXマッチャー

import numpy as np 
from networkx.algorithms import isomorphism 
import networkx as nx 

B = [[0, 2, 1, 0, 0], 
    [2, 0, 1, 0, 1], 
    [1, 1, 0, 1, 0], 
    [0, 0, 1, 0, 0], 
    [0, 1, 0, 0, 0]] 

A = [[0, 1, 1], 
    [1, 0, 2], 
    [1, 2, 0]] 

G1 = nx.from_numpy_matrix(np.array(B), create_using=nx.MultiGraph()) 
G2 = nx.from_numpy_matrix(np.array(A), create_using=nx.MultiGraph()) 
GM = isomorphism.MultiGraphMatcher(G1,G2) 
print(GM.subgraph_is_isomorphic()) 
print(GM.mapping) 

プリント{0: 0, 1: 1, 2: 2}が、それは真実ではありません。私は解決策見つけ

+0

私にとっては、これは '{}'を表示します。どのバージョンのnxを使用していますか? 'nx .__ version__'を確認するには – Joel

+0

@Joelバージョンは2.0です – Anatoly

+0

私と同じです。実際にこのコードブロックを正確に実行しましたか? – Joel

答えて

0

:ソースコードのドキュメントによると

GM = isomorphism.MultiGraphMatcher(G1, G2, edge_match=lambda x, y: x[0]['weight'] == y[0]['weight']) 

を、multigraphsに指定さedge_match機能があるはずです。

関連する問題