访问k个顶点的无向图中的最短路径

时间:2013-03-30 03:09:02

标签: graph shortest-path

考虑一个无向图。有n个顶点和m个边。所有边缘都有与之相关的权重。

我想设置一个算法,该算法将源顶点'',接收器顶点't'和数字'k'作为输入。算法的输出是从s到t的最短路径,在s和t之间有k个顶点。

请建议。谢谢!

2 个答案:

答案 0 :(得分:1)

创建与图表关联的[numvertices] [numvertices]的距离矩阵。然后运行Floyd算法,但只是k迭代而不是numvertices迭代。

答案 1 :(得分:1)

经过一个小小的研究后,我发现这个问题是NP-Hard。因此我不得不使用参数化技术来解决这个问题。我用过的算法是一个固定的参数易处理算法。

我在算法中使用了Lawler's modification of the Yen's algorithm来解决这个问题。 Yen的算法有助于找出无环网络中的前n个最短路径。以下是我的算法:

  1. 从用户获取参数k(路径中的顶点数)。也可以从用户那里得到'm',这是路径不应超过的最大距离。这是帮助我们在多项式时间内解决NP-Hard问题的参数。

  2. 此步骤使用Yen的算法。找到下一条最短路径。检查路径是否有k个顶点。

    一个。如果是,则中止并返回路径 湾否则,2

  3. 如果路径的总距离超过参数'm',则中止并返回'无结果'

  4. Yen的算法使用Dijkstra算法找到最短路径。实现此算法以解决此问题很有趣。