【发布时间】:2012-02-28 08:58:01
【问题描述】:
我有兴趣解决(小)网格图的 TSP。任何类型的库都对我有用,但这似乎比预期的要难。我尝试了几个在那里找到的求解器(包括协和式),但是当三角不等式不成立时,它们似乎都有问题。
例如,我希望求解器为下面的图(具有单位边权重)输出游览 (0, 1, 2, 1, 4, 3):
0-1-2
| |
3-4
在这种特殊情况下,我告诉协和边 (2, 4) 的权重为 1000,协和迅速生成成本为 1004 的游览 (0, 1, 2, 4, 3)。这显然不是我正在寻找。
理想情况下,Java 中会有一些简单的(可能是蛮力的)实现,但任何可行的方法都可以。谁能指点我一些代码,或者我真的必须自己去实现吗?
编辑:另外,重要的是我得到一个精确的解决方案,而不是一些近似值。
Edit2:确实,这似乎不是 TSP。我试图找到的是访问所有顶点的最短封闭步行。
【问题讨论】:
-
您确定您正确应用协和式飞机吗?它应该是对称 TSP 问题的 exact 求解器...
-
@Li-aungYip:协和实际上提供了最佳的 TSP 解决方案。问题是 OP 期望的解决方案不是有效的 TSP 巡回演出。详情见我的回答。
-
我明白了。事实上,鉴于该图,我认为没有任何个访问所有节点的其他封闭循环。 (关键词:关闭。2-1-0-3-4权重为4,访问所有节点,但没有关闭。)
标签: java algorithm graph grid traveling-salesman