我实施了Floyd-Warshall算法。根据他们的矩阵,我可以得到正确的结果,关于两个地方之间的最短路径和他们的距离。我的问题是如何打印从i到j的最短距离。我做了一些研究,我发现了一个类似的算法。任何人都可以解释我应该怎么做,或者它是如何工作的,或者说出任何其他建议?
PrintShortestPath(P,i,j){
if(i==j) print i
else if (P[i][j]==NULL)
print "No path from i to j"
else{
PrintShortestPath(P,i,P[i][j])
print j
}
}
答案 0 :(得分:1)
Floyd的算法考虑了两个节点之间的所有路径,并保持最便宜的发现。 你的代码以递归方式进行。 这是另一个实现,在C中有一个很好的解释: http://www.fearme.com/misc/alg/node88.html
你也可以考虑Dijkstra的算法,它可能对稀疏图表有更好的表现。
- L
答案 1 :(得分:0)
您发布的算法中的矩阵P是前趋矩阵。 它列出了每条路径i - > j前身。
这必须与距离矩阵一起计算:
如果您发布距离的解决方案,我可以更精确。