如何解决贝尔曼福特的打印路径
我的任务如下。我有一个开始顶点,一个结束顶点。我需要找到两者之间的最短路径。 在我的代码中,我能够找到最短路径成本,但我不明白如何返回与该成本相对应的路径。
输入是如下形式的图 [[vertex_from,vertex_to,cost],[vertex_from,cost]...]
def belmanford(adj_matrix,v_from,v_to):
n,graph = len(graphe(adj_matrix)),adj_matrix
dist = [float("inf") for i in range(n)] # all vertices are considered not visited
dist[v_from]=0#cost from start vertex to end vertex is null
for i in range(1,n):
for u,v,c in graph:#iterating over all vertices
if dist[u] != float("inf") and dist[u] +c < dist[v]:
dist[v] = dist[u] + c #we have in dist all distances from vertex start to another one and we replace them when we find a better one
if dist[v_to]!=float("inf"):
return dist[v_to]#shortest path
else:
return -1
测试用例示例:
adj_matrix =[[0,1,5],[0,2,2],[1,[2,2]]
result=[0,2]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。