8

我知道这是一个相当常见的问题(一般是 tsp),但我已经被它难倒了一段时间。我正在寻找给定一组 x,y 坐标的最小距离哈密顿路径。起点和终点是完全任意的,但它不能循环,因此标准 tsp 已退出(尽管据说在与所有其他节点的距离为 0 处添加一个虚拟点,然后稍后将其删除,但我不知道该怎么做)。

有很多数学论文的链接和类似的讨论算法来解决类似问题,但我更愿意使用代码而不是复杂的方程,我真的不想重新发明轮子。

当然,主要语言 java、c#、c++、ruby、javascript、php 等有一个相当简单的实现可以解决我的问题的大约 20 个节点版本。

编辑:我也在寻找尽可能准确的,显然它不能完全准确到 20!有很多排列,但等于或优于人类在几分钟内可以做的事情将是完美的。

Edit2:另外澄清一下,我正在使用未加权图上的标准二维坐标。距离 A->B == B->A

Edit3: 为了消除混淆,这里有一个可视化的例子,只有几点来说明 tsp 可能不是最理想的(这种情况很容易解决,但如果有更多节点,它可能会更极端)。

TSP 减最长段(红线)

TSP 减最长段(红线)

期望的输出

期望的输出

4

1 回答 1

1

您可以解决双调欧几里得旅行商问题。是通过动态编程解决的 tsp 的简化版本O(n^2)http ://en.wikipedia.org/wiki/Bitonic_tour

于 2011-09-07T23:57:40.740 回答