我知道这是一个相当常见的问题(一般而言),但我已经被它难住了一段时间了。我正在寻找给定一组 x,y 坐标的最小距离哈密顿路径。起点和终点完全是任意的,但它不能循环,所以标准 tsp 已经消失(尽管据说在与所有其他节点的距离为 0 处添加一个虚拟点,然后稍后将其删除,但我不知道该怎么做)。
有很多数学论文和类似讨论解决类似问题的算法的链接,但我更愿意使用代码而不是复杂的方程,而且我真的不想重新发明轮子。
当然,在主要语言 java、c#、c++、ruby、javascript、php 等中有一个相当简单的实现,可以解决我的问题的约 20 个节点版本。
Edit:我也在寻找尽可能准确的,显然不可能完全准确到20!是很多排列,但等于或优于人类在几分钟内可以完成的事情将是完美的。
Edit2:另外为了澄清,我正在未加权的图表上使用标准二维坐标。距离 A->B == B->A
Edit3:为了消除混淆,这里有一个直观的示例,其中仅包含几点来展示 tsp 如何不是最优的(这种情况很容易修复,但节点越多,情况可能会更加极端)。
TSP 减去最长线段(红线)
所需输出
您可以解决双调欧几里得旅行商问题。 tsp 的简化版本可以通过动态规划求解O(n^2)
: http://en.wikipedia.org/wiki/Bitonic_tour
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)