为了账号安全,请及时绑定邮箱和手机立即绑定

去,Dijkstra:打印出路径,而不仅仅是计算最短距离

去,Dijkstra:打印出路径,而不仅仅是计算最短距离

Go
收到一只叮咚 2021-07-08 14:23:25
去吧,Dijkstra:打印出路径,而不仅仅是计算最短距离。http://play.golang.org/p/A2jnzKcbWD我能够使用 Dijkstra 算法找到最短距离,也许不是。代码可以在这里找到。但是如果我不能打印出路径就没有用了。由于有很多指针,我无法弄清楚如何打印出权重最少的最终路径。简而言之,我如何不仅找到最短距离,而且还要在给定的代码上打印出最短路径?链接在这里:http://play.golang.org/p/A2jnzKcbWD代码片段如下:const MAXWEIGHT = 1000000type MinDistanceFromSource map[*Vertex]intfunc (G *Graph) Dijks(StartSource, TargetSource *Vertex) MinDistanceFromSource {  D := make(MinDistanceFromSource)  for _, vertex := range G.VertexArray {    D[vertex] = MAXWEIGHT  }  D[StartSource] = 0  for edge := range StartSource.GetAdEdg() {    D[edge.Destination] = edge.Weight  }  CalculateD(StartSource, TargetSource, D)  return D}func CalculateD(StartSource, TargetSource *Vertex, D MinDistanceFromSource) {  for edge := range StartSource.GetAdEdg() {    if D[edge.Destination] > D[edge.Source]+edge.Weight {      D[edge.Destination] = D[edge.Source] + edge.Weight    } else if D[edge.Destination] < D[edge.Source]+edge.Weight {      continue    }    CalculateD(edge.Destination, TargetSource, D)  }}我对数组做了一些事情来查看正在更新的内容。http://play.golang.org/p/bRXYjnIGxy这给了 ms   [A->D D->E E->F F->T B->E E->D E->F F->T]
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信