私はNetworkXグラフを持っています。複数のノード間でedge contractionを実行する方法を知りたいと思います。例えばPython networkx:edge contraction
私はX、Y及びZ契約したい場合は、:
_ node A _
_/ | \_
node X --- node Y --- node Z
を
node A
|
node XYZ (or whatever X/Y/Z)
グラフの作成になる問題ではありません。できます。私は "end lvl"(ノード名の長さは7に等しい)と呼ばれるノードと、同じ意味を持つノードをマージしてグラフを縮小したい。
# edge contraction for same nodes
# for each node, get the links to other nodes "end lvl"
# if there is such a link, it means that these node are
# the sames
#
# copy graph
I = G
for n,d in G.nodes(data=True):
if n in I.nodes():
if len(n) == 7:
# list of nodes adjacent to n : filter only "end lvl" nodes
neighbors = [ node for node in I.neighbors(n) if len(node) == 7 ]
nodes_to_merges = neighbors.append(n)
I = nx.condensation(I,scc=nodes_to_merges)
私はJSONに変換するときに私が得たものは次のとおりです:
{"directed": true, "graph": [], "nodes": [{"id": 0}], "links": [], "multigraph": false}
あなたのように問題があります
私はので、私はそれを使用しようとしたNetworkXに凝縮機能を発見しました見ることができます...
関数への参照はhereです。
についてどのように
解決策の1つは、dict表現(to_dict_of_dicts)を使用して手動で行うことです。 – keyser
[OK]を、私はグラフに精通していないが、@ゾディアックが私に尋ねたように私は私の質問を改善する必要があります。ここにそれが来る。 – user1254498
nodes()、neighbors()、およびcondensation()関数は何をしますか? nxとは何ですか? – xuanji