0

Networkx を使用して依存関係グラフを作成しています。たとえば、私はこの構造体を持っています。

A
 +-B
   +-C
 +-H

AA
 +-BB
   +-CC

そのようなNetworkxで簡単に構築できます

G = nx.DiGraph()

G.add_edge(A,B)
G.add_edge(A,H)
G.add_edge(B,C)

G.add_edge(AA,BB)
G.add_edge(BB,)

(ちなみに、ルートノードを設定する方法がわからなかったので、すべてのルートを持つ root = set() を持っています。この場合は root=(A) です)

私の質問は、ノードを指定してすべての階層を取得するにはどうすればよいですか? たとえば、私がしたい場合:

 G.successors[A]

それは私を与えるでしょう

{A: {B: {C: {} }, H: {} } 

しかし、私がそうするなら、現時点では

G.successors[A]

それは私に与えるだけです

{H:{} , B:{} }

どちらが正しいのですが、残りはどこですか??? また、 Do G.successors[B] の場合、それは私を返します

{C:{}}

どちらが正しいのですが、私が G.successors[A] を実行するときに、なぜ彼はそれを入れないのですか?

そして別の質問です。Networksx を使用して、あるノードから別のノードへの「パス」を取得することはできますか? 例えば?

[A,H] or [A,B,C] 

ありがとうございました

4

1 に答える 1

1

http://networkx.lanl.gov/reference/algorithms.traversal.html

print nx.dfs_successors(G,'A')

>> {A: [H,B], B:[C]}

ただし、例で指定した構造を生成する方法はわかりません..

于 2013-01-10T09:36:41.150 に答える