【问题标题】:Find all paths from a node to leaves查找从节点到叶子的所有路径
【发布时间】:2018-07-11 12:35:59
【问题描述】:

我有一个巨大的 networkx 图形对象(180 万个节点)。我想用给定的节点输入这个对象,并检索从这个节点到叶子的所有路径(一个只连接一个边的节点)。顺便说一句,这些路径的长度是不固定的。

我发现这样做的唯一方法是:

    leaves = [node for node in G.nodes() if len(G.edges(node)) == 1]
    for leaf in leaves:
        paths =  [x for x in nx.all_simple_paths(G, 1, leaf, cutoff=None)]

但是,遍历所有可能的离开并寻找给定节点和叶子之间的路径需要很长时间。

有没有办法更快地得到结果?就像在使用 ElasticSearch 进行信息检索时使用的本体爆炸一样?

谢谢

【问题讨论】:

    标签: python network-programming networkx


    【解决方案1】:

    将每个叶子的边添加到新节点auxiliary。查找从给定节点到auxiliary 的所有路径。然后删除每条路径的最后一步,你就有了从给定节点到叶子的所有路径。

    【讨论】:

    • 简单明了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多