8

マルチグラフでは、 *add_edge(a,b,weight=1)* を呼び出すたびに、ノードabの間に新しいエッジが追加されます。グラフを作成するときに、a と b が再び見つかったときにこの重みを変更することは可能です。現在、(a, b) または (b, a) が接続されているかどうかを確認してから、エッジを削除して新しいエッジを追加する必要があります。単純に体重を更新できるはずだと私には思えます。

注:ノード間で異なるタイプのエッジを使用するため、マルチグラフが必要です(keyを使用して区別されます)

4

1 に答える 1

14

Multigraph.add_edgeドキュメントは、マルチグラフ内のエッジを一意に識別するために引数を使用する必要があることを示していますkey。次に例を示します。

>>> import networkx as nx
>>> G = nx.MultiGraph()
>>> G.add_edge(1, 2, key='xyz', weight=2)
>>> G.add_edge(1, 2, key='abc', weight=1)
>>> G.edges(data=True)
[(1, 2, {'weight': 2}), (1, 2, {'weight': 1})]

ここで、 によってキー設定されたエッジを更新するには、xyzそのパラメーターをもう一度渡すだけです。

>>> G.add_edge(1, 2, key='xyz', weight=7)
>>> G.edges(data=True)
[(1, 2, {'weight': 7}), (1, 2, {'weight': 1})]

以前の値を読み取るには、次のようにget_edge_dataを使用できます。

>>> G.get_edge_data(1, 2, key='xyz')
{'weight': 7}
于 2012-02-27T17:53:34.893 に答える