首先让我们定义Dijkstra算法:
Dijkstra算法在具有非负边权重的有向图中找到单源最短路径
如果我有一个源S和目标TI可以用 Dijkstra 算法找到这两个顶点之间的最短路径但是这里的问题我想找到这两个顶点之间的最短路径,其间的边数是多少这两个不超过表格K.
第一部分是Dijkstra算法,第二部分是 BFS 算法,因为我们可以用 BFS 算法找到无加权图中的最短路径。
所以我想知道有没有办法可以改变 dijkstra 以解决这个问题?
任何解决方案都会感激不尽。
答案 0 :(得分:5)
您可以使用Bellman-Ford's algorithm,而在外部循环中运行到|V| - 1
,直到k
。外循环迭代器指示从源到每个目标的最短路径的最大长度。
来自维基百科(外环索引修改)
for i from 1 to k: //here up to k instead to |V|
for each edge (u, v) with weight w in edges:
if distance[u] + w < distance[v]:
distance[v] := distance[u] + w
predecessor[v] := u