我愿意以最有效的方式(即最准确的结果+最短时间)实施算法来解决2-dimensional Euclidian version of the Traveling Salesman Problem。在进行我的研究时,我发现了很多算法,但Arora's 1998 paper及其presentation让我觉得可能是最好的算法。还有其他版本的解决方案使用相同的想法,例如2004年Schultes中的那个。问题是实现它似乎非常困难(如果不是不可能的话),我发现没有任何人这样做的记录尽管自该论文首次发表以来差不多已经过去了20年,但仍然可以使用。
是否有任何现有的实施或至少有关于此问题的指南?如果没有,那么现有的和可实现的算法将尽可能地替代它?
答案 0 :(得分:3)
当你说“准备好”来实现这一点时,我会接受你的话,但是你有充分的理由没有找到源代码。
除了复杂性之外,PTAS的一个实际问题是,当ε收缩时,多项式的指数会急剧增加,例如,如果运行时为O(n(1 /ε)!)。这导致了更加严格的要求,如EPTAS和FPTAS,尽管我不认为TSP目前在这些更严格的要求下有解决方案。因此请记住,当您改变近似参数时,PTAS解决方案不一定能消除广泛的变化。
我在帖子中找到的最适用的论文是An Empirical Analysis of Approximation Algorithms for Euclidean TSP 。
创新的多项式时间近似方案(PTAS) 欧几里德TSP由Sanjeev Arora提供。到目前为止,没有 证明它可以被实施为实际有用。在光明中 对此,我们提出了欧几里德TSP的实现 基于Arora的PTAS的基本步骤并添加一些 启发式方法来改善运行时间。
作者没有提供他们的C ++实现的链接,但您可以尝试通过电子邮件发送它们。他们论文中更重要的方面是他们对基于Arora的方法与协和解算器中提供的其他4种竞争算法进行的定量比较。他们的论文得出结论:
实验结果表明,Arora的PTAS实际上是可行的。 表I和表II表明尽管它具有良好的性能,但它仍然存在 似乎必须改进我们的方法以产生更多近似值 解决方案。 在大多数情况下,重要的理论结果都会丢失 由于实施决策。我们认为解决方案的质量 与数据结构和数据结构相关的实现方面有关 需要提供更多关于必须使用哪些门户网站的提示 游。
如果您详细阅读了他们的论文,您将看到他们做出了各种实施决策和优化,其中许多可能是次优的和/或没有严格的合理性。自己阅读结果,但在我看来,他们的PTAS算法平均在其他算法的0.25倍到1.0倍的时间内完成,但结果有时会更糟。在我看来,这里最大的风险是“实施决策”以及您可能需要试错的启发式方法,希望能够真正实现这些难以捉摸的性能优势。
答案 1 :(得分:0)
我想它不再相关了,但是实际上提到的论文Special Sauce的作者实际上在GitHub上发布了他们的代码:https://github.com/barbaramartina/C---TSP-Arora-Implementation/tree/master/TSP_Implementation
但是,我也在寻找确切的实现,因此,如果您实现了某些实现,请在此处发布指向实现的链接,我将非常感激:)