Python:用最少路径数表示路径的图形
我已经实现并修改了它。对于给定的图,如果需要得到从A到F的最短路径 A--(R2,R4)-->M--(R2,R4)-->N--(R3)-->L--(R3)-->F 对于修改后的代码或其他方式,我感兴趣的是最少的路由数,所以在这种情况下,直接路由R1输出应该是 A--(R1)-->B--(R1)-->C--(R1)-->D--(R1)-->E--(R1)-->F 有人能建议我们怎么才能做到这一点吗。假设路线之间的距离相同。这是我的代码。Python:用最少路径数表示路径的图形,python,graph,Python,Graph,我已经实现并修改了它。对于给定的图,如果需要得到从A到F的最短路径 A--(R2,R4)-->M--(R2,R4)-->N--(R3)-->L--(R3)-->F 对于修改后的代码或其他方式,我感兴趣的是最少的路由数,所以在这种情况下,直接路由R1输出应该是 A--(R1)-->B--(R1)-->C--(R1)-->D--(R1)-->E--(R1)-->F 有人能建议我们怎么才能做到这一点吗。假设路线之间的距离相同。这是我的代码。 您可以修改图形,使路线上的每个早期顶点都有一条边,可以连接到
您可以修改图形,使路线上的每个早期顶点都有一条边,可以连接到后面的顶点(更改链接代码中的第49-51行): 这将产生:
For A to F : >
(('A', 'F'), ['R1'])
For A to F : >
(('A', 'B'), ['R1'])
(('B', 'C'), ['R1'])
(('C', 'D'), ['R1'])
(('D', 'E'), ['R1'])
(('E', 'F'), ['R1'])
如果您希望展开路线,可以将打印代码修改为:
print "For A to F : > "
for (s,d),r in find_shortest_path("A","F"):
b = False
for i in range(len(routes[r[0]])):
v = routes[r[0]][i]
if v == s:
b = True
elif v == d:
break
if b:
print((v, routes[r[0]][i+1]), r)
这将产生:
For A to F : >
(('A', 'F'), ['R1'])
For A to F : >
(('A', 'B'), ['R1'])
(('B', 'C'), ['R1'])
(('C', 'D'), ['R1'])
(('D', 'E'), ['R1'])
(('E', 'F'), ['R1'])
可以将多条边替换为一条权重边,权重为边数。
然后在上面做Dijkstra算法。在您的示例中,所需路径的图权重将为5,而未加权图上Dijkstra算法返回的路径将为6我不理解您的问题。这幅画不是图表。你能定义你所说的路径和路线是什么意思吗?路径就是这里的路线,R1:[A,B,C,D,E,F]是一条路径。路径和路线是相同的。假设它们是公交专用线路上的公共汽车站。ThanksAlso请看一下为上面的图运行的代码,查找a到F之间的路径Thankse