algorithm - 表明旅行商 (TSP) 的 2 倍最优近似算法无法计算出最优解

标签 algorithm traveling-salesman approximation

我有期末考试的复习,​​这个问题让我特别困惑。我需要一个关于 3 个顶点的示例,如果三角不等式的成本不成立,则旅行商问题 (TSP) 的 2 倍最优近似算法不会计算 2 倍最优解。 我尝试了一个三角形的示例,其成本为边 1、1 和 10。但是,要获得哈密顿循环,无论如何都必须遍历所有三个边。那么最优解将与该算法的近似解没有什么不同。我看这一切都错了吗?我将不胜感激。

最佳答案

如果您有顶点 A、B、C,边成本为 wAB、wAC 和 wBC,并假设三角不等式不成立。比如 wBC > wAB + wAC。

然后,假设我们从 A 开始,近似算法将找到以 A 为根的最小生成树。这是:

  A
 / \
B   C

从近似算法得到的解是这棵树的前序枚举(返回A),即A->B->C->A。这具有总重量 wAB + wBC + wCA。但是,路径 A->B->A->C->A 的权重为 wAB + wAC + (wAB + wAC) < wAB + wAC + wBC = wAB + wBC + wCA。这里的<步骤使用了原来三角不等式不成立的假设。

通过选择足够大的 wBC,我们可以使近似值任意差(例如,差于最佳值的 2 倍)。例如,权重为 1、1、10 时,最佳路径的总成本为 4,但近似算法给出的是 12。

您的想法错误是,看到近似算法生成哈密顿循环,推断 TSP 的任何解都必须是哈密顿循环。

关于algorithm - 表明旅行商 (TSP) 的 2 倍最优近似算法无法计算出最优解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30145701/

相关文章:

java - 更新数组的模式

algorithm - 有向循环图或锦标赛中的双方淘汰赛(图表)

algorithm - 找到这个算法的跨度

c++ - 枚举完整图的哈密顿循环的算法(循环、反转、环绕或重复不计算在内的排列)

java - 在TSP问题中还是找不到返回起始城市的方法

algorithm - 大量顶点的旅行商问题

algorithm - 使用近似算法寻找所有点之间的路径

java - 找出可以在山峰上设置的最大旗帜数量

c++ - 所有 DES key 的生成和存储

algorithm - 顶点覆盖的近似算法