具有指定边数的最短路径

时间:2011-04-25 00:43:08

标签: algorithm

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

2 个答案:

答案 0 :(得分:3)

我猜边缘有不同的成本/长度,约束是有n条边,在i到j的所有路径中都有n条单独的边,目标是找到总成本最低的边/ length。

如果使用动态编程执行此操作,则重复发生

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)

答案 1 :(得分:1)

你的措辞含糊不清。 n是图表中的边数或路径中的跳数吗?如果是后者,那么它不再是最短的路径了。如果你的意思是前者,那么像Dijkstra这样的任何流行的shortest-path algorithm都会起作用。如果您的意思是后者,那么从n开始进行i次BFS迭代,并在第n个边界找到您的j。如果它不存在,那么i跳跃中没有从jn的路径。沿着BFS边界走下去读你的路径。