我知道这是一个相当常见的问题(tsp一般来说),但我已经被它困扰了一段时间。我要找到给定一组x,y坐标的最小距离哈密顿路径。起点和终点完全是任意的,但它不能形成循环,因此标准的tsp不适用(虽然据说添加一个假节点到所有其他节点的0距离,然后稍后删除它可以解决问题,但我不知道如何做)。
有很多链接到数学论文之类的东西,讨论解决类似问题的算法,但我宁愿使用代码而不是复杂的方程式,我真的不想重新发明轮子。
肯定有一个相当直接的实现在主要语言Java、c#、C++、ruby、javascript、php等中可以解决我的问题的20个节点版本。
编辑:我还要尽可能准确,显然不能完全准确,因为20!是很多排列,但比人类在几分钟内完成的要好或者相同就可以了。
编辑2:为了澄清,我正在使用未加权图上的标准二维坐标。距离A-B == B-A
编辑3:为了消除混乱,这里有一个视觉示例,只有几个点,以显示tsp可能是次优的(这种情况是一个简单的修复,但有更多的节点它可以更极端)。
期望输出:
有很多链接到数学论文之类的东西,讨论解决类似问题的算法,但我宁愿使用代码而不是复杂的方程式,我真的不想重新发明轮子。
肯定有一个相当直接的实现在主要语言Java、c#、C++、ruby、javascript、php等中可以解决我的问题的20个节点版本。
编辑:我还要尽可能准确,显然不能完全准确,因为20!是很多排列,但比人类在几分钟内完成的要好或者相同就可以了。
编辑2:为了澄清,我正在使用未加权图上的标准二维坐标。距离A-B == B-A
编辑3:为了消除混乱,这里有一个视觉示例,只有几个点,以显示tsp可能是次优的(这种情况是一个简单的修复,但有更多的节点它可以更极端)。
期望输出: