Skip to content

Christofides 算法

Christofides algorithm

用 MST、奇度点最小完美匹配和 Euler shortcut 构造 metric TSP 的 3/2 近似。

条目类型
算法

形式陈述

算法步骤

输入是在顶点集 V 上由度量 d 给出的完全加权图;因此边权非负、对称并满足三角不等式。先求一棵最小生成树 T,令 OT 中奇度顶点的集合。握手定理保证 |O| 为偶数,在 O 的完全度量图上求最小权完美匹配 M

TM 的边按身份合并成多重图 H=TM。每个 O 中顶点的度数增加一而变为偶数,其余顶点仍为偶数;T 又保证 H 连通,所以 H 存在Euler 回路。算法沿该回路行走,按顶点首次出现的次序跳过重复访问,最后回到起点,得到 Hamilton 回路 C

从多重图恢复 Hamilton 回路

遍历 Euler 回路时维护“已访问顶点”集合。若下一段会经过一个已访问顶点,就继续沿 Euler 回路前进,直到遇到下一个未访问顶点,再用完全图中的直达边连接;全部顶点首次出现后,直达起点闭合。每次 shortcut 都把一段度量路径替换为端点直达边,三角不等式保证新边费用不超过被替换路径的总费用。因此输出恰访问每个顶点一次,并且

w(C)w(H)=w(T)+w(M).

实现中的匹配只在奇点集合 O 的完全度量图上求,不是在原 MST 边集中寻找;后者可能根本没有完美匹配。TM 若含端点相同的边,也必须作为两条独立边保留,否则顶点奇偶性会再次改变。

直觉

MST 已经用较低成本连通所有顶点,但连通并不保证能一笔走完所有边。奇度顶点正是 Euler 回路的障碍:给两个奇点之间加入一条匹配边,会同时翻转它们的度数奇偶性。奇点总数为偶数,所以完美匹配能一次修复全部障碍;选择最小权匹配,则把修复成本控制在最优旅行商回路的一半以内。

Euler 回路提供的是一条可能反复经过顶点的连通遍历。度量三角不等式允许把这些重复绕行剪成直达边而不涨价,于是“便宜连通骨架—奇偶修复—Euler 遍历—shortcut”四步分别解决连通性、可遍历性和每点恰访一次。

例子与边界

没有三角不等式时,跳过重复顶点可能显著增重,3/2 保证随即失效;一般非 metric TSP 不能套用本算法的近似证明。若输入只给部分边且边权非负,可以先取全对最短路距离形成 metric closure,在度量闭包上运行算法,再把输出直达边展开成原图路径。无向原图若含负边,沿该边往返就会使最短游走成本无界下降,因而不能产生有限度量闭包。

TM 是多重图,平行边不能去重。这里的 Euler 回路是“每条多重边恰走一次”的图论对象;它与树上把 DFS 进入、退出序列化的Euler tour 技巧只是同名对照,后者既不修复奇度,也不为 Christofides 提供所需回路。

推论与应用

3/2 近似保证

近似比比较算法回路与最优 metric TSP 回路,记最优值为 OPT。从最优 Hamilton 回路删除一条边会得到一棵生成树,因此

w(T)OPT.

按最优回路上的出现顺序连接奇点集合 O 中的相邻顶点,并对每段中间路径做 metric shortcut,可得到一个经过全部奇点的 cycle,其总权不超过 OPT。由于 |O| 为偶数,这个 cycle 的边可交替拆成两份完美匹配;两份总权不超过 OPT,所以较轻一份至多 OPT/2。算法选择最小权完美匹配,故

w(M)OPT2.

结合 MST、匹配与 shortcut 三个界,得到

w(C)w(T)+w(M)32OPT.

这条证明同时解释了三个条件为何不能省:MST 提供不超过最优值的连通骨架,最小完美匹配控制奇偶修复成本,度量性保证最后从 Euler 回路恢复 Hamilton 回路时不增加成本。

参考资料
  • Nicos Christofides, Worst-Case Analysis of a New Heuristic for the Travelling Salesman Problem, 1976.
  • David Williamson, David Shmoys, The Design of Approximation Algorithms, 2011.
关系图谱15 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组