“一般图可把缺边设 $+\infty$;有限 Hamilton cycle 上负边权不造成无限循环,因为每点只访问一次,但数值溢出要处理。这是 exact exponential DP,不是近…”
形式陈述 ​
算法步骤 ​
输入是在顶点集
把
从多重图恢复 Hamilton 回路 ​
遍历 Euler 回路时维护“已访问顶点”集合。若下一段会经过一个已访问顶点,就继续沿 Euler 回路前进,直到遇到下一个未访问顶点,再用完全图中的直达边连接;全部顶点首次出现后,直达起点闭合。每次 shortcut 都把一段度量路径替换为端点直达边,三角不等式保证新边费用不超过被替换路径的总费用。因此输出恰访问每个顶点一次,并且
实现中的匹配只在奇点集合
直觉
MST 已经用较低成本连通所有顶点,但连通并不保证能一笔走完所有边。奇度顶点正是 Euler 回路的障碍:给两个奇点之间加入一条匹配边,会同时翻转它们的度数奇偶性。奇点总数为偶数,所以完美匹配能一次修复全部障碍;选择最小权匹配,则把修复成本控制在最优旅行商回路的一半以内。
Euler 回路提供的是一条可能反复经过顶点的连通遍历。度量三角不等式允许把这些重复绕行剪成直达边而不涨价,于是“便宜连通骨架—奇偶修复—Euler 遍历—shortcut”四步分别解决连通性、可遍历性和每点恰访一次。
例子与边界
没有三角不等式时,跳过重复顶点可能显著增重,
推论与应用
近似保证 ​
按近似比比较算法回路与最优 metric TSP 回路,记最优值为
按最优回路上的出现顺序连接奇点集合
结合 MST、匹配与 shortcut 三个界,得到
这条证明同时解释了三个条件为何不能省: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.