我有一个巨大的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进行信息检索的本体爆炸中一样?
谢谢
答案 0 :(得分:1)
从每个叶子到新节点auxiliary
添加一条边。查找从给定节点到auxiliary
的所有路径。然后删除每个路径的最后一步,您将拥有从给定节点到叶子的所有路径。