在networkx中有这样的功能
for (int i = subject_cat1_id[0].Count-i; i >=0; i--) {
....
}
它返回所有路径,但是如果有很多可能的路径,它将工作很长时间。
一个人怎么能立即获得任何路径?
答案 0 :(得分:0)
它不产生 all 路径,它返回一个生成器,该生成器可能会被用尽以获得 all 路径。区别不是挑剔的:这正是我们如何回答您的问题。 all_simple_paths
已从documentation开始使用深度优先搜索(这就是您想要的)。然后,我们可以执行以下操作,
path = next(nx.all_simple_paths(G, source=0, target=5))
如果不存在任何路径,将引发StopIteration
。另请参见here。
答案 1 :(得分:0)
例如:
import networkx as nx
import random
G = nx.complete_graph(4)
paths = list(nx.all_simple_paths(G, source=0, target=3))
print paths
# [[0, 1, 2, 3], [0, 1, 3], [0, 2, 1, 3], [0, 2, 3], [0, 3]]
# get a random idx
idx = random.randint(0, len(paths))
print paths[idx]
# [0, 3] may be
# print all path it
for path in paths:
print path