Metric TSP 的 Christofides 算法

旅行商问题(TSP):给定一组城市和两两之间的距离,找一条最短回路,经过每个城市恰好一次,最后回到起点。这是一个经典的 NP 完全问题。路径太多,所以暴力搜不过来,而这只是问题的一部分。

TSP 还在几个问题的交界处:最短路、生成树、匹配、欧拉回路、线性规划松弛、近似算法。每个工具都能碰到它的一部分,却没有哪个工具能直接把它拿下。更微妙的是,TSP 的难度并不只取决于点有多少,也取决于“距离”是否真的像距离。

图片

一般 TSP vs Metric TSP

如果边权只是任意非负数,那么所谓“距离”其实没有几何直觉。\(A\)\(C\) 可以非常贵,但 \(A\)\(B\) 再到 \(C\) 很便宜;也可以把某些边设置成巨大权重,用来模拟“不该走”或者“不能走”。在这种模型里,局部边权几乎不提供可靠的全局信息。

metric TSP 对普通 TSP 边权做出了限制:从 \(u\) 直接到 \(w\),不会比绕过 \(v\) 更贵,即 \(d(u,w) \le d(u,v) + d(v,w)\),也就是距离满足对称性和三角不等式。这个限制让边权更像现实中的距离了。也极大地改变了算法能做的事情。没有它,TSP 不仅难以精确求解,连近似也会变得危险;有了这个约束,虽然仍是 NP 完全问题,但是就有近似思路了。MST、欧拉回路和 matching 才能拼成一条清楚的近似算法路线。

例如有一段走法是 \(A \to B \to C \to D\),但 \(B\)\(C\) 已经访问过了,我们想直接从 \(A\) 跳到 \(D\)。在一般权重下,这一步可能会让代价变大很多,因为 \(d(A,D)\)\(d(A,B)+d(B,C)+d(C,D)\) 没有关系。但在 metric TSP 中,由三角不等式反复套用,有 \(d(A,D) \le d(A,B)+d(B,C)+d(C,D)\)。跳过重复点不会让总代价增加。

这个性质看似简单,却是后面所有分析的地基。MST doubling 和 Christofides 都会先得到一个欧拉回路;欧拉回路通常会重复经过顶点;最后再用 shortcut 把它压成真正的 TSP tour。如果没有三角不等式,这一步就只是一个启发式操作;有了三角不等式,它才是一个可证明的算法步骤。

MST doubling

根据问题定义,旅行商回路和生成树之间有一个直接关系:任何一条 TSP tour,删掉其中任意一条边,都会得到一棵生成树。因此最小生成树 \(T\) 的代价一定不超过最优 TSP tour,记为 \(\mathrm{OPT}\),也就是 \(c(T) \le \mathrm{OPT}\)

所以 MST doubling 的做法很粗暴:把 \(T\) 中每条边复制一遍。复制之后,每个点的度数都变成偶数,这个最小生成树上就出现了一个欧拉回路,代价是 \(2c(T)\),不超过 \(2\mathrm{OPT}\)。不过,这个回路可能重复经过顶点,利用 metric TSP 的性质,我们可以 shortcut 掉重复访问的点,得到一条合法的 TSP tour,代价只减不增。

所以 MST doubling 是一个 \(2\)-approximation。这个思路已经说明 metric TSP 不是完全无从下手。但它也暴露了一个明显的浪费:为了让所有点的度数变成偶数,我们复制了整棵树。实际上,偶度点本来就不需要修,真正有问题的只有奇度点。Christofides 算法就是沿着这个缺口往前走了一步。
图片

Christofides:只修奇度点

Christofides 又做了一点改进:

1. 求最小生成树 T
2. 找出 T 中所有奇度点,记为 O
3. 在 O 上求最小权完美匹配 M
4. 把 M 加到 T 上,得到多重图 H
5. 在 H 上走欧拉回路
6. 对重复点做 shortcut,得到 TSP tour

一棵树里的奇度点个数一定是偶数,这是握手定理的直接结果。因此在奇度点集合 \(O\) 上,完美匹配是有意义的。把匹配 \(M\) 加回树 \(T\) 之后,每个奇度点的度数增加 \(1\),从奇数变成偶数;原来偶度的点没有被匹配边触碰,仍然是偶数。于是 \(H=T\cup M\) 中所有点度数都是偶数。

同时,\(T\) 已经连通,加边不会破坏连通性,所以 \(H\) 是一张连通欧拉多重图。我们可以在上面找到一条欧拉回路,再靠 metric 条件 shortcut 成一条合法的旅行商回路。MST doubling 用全量复制修复奇偶性,Christofides 用最小权匹配只修必要的奇偶性。

图片

那个刚好的 1.5

首先 \(c(T) \le \mathrm{OPT}\)。其次,最小权完美匹配的代价不超过 \(\mathrm{OPT}/2\)

为什么?

\(C^*\) 是一条最优 TSP tour。我们只关心 \(T\) 中的奇度点集合 \(O\)。沿着 \(C^*\) 的顺序看这些点,可以得到一个环形序列 \(v_1,v_2,\dots,v_{2k}\)。注意这里一定是偶数个点。

现在把这些点沿最优 tour 交替分成两组匹配。一组连接 \((v_1,v_2),(v_3,v_4),\dots\),另一组连接 \((v_2,v_3),(v_4,v_5),\dots,(v_{2k},v_1)\)。严格地说,最优 tour 上相邻两个奇度点之间可能隔着许多其他点,但 metric 条件允许我们把中间路径 shortcut 成一条直接边,代价不会增加。

这两组匹配的总代价加起来不超过 \(c(C^*)=\mathrm{OPT}\),所以至少有一组的代价不超过 \(\mathrm{OPT}/2\)。而 Christofides 选择的是 \(O\) 上的最小权完美匹配,因此它的代价只会更小,即 \(c(M) \le \mathrm{OPT}/2\)

于是有 \(c(T)+c(M) \le 3\mathrm{OPT}/2\)。后面的欧拉回路不会改变 \(H\) 的边总权重,shortcut 又不会增加代价,所以最终得到的 TSP tour 也是 \(3/2\) 近似。

最近邻为什么没有这样的保证

从实现直觉上看,很多人第一次写 TSP 会写最近邻:从一个点出发,每次走向最近的未访问点。这个策略很自然,也常常能跑出看起来不错的结果,但是,他没有维护任何全局结构。它可能出现最后几个节点边权巨大的情况。这也是近似算法和启发式算法的一个常见分界。启发式可能表现很好,但分析时没有可抓住的不变量;Christofides 的每一步都能被某个下界或结构性质解释。

3/2 之后的墙

很长时间里,\(3/2\) 都是通用 metric TSP 的最好已知近似比。这个状态有点反直觉:算法本身并不长也不难,但要把它的保证往下压一点,却困难得惊人。

后来确实有人打破了这条线。Karlin、Klein 和 Oveis Gharan 给出了一个 \(3/2-\epsilon\) 的 metric TSP 近似算法,其中 \(\epsilon\) 是一个大于 \(10^{-36}\) 的正常数。这个结果的理论意义很大,因为它说明 Christofides 的 \(3/2\) 不是不可突破的极限;但从数值上看,这个改善小到几乎不可能改变工程实践。

这类结果的路线已经不再是“再聪明一点地补 MST”。更现代的分析通常会围绕 subtour elimination LP、最大熵生成树分布、thin tree、奇偶修正等工具展开。直觉上,它们仍然在处理 Christofides 已经暴露出来的核心矛盾:怎样选一棵树,以及怎样用尽量低的代价修复它的奇偶性。区别在于,Christofides 选的是一棵 MST,而新的方法从 LP 解和随机生成树分布中提取更细的信息。

Euclidean TSP 是另一条分支(再 Metric TSP 上继续限制)。如果城市是固定维欧氏空间里的点,那么问题仍然 NP-hard,但有额外的几何结构,可以做到 PTAS,也就是对任意固定 \(\epsilon>0\),在多项式时间内得到 \((1+\epsilon)\) 近似。

一般 TSP 太自由,近似结构很弱;metric TSP 有三角不等式,Christofides 给出 \(3/2\),后续工作把它压低了极小一截;Euclidean TSP 因为有几何结构,可以走向 PTAS。不同模型之间不要混用结论。

posted @ 2026-06-27 20:44  Ofnoname  阅读(1)  评论(0)    收藏  举报