我在寻找一种算法,它能在一个包含指定数量边的图中找到两个顶点(i和j)之间的最短路径,n。我有一个动态程序,它能看到到目的地的最短路径有n-1条边,但我如何能确定找到的最短路径从i开始?

最佳答案

我猜这些边有不同的代价/长度,约束条件是有n条边,在从i到j的所有路径中,只有n条单独的边,目标是找到总代价/长度最小的一条。
如果使用动态编程执行此操作,则会出现以下情况

spath(f, t, n): --- returns shortest path from 'f' to 't' that has 'n' edges

spath(x, x, 0) = [x] --- path that has only one vertex
spath(x, y, 0) = NO PATH --- when x != y

spath(f, t, n) =
  min cost path over (x is any node that is connected to t):
     spath(f, x, n-1) + [t] (x can be appended because there is edge x - t)

10-06 01:46