【问题标题】:NetworkX recursive child nodesNetworkX 递归子节点
【发布时间】:2017-10-01 18:37:44
【问题描述】:

使用最新的 NetworkX(撰写本文时为version 1.11),检索给定节点的所有(递归)子节点的最有效方法是什么?
successors() 函数检索直接子级,在以前的版本中有 dfs_preorder_nodes solution

【问题讨论】:

  • dfs_preorder_nodes 有什么问题?
  • 啊,我的错!直到现在,我只能找到以前的版本。出于某种原因,认为最新版本具有类和基于类的方法。干杯!

标签: python recursion nodes networkx


【解决方案1】:

有一个 descendants 方法可以找到所有子节点,包括每个子节点的子节点:

1-2
 \
  3
   \
    4
import networkx as nx

G = nx.DiGraph()
G.add_edge(1, 2)
G.add_edge(1, 3)
G.add_edge(2, 4)
res = nx.descendants(G, 1)
print (res) #{2,3,4}

【讨论】:

    【解决方案2】:

    dfs_preorder_nodes 在最新版本中仍然有效,正如 Joel 指出的那样。该文档可在here 获得。

    以下实现了所需的,即感兴趣节点的所有递归子节点:

    import networkx as nx 
    children = [node for node in nx.dfs_preorder_nodes(network, queryID)]`
    

    【讨论】:

    • 你也可以children = list(nx.dfs...) 把生成器变成一个列表。
    猜你喜欢
    • 2016-05-08
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多