如何从加权图中的顶点找到长度为k的最短路径?

时间:2019-05-05 17:58:36

标签: javascript algorithm graph shortest-path

是否有一种算法可以在一个完整的加权图中从顶点中找到长度k 的最短路径?

在我看来,Djikstra算法似乎不适用于此问题,因为我们无法选择路径的大小。

是否有解决此问题的算法? Djikstra算法的变体可以解决这个问题吗?

例如,对于以下图形(Graph example)。 在k = 3的情况下,对于顶点A,我们将使用一条权重为324的路径,即A-E-D-C。这是权重最小的路径。

2 个答案:

答案 0 :(得分:3)

不,我认为Dijakstra不会做得很好。您不是要到达距离最短的每个节点,而是要以最小的距离得到任何地方(距离原点的k跳)。

您可以改用广度优先或深度优先的图遍历,而只需在搜索树中以k为界找到最小距离。您可以使用branch and bound优化树形搜索。

答案 1 :(得分:0)

如果图形确实是完整(如您在问题中提到的那样),则这是子集和问题的一个实例

https://en.wikipedia.org/wiki/Subset_sum_problem

由于完整图使您可以随时从任何节点跳到任何节点,因此图的结构并不重要,而仅取决于权重。问题是 NP完全,因此没有有效的方法来实现

如果图形不完整,则需要Bergi的答案。昂贵的BFS是您唯一的选择

相关问题