2016-09-16 17 views
1

DiGraphをn-aryツリーに変換し、レベル順またはBFSでノードを表示しようとしています。私の木は、この例を使用して簡単にするために、はるかに大きいこれに似ていますが、:networkxを使用してグラフからエッジを削除する

G = networkx.DiGraph() 
G.add_edges_from([('n', 'n1'), ('n', 'n2'), ('n', 'n3')]) 
G.add_edges_from([('n4', 'n41'), ('n1', 'n11'), ('n1', 'n12'), ('n1', 'n13')]) 
G.add_edges_from([('n2', 'n21'), ('n2', 'n22'), ('n', 'n22')]) 
G.add_edges_from([('n13', 'n131'), ('n22', 'n221'), ('n', 'n131'), ('n', 'n221')]) 

ツリー:このquestionからデータを借用し、適切に修正:

n---->n1--->n11 
|  |--->n12 
|  |--->n13 
|-----------|--->n131 
|--->n2    
|  |---->n21  
|  |---->n22  
|------------|--->n221 
|--->n3 

今私の実際のデータセットがあります上記の図を使用して、シンプルに保つために、何百ものノードでより複雑になっています。

親が子にエッジを持ち、孫に別のエッジを持ち、親も孫にエッジを持つように、不要なエッジをツリーから削除します。私は単純に孫と親(根)の間のエッジを削除したい、これは私のグラフを複雑にしているので。 例:上のグラフから('n', 'n131')('n', 'n221')を削除します。これを達成する最良の方法は何ですか?あなたは、グラフGの最小スパニングツリーを見つけたいよう

答えて

関連する問題