Networkxを使って依存関係のグラフを管理しています。 各文字は、そこでここでは、Aを開始する前に、我々はHとBを開始するために、我々はCを開始し、その後、Bを起動する必要がHを開始する必要があることがわかりますサーバーNetworkx(Python)を使ったグラフトラバーサル
>>> G = nx.Graph()
>>> G.add_edge("A","B")
>>> G.add_edge("A","H")
>>> G.add_edge("H","C")
>>> G.add_edge("B","C")
>>> G.add_edge("B","D")
A
/ \
H B
/ /\
C C D
を表す私はこのグラフを持っているのは、言ってみましょうNetworkxでビットをいじることでCとD
を開始するためにおしっこ必要性私は、DFSトラバーサル
print nx.dfs_successors(G,"A")
{A:[H,B], H:[C], B:[D] }
を実行していることを得ることができることがわかった。しかし、私はその方法に問題があります。ツリー内に2つの同じ文字があるときにわかるように、Networkxはそれらのうちの1つを最終構造に入れることを選択しました(これは正しい)。しかし、完全な構造を持つ必要があります Networkxに構造を追加するにはどうすればよいですかB:[D、C] ??
は、私はそう、すべてが「内部」正しい
>>> nx.dfs_successors(G,"B")
{'B': ['C', 'D']}
を行うことによって、それはない私が望む方法でそれを表示するだけでdfs_successorsだということを正確にしたいです。
が
グラフを作成していただきありがとうございます。これは私がNetworkxが私の背中でやっていたと思っていたものです。したがって、私の質問は次のようになります.Networkxは私の例のようなツリーをどのように作成しますか? 私にとって理想的なのは、G.add_edge( "B"、 "C")を作成するときです。新しいノード "C"は、Hに接続されたノードを再利用するように作成されます。 – Johny19
次に、ノード何か他の。 C1とC2、おそらく。 NetworkXは私の知る限り同じラベルの複数のノードを許可しません。 – brentlance
しかし、私はノードが同じである必要があります。私はメインスレッドで言ったように。私のノードはservernameですが、それ以外の場合は名前を変更することはできません。どちらがどちらか分かりません... Thorsten Kranzが「間違っている」というグラフは正しくありません。Bは「C AND D」に依存します。 。アルゴリズム "dfs_successors()"はBのみがDに依存し、THATは間違っていることを出力します。 Networkxでツリーを作成できない場合は、他のlibでも可能ですか?ありがとう – Johny19