去吧,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 回答
- 0 關注
- 225 瀏覽
添加回答
舉報
0/150
提交
取消