Python networkx:获取从根到叶的所有简单路径的简单方法

2022-03-31 00:00:00 python networkx

问题描述

我基于有向图构建一棵树。源数据是SQL表中的一系列父子关系。它肯定是一棵树(无论如何我都会验证)。 我想要一组从根到每个叶的简单路径。这些数据是会计"科目表"中的标题,路径类似于"根->资产->流动资产->应收账款->贸易债务人" 其中‘Trade Debtors’是实际账户。

目前,我在构建图表时收集叶ID(实际帐户)。我可以这样做,因为它们是由数据中的某些属性标识的。 然后我重复:

for leaf in detail_or_bank_accts:
    paths_to_detail_or_bank_accts.append(list(nx.all_simple_paths(G,0,leaf)))

但对我来说幸运的是,我知道叶节点。有没有更优雅的方式来做这件事?


解决方案

我假设您有一个DiGraph。找出哪些节点是树叶非常快。

for node in G:
    if G.out_degree(node)==0: #it's a leaf
        paths.append(nx.shortest_path(G, root, node))

相关文章