我有一个矩阵NxN,其中matrice[i][j]
是非定向图中顶点i
和f
j之间边缘的代价。
我需要确定的是包含所有内容的最短路径 matrice中的顶点。
因此输入如下:
0 198 67 368
198 0 131 432
67 131 0 301
368 432 301 0
我需要尝试所有可行的路径,在这种情况下:
0-->1-->2-->3-->0
是正确的,它的长度为998。
我该如何实现?
答案 0 :(得分:3)
您正在描述广泛研究的Traveling Salesman Problem。
虽然有很多方法可以近似解决方案 - 确切的解决方案确实需要指数运行时间,而蛮力是解决它的一种选择(在O (n!)
中)。
这个想法是生成所有可能的排列并评估每个排列 - 并找到最小的排列。 例如,This question讨论了如何生成所有排列。同样的想法适用于您的问题。
可以进行一些可能的优化,例如branch & bound技术 - 或使用智能DP解决方案。