在图中找到节点对之间的K最短路径?

时间:2013-01-21 08:19:32

标签: c# java c algorithm graph

有没有人知道找到k最短路径的算法,我在互联网上搜索并找到了Yen's但是它太复杂了?

非常感谢。

3 个答案:

答案 0 :(得分:3)

无法有效地完成(多项式) 1 - 问题是NP-Hard

以这种方式思考 - 你是否可以通过对[1,n!]范围k进行二元搜索来找到即使是最短路径的长度(在此默认简单路径),你可以查找图表中是否有hamiltonian path(通过查找长度为n的路径)。

由于hamiltonian path problem是NP-Hard,这个问题也是如此,并且没有已知的多项式解决方案。


(1)可能,除非P=NP,但大多数CS研究人员认为它不太可能

答案 1 :(得分:1)

All Together Now ... Google for Dijkstra's Algorithm。有一个实现here

答案 2 :(得分:0)

这是通过联合集解决的。谷歌它,但简而言之,你有2个向量。父母一个用-1初始化。另一个用零初始化的等级。 现在从源节点开始。你可以从那里找到每个可能的节点。通过使其父[i] =当前节点将它们添加到您的集合中。根据持有数字<[p]的等级[i]决定哪一个将成为谁的父母