2017-12-20 8 views
0

내가 그래프 A의 모든 노드에 대해 그래프 A.이, 나는 내가 가지고있는 지금Networkx : 두 그래프 사이의 상호 연결 노드가

그래서 그래프 B.에 추가 할 노드의 이름을 변환하고 결정하는 몇 가지 규칙을 사용하여 B에서 파생 된 A에서 원본 노드와 B에서 변환 된 노드 사이에 어떤 종류의 링크를 만들 수 있는지 궁금 해서요.

networkx 라이브러리를 사용하여 그것을 수행하는 방법을 알아낼 수 없습니다. 모든 포인터는 도움이 될 것입니다 ...

+0

당신은 더 많이 "링크를 일종의"무슨 뜻인지 지정해야합니다. – Paul

+0

@Paul 나는 A에서 노드로 갈 수 있어야하고 다른 그래프 B에서 연관된 노드를 얻을 수 있어야한다고 생각했다. – Lonewolf

답변

0

노드는 속성을 가질 수 있습니다. 그래프 A의 각 노드에서 그래프 B의 해당 노드를 보유 할 속성을 생성 할 수 있습니다.

아래 코드에서 그래프 A는 3 개의 노드를 갖습니다 : 1, 2 및 3 그래프 B는 노드 1 , 4, 9 (A의 노드 값의 제곱). B의 각 노드가 작성 될 때, 그 값은 노드의 원래 값인 b_node 속성에 저장됩니다.

import networkx as nx 

def main(): 
    # Create graph A 
    a = nx.Graph() 
    a.add_node(1) 
    a.add_node(2) 
    a.add_node(3) 

    # Create graph B with nodes that are squares of the nodes in A 
    # Add to each node in A an attribute (b_node) 
    # to hold the corresponding node in B 
    b = nx.Graph() 
    for node in a: 
     a.add_node(node, b_node=node * node) 
     b.add_node(node * node) 

    print("A:") 
    print(a.nodes.data()) 
    print("\nB:") 
    print(b.nodes.data()) 

if __name__ == '__main__': 
    main() 

출력 :

A: 
[(1, {'b_node': 1}), (2, {'b_node': 4}), (3, {'b_node': 9})] 

B: 
[(1, {}), (4, {}), (9, {})]