我找到了许多关于寻找两点间最短路径的算法和方法,但我遇到的情况是数据被建模为:
[(A,B),(C,D),(B,C),(D,E)...] # 可能路径的列表
如果我们假设我需要从A到E的路径,结果应该是:
(A,B)=>(B,C)=>(C,D)=>(D,E)
但我找不到一种Pythonic的方式来进行这种搜索。
回答:
Pythonic的方式是使用现有的模块。在这种情况下,我们知道有networkx,我们可以编写如下代码:
实现
import networkx as nxG = nx.Graph([('A','B'),('C','D'),('B','C'),('D','E')])path = nx.shortest_path(G, 'A', 'E')
输出
zip(path, path[1:])[('A', 'B'), ('B', 'C'), ('C', 'D'), ('D', 'E')]