没有三角不等式的TSP求解器

时间:2012-02-28 08:58:01

标签: java algorithm graph grid traveling-salesman

我对解决(小)网格图的TSP感兴趣。任何类型的库都可以为我做,但这似乎比预期更难。我尝试了一些我在那里发现的求解器(包括协调器),但是当三角不等式不成立时,它们似乎都有问题。

例如,我希望求解器为图形输出游览(0,1,2,1,4,3)(具有单位边缘权重):

0-1-2
| |
3-4

在这个特殊情况下,我告诉concorde边缘(2,4)的重量为1000,并且concorde迅速产生了成本1004的巡回赛(0,1,2,4,3)。这显然不是我的意思寻找。

理想情况下,Java中会有一些简单的(可能是暴力)实现,但实际上可行的任何东西都可以。任何人都可以向我指出一些代码,或者我真的必须自己去实现这个吗?

编辑:同样,重要的是我得到一个精确的解决方案,而不是一些近似。

Edit2:确实,这似乎不是TSP。我想要找到的是一个访问所有顶点的最短的封闭行走。

1 个答案:

答案 0 :(得分:5)

你的困难不是三角不等式。困难与您期望的解决方案不是有效TSP之旅的事实有关。

TSP寻求Hamiltonian cycle;也就是说,一个周期访问每个顶点一次。您的解决方案(0, 1, 2, 1, 4, 3)会两次访问顶点1。

如果这是您正在寻求的解决方案,那么您尝试解决的问题不是旅行商问题。