代码之家  ›  专栏  ›  技术社区  ›  Anatoli

子图同构的网络X匹配器

  •  0
  • Anatoli  · 技术社区  · 8 年前

    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} ,但事实并非如此。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Anatoli    8 年前

    我找到了解决方案:

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

    根据源代码文档,应该为多重图指定edge\u匹配函数。

    推荐文章