簡體   English   中英

python networkx:如何獲取隨機路徑?

[英]python networkx: How to get a random path?

在networkx中有這樣的功能

nx.all_simple_paths(G,source=0,target=5)

它返回所有路徑,但是如果有很多可能的路徑,它將工作很長時間。

如何立即獲得任何路徑?

它不會產生所有路徑,它會返回一個生成器,該生成器可能會被耗盡以獲取所有路徑。 區別不是挑剔的:這正是我們如何回答您的問題。 文檔開始all_simple_paths已經使用了深度優先搜索(這就是您想要的)。 然后,我們可以執行以下操作:

path = next(nx.all_simple_paths(G, source=0, target=5))

如果沒有路徑,它將引發StopIteration 有關更多詳細信息,請參見此處

例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM