返回NetworkX有向图中源节点的贡献

时间:2017-08-31 21:19:54

标签: tree nodes networkx

我有一个定向的NetworkX图,它通过边连接供应节点,为其定义了容量属性值。

我有兴趣在指定源/汇节点时获取根节点列表。 我设法使用深度优先搜索方法nx.dfs_tree(G, sink node)

获取树

但是,我想:

  • 获取所有源节点的列表及其在配置汇聚节点时的总体贡献。

1 个答案:

答案 0 :(得分:0)

如果源节点在配置汇聚节点时的总体贡献是指源和汇之间最短路径中每条边的容量之和,那么:

contributions = nx.shortest_path_length(G, target=sink_node, weight='capacity')
paths = nx.shortest_path(G, target=sink_node, weight='capacity')
intermediary_nodes = set()
for node in paths:
    intermediary_nodes.update(paths[node][1:])
sources = [(node, contribution) for node, contribution in contributions.items() if node not in intermediary_nodes]

将完成这项工作。其中sources是这类2元组的列表(来源,总贡献)。不贡献的节点将被忽略。