1

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

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

0-1-2
| |
3-4

在这种特殊情况下,我告诉协和边 (2, 4) 的权重为 1000,协和迅速生成成本为 1004 的游览 (0, 1, 2, 4, 3)。这显然不是我想要的。

理想情况下,Java 中会有一些简单的(可能是蛮力的)实现,但任何可行的方法实际上都可以。谁能给我指出一些代码,或者我真的必须自己去实现它吗?

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

Edit2:确实,这似乎不是 TSP。我试图找到的是访问所有顶点的最短封闭步行。

4

1 回答 1

5

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

TSP 寻求哈密顿循环;也就是说,一个循环访问每个顶点恰好一次。您的解决方案 ,(0, 1, 2, 1, 4, 3)访问顶点 1 两次。

如果这就是您正在寻找的解决方案,那么您要解决的问题就不是旅行商问题。

于 2012-02-28T09:00:07.637 回答