考虑一个无向图。有n个顶点和m个边。所有边缘都有与之相关的权重。
我想设置一个算法,该算法将源顶点'',接收器顶点't'和数字'k'作为输入。算法的输出是从s到t的最短路径,在s和t之间有k个顶点。
请建议。谢谢!
答案 0 :(得分:1)
创建与图表关联的[numvertices] [numvertices]的距离矩阵。然后运行Floyd算法,但只是k迭代而不是numvertices迭代。
答案 1 :(得分:1)
经过一个小小的研究后,我发现这个问题是NP-Hard。因此我不得不使用参数化技术来解决这个问题。我用过的算法是一个固定的参数易处理算法。
我在算法中使用了Lawler's modification of the Yen's algorithm来解决这个问题。 Yen的算法有助于找出无环网络中的前n个最短路径。以下是我的算法:
从用户获取参数k(路径中的顶点数)。也可以从用户那里得到'm',这是路径不应超过的最大距离。这是帮助我们在多项式时间内解决NP-Hard问题的参数。
此步骤使用Yen的算法。找到下一条最短路径。检查路径是否有k个顶点。
一个。如果是,则中止并返回路径 湾否则,2
如果路径的总距离超过参数'm',则中止并返回'无结果'
Yen的算法使用Dijkstra算法找到最短路径。实现此算法以解决此问题很有趣。