2017-12-20 20 views
0

私はグラフA内のすべてのノードについて、グラフAを持って、私は私が持っている今Networkx:二つのグラフ間の相互接続ノードは

だから、グラフB.に追加するノードの名前を変換して決定するいくつかのルールを使用しますBのAから派生しました。Aの元のノードとBの変換されたノードの間に何らかの種類のリンクを作成することが可能かどうか疑問でした。

networkxライブラリを使用して行う方法を見つけられませんでした。どんなポインタも役に立ちます...

+0

あなたはより多くのあなたが、「リンクのいくつかの並べ替え」によって何を意味するかを指定する必要があります。 – Paul

+0

@Paul私は、Aのノードに行くことができるはずの線に沿って考えていました。そして、私は他のグラフBの関連するノードを手に入れてください。 – Lonewolf

答えて

0

ノードには属性があります。グラフAの各ノードで、グラフBの対応するノードを保持する属性を作成できます。

グラフAは3つのノード1,2,3を持っています。グラフBはノード1 、4、および9(Aのノードの値の2乗)である。 B内の各ノードが作成されると、その値は、そのノードを生成したAノードの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, {})] 
関連する問題