从完整图计算最短路径[关闭]

Posted

技术标签:

【中文标题】从完整图计算最短路径[关闭]【英文标题】:Computing shortest path from complete graph [closed] 【发布时间】:2012-12-07 10:46:19 【问题描述】:

我有一个矩阵 NxN,其中matrice[i][j] 是无向图中顶点ifj 之间的边的成本。

我需要确定的是包含所有 矩阵中的顶点。

所以对于像这样的输入:

0 198 67 368
198 0 131 432
67 131 0 301
368 432 301 0

我需要尝试所有可能的路径,在这种情况下:

0-->1-->2-->3-->0

是正确的,长度为 998。

我该如何实现?

【问题讨论】:

您正在描述旅行商问题。到处都有很多关于这个问题的材料。 亲密选民:为什么不是一个真正的问题?模棱两可吗?模糊的?过于宽泛?修辞? (不!它处理一些非常具体的事情,并询问如何完成) 【参考方案1】:

您正在描述被广泛研究的Traveling Salesman Problem。

虽然有很多方法可以逼近解决方案 - 确切的解决方案确实需要指数级的运行时间,而蛮力是解决它的一种选择(在 O(n!) 中)。

这个想法是生成所有可能的排列并评估每个排列 - 并找到最小值。 This question 例如讨论如何生成所有排列。同样的想法也适用于您的问题。

可以进行一些可能的优化,例如 branch & bound 技术 - 或使用智能 DP 解决方案。

【讨论】:

非常感谢,我没有意识到我之前的问题变成了旅行商问题......

以上是关于从完整图计算最短路径[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

最短路径算法(Dijkstra)

最短路径

最短路径

用C++求dijkstra算法求最短路径

用Dijkstra算法求最短路径的MATLAB程序

图 - 最短路径 (二)