依存関係のグラフを管理するために、Networkxで少し遊んでいます。各文字がサーバーを表すこのグラフがあるとしましょう
>>> 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
したがって、ここでは、Aを開始する前にHとBを開始し、Hを開始するにはCを開始し、次にBを開始する必要があることがわかります。CとDを開始する必要があります。
Networkxを少しいじることで、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だけです。
ありがとうございました