我知道这是一个相当常见的问题(一般是 tsp),但我已经被它难倒了一段时间。我正在寻找给定一组 x,y 坐标的最小距离哈密顿路径。起点和终点是完全任意的,但它不能循环,因此标准 tsp 已退出(尽管据说在与所有其他节点的距离为 0 处添加一个虚拟点,然后稍后将其删除,但我不知道该怎么做)。
有很多数学论文的链接和类似的讨论算法来解决类似问题,但我更愿意使用代码而不是复杂的方程,我真的不想重新发明轮子。
当然,主要语言 java、c#、c++、ruby、javascript、php 等有一个相当简单的实现可以解决我的问题的大约 20 个节点版本。
编辑:我也在寻找尽可能准确的,显然它不能完全准确到 20!有很多排列,但等于或优于人类在几分钟内可以做的事情将是完美的。
Edit2:另外澄清一下,我正在使用未加权图上的标准二维坐标。距离 A->B == B->A
Edit3: 为了消除混淆,这里有一个可视化的例子,只有几点来说明 tsp 可能不是最理想的(这种情况很容易解决,但如果有更多节点,它可能会更极端)。
TSP 减最长段(红线)
期望的输出