使用networkx从图中删除边

3

我正在尝试将一个DiGraph转换成n叉树,并以层次遍历或BFS的方式显示节点。我的树类似于这个例子,但更大,为了简单起见使用这个例子:

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')])

树:从这个问题中借鉴了数据,并适当地进行了修改:

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

现在我的真实数据集更加复杂,有数百个节点,为了简化起见,我使用了上面的图表。

我想要从树中删除不必要的边,例如,如果一个父节点有一条到子节点的边,子节点又有一条到孙子节点的边,并且父节点还有一条到孙子节点的边。我只想要删除孙子节点和父节点(根节点)之间的边,因为这会让我的图形更加复杂。 例如:我想要从上面的图形中删除('n', 'n131')('n', 'n221')。最好的方法是什么?


你找到解决方案了吗?如果是的话,能分享一下见解吗(保证点赞 :P)? - Andreas
1个回答

0

谢谢你的努力!但我必须通过networkx来完成这个。 - askb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接