python networkx:如何获取随机路径?

时间:2018-07-14 09:15:21

标签: python networkx

在networkx中有这样的功能

for (int i = subject_cat1_id[0].Count-i; i >=0; i--) {
    ....
}

它返回所有路径,但是如果有很多可能的路径,它将工作很长时间。

一个人怎么能立即获得任何路径?

2 个答案:

答案 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