我正在尝试解决此问题http://coj.uci.cu/24h/problem.xhtml?abb=1368。
经过大量的研究,并花了很多时间,我能够为TSP实现一个分支定界算法,它获得了一条通过所有点并返回开始的路径。
我在想从那条路径中移除最长的边缘我会得到答案,但就在我完成算法时,我发现在所有情况下都不是这样,阅读这个问题:Minimal Distance Hamiltonian Path Javascript < / p>
我找到了一些答案,说添加一个距离为零的虚拟点到其他每个点,然后删除它解决了问题,但我不知道具体情况。我已经添加了那个虚拟点,现在而不是得到26.01现在它的答案是16.23。我还没有删除虚拟点,因为我不明白“添加虚拟点的全部意义”。
你可以指导我解决这个问题吗?或者采用另一种方法而不是TSP更好?
答案 0 :(得分:1)
虚拟点允许您在两端之间以任意大的距离进行连接。在TSP中,两端也必须彼此非常靠近,以便最小化总距离。在您的路径问题中,此要求不存在,因此TSP最优对于对您的问题无效的约束是主观的,因此可能不是您的路径问题的最佳要求。
如果你引入一个虚拟点(或者把它想象成一个快捷方式,一个虫洞)你的两端可能会相隔很远而不影响你的距离。