【问题标题】:How to turn TSP into minimum hamiltonian path?如何将 TSP 变成最小哈密顿路径?
【发布时间】:2012-10-25 00:59:29
【问题描述】:

我正在尝试解决这个问题http://coj.uci.cu/24h/problem.xhtml?abb=1368

经过大量研究,并花费大量时间,我能够为 TSP 实现分支定界算法,该算法得到一条通过所有点并返回起点的路径。

我在想从那条路径中删除最长的边我会得到答案,但是当我完成我的算法时,我发现这并非在所有情况下都是正确的,阅读这个问题:Minimal Distance Hamiltonian Path Javascript

我找到了一些答案,说添加一个与其他点的距离为零的虚拟点,然后删除它可以解决问题,但我不知道具体情况。我已经添加了那个虚拟点,现在不是得到 26.01,而是 16.23 作为答案。我还没有删除虚拟点,因为我不明白“添加虚拟点的全部意义”。

你能指导我解决这个问题吗?还是采用其他方法而不是 TSP 更好?

【问题讨论】:

    标签: traveling-salesman


    【解决方案1】:

    虚拟点允许您在任意大的距离处连接两端。在 TSP 中,两端也必须彼此非常靠近以最小化总距离。在您的路径问题中,此要求不存在,因此 TSP 最优值对于您的问题无效的约束是主观的,因此可能不是您的路径问题的最优值。

    如果您引入一个虚拟点(或将其视为一条捷径,一个虫洞),您的两端可能会相距很远,而不会影响您的距离。

    【讨论】:

    • 哦,我明白了。所以这意味着 TSP 会认为两端非常接近,使用该点作为它们之间的联合。看到这里,看来我的算法做错了。之后删除虚拟点是什么意思?,如果它不影响总距离。
    • 删除只是为了可视化和输出,对你的健身没有任何影响。
    • 谢谢,我的代码有问题,我会看看。但现在我明白了这个问题。
    • 我刚刚解决了它,这是一个愚蠢的错误,仍然是减去下界的最大边缘,现在它可以工作了。我无法让法官接受它,但我对此很满意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    相关资源
    最近更新 更多