应用运筹学基础:组合优化 (6) - 近似算法选讲 (4)

这节课介绍了斯坦纳树问题(Steiner tree)与旅行商问题(TSP),并讲解了它们的近似算法。

平面上的斯坦纳树

平面上的斯坦纳树指的是这样的问题:平面上有 $n$ 个点,要用总长尽量少的线段把它们连通起来。要注意,线段不一定要在给定的 $n$ 个点相交(不然跑个最小生成树就没了),完全可以在平面上的其它点相交。最优解中,线段在平面上除了给定点外的交点称为斯坦纳点。

可以从上图看出 $n = 3$ 和 $n = 4$ 的情况,$S$、$S_1$ 和 $S_2$ 是斯坦纳点。$n = 3$ 时,斯坦纳点就是三角形的费马点。

平面上的斯坦纳树是一个 NP-Hard 问题。

满足三角不等式的完全图上的斯坦纳树

满足三角不等式的完全图上的斯坦纳树指的是这样的问题:给定一张满足三角不等式(对于任意两两有连边的三点 $x, y, z$,有 $w(x, y) \le w(x, z) + w(z, y)$,$w$ 表示边权)的完全图 $G = (V, E)$ 和 $S \subseteq V$,求 $G$ 的连通子图 $G‘$,使得 $S$ 中的所有点都在 $G‘$ 中,且 $G‘$ 边权之和最小。

即使有了这么多的限制条件,这个问题仍然是一个 NP-Hard 问题(证明见此)。下面我们提出它的一个 2- 近似算法:其实很简单,只要算出 $S$ 的最小生成树即可(别忘了是完全图,$S$ 肯定是连通的)。

算法近似比证明

假设最优的斯坦纳树边权之和为 $\text{OPT}$,最小生成树的边权之和为 $\text{MST}$。我们把最优斯坦纳树中的每条边复制一次,得到一张有欧拉回路的图,它的边权总和为 $2\text{OPT}$。

我们在欧拉图中任选一个 $S$ 中的点出发,找到一条欧拉回路 $L$。我们只走 $S$ 中的点,且每个点只走一次,如果不能沿着 $L$ 走到下一个点就直接“跳到”那个点(别忘了是完全图,这种“跳跃”称为 short-cutting)。

举个例子,例如上图是我们找到的欧拉回路的一部分,红色点是 $S$ 中的点。由于不能从第一个 a 沿着 $L$ 走到 $b$,我们要跳过去;由于 a 已经走过了,所以不能走 c → a → d,而是要从 c 直接跳到 d。

由于完全图符合三角不等式,直接跳过去肯定不比沿着 $L$ 走过去来得长。这样,我们就找到了 $S$ 的一个连通图,而且这个连通图的边权之和至多为 $2\text{OPT}$。

别忘了,$S$ 的任何连通图,边权之和都不比最小生成树小。所以我们有 $\text{MST} \le 2\text{OPT}$。这就证明了算法的近似比是 2。

用上图的例子说明这个近似比对于这个算法是紧的。图中没有画出来的边权值都是 2。令 $S = \{1, 2, \dots, n\}$,显然最优解为 $n$(利用中间的 0 作为斯坦纳点),但用上面的算法会得到 $2(n-1)$ 的结果,在 $n$ 足够大的时候近似比趋近于 2。

旅行商问题的近似比

大家都知道,完全图上的 TSP 是 NP-Hard。然而,完全图上的 TSP 甚至没有很好的近似比。下面证明完全图上的 TSP 不存在近似比为 $O(2^{\text{poly}(n)})$ 的多项式算法,其中 $\text{poly}(n)$ 表示 $n$ 的多项式。

我们利用哈密尔顿回路问题进行证明。对于普通无向图 $G = (V, E)$ 上的哈密尔顿回路问题,我们构造完全图 $G‘ = (V, E‘)$,$E‘$ 中一条边 $e‘$ 的边权 $w(e‘)$ 定义如下:$$w(e‘) = \begin{cases} 1 & e‘ \in E \\ 2^{\text{poly}(n)}n & e‘ \not\in E \end{cases}$$ 这张完全图的输入规模仍然是 $n$ 的多项式。

如果 TSP 存在近似比为 $O(2^{\text{poly}(n)})$ 的算法,那么对于上面的完全图,算法就绝对不能选 $e‘ \not\in E$ 的边。但如果算法只用 $e‘ \in E$ 的边构造出了一个解,那就同时找到了 $G$ 中的哈密尔顿回路。我们知道,找哈密尔顿回路本身就是 NPC 的,这就完成了证明。

满足三角不等式的完全图的旅行商问题

既然普通完全图上的旅行商问题这么难,我们给它加一点限制。在满足三角不等式的完全图上,TSP 就有很好的近似比。

首先容易证明这个问题近似比上界为 2:先跑个最小生成树(边权和肯定小等于最优哈密尔顿回路),把树上每条边重复一次变成欧拉图,在欧拉图上进行和斯坦纳树类似的 short-cutting 即可。

不过我们可以证明一个更紧的上界。不一定要把树上每条边都重复一次才能得到欧拉图嘛,如果我们把树上度数为奇数的点(下面简称奇点)进行配对(一张图的奇点肯定有偶数个,不用担心有一个匹配不上),每一对之间连一条边,那么构成的图就都是偶点,也就是一张欧拉图了。这种配对工作非常容易,只要用带花树什么的求一个最小权完美匹配即可。下面证明这种算法的近似比为 1.5。

假设最优的哈密尔顿回路如上图,白色的点是最小生成树上的奇点。我们将奇点按顺序进行 short-cutting,就能得到两个不相交匹配(1 - 2, 3 - 4, ..., 2k-1 - 2k 以及 2 - 3, 4 - 5, ..., 2k - 1)。由于满足三角不等式,这两个匹配的权值之和肯定不大于 $\text{OPT}$,那么两个匹配中较小的那个权值肯定不大于 $0.5\text{OPT}$。别忘了,我们在算法中求出来的可是最小完美匹配,那么最小完美匹配的权值肯定也不大于 $0.5\text{OPT}$。最小生成树 + 最小权完美匹配就证明了 1.5 的近似比。

上面的例子可以说明 1.5 对这个算法是紧的,没有画出来的边权值都是 2。右边实线是算法可能获得的最小生成树,虚线是算法可能算出的最小权完美匹配。显然最优解为 $n$,而算法可能得出的解是 $n + \frac{n}{2}$。只要“梯形”上面的点足够多,那么近似比就是 1.5。

满足三角不等式的完全图的最短哈密尔顿路

下面来考虑一个有些不一样的问题:在满足三角不等式的完全图中,给定 $k = \{0, 1, 2\}$ 个固定点(即指定起点或者终点,或者都指定,或者都不指定),求满足固定点的最短哈密尔顿路。

这个问题可以通过以下近似算法解决:

1. 首先求个最小生成树 $T$;

2. 令点集 $S$ 包含两类点:在最小生成树上是偶点的固定点(因为要把固定点变奇点,才好找以它们开头的欧拉路),以及在最小生成树上是奇点的非固定点;

3. 类似于 TSP 问题,求个 $S$ 的最小权匹配 $M$,要求有 $2-k$ 个非固定点不匹配(只要加入 $2-k$ 个辅助点,与非固定点连权值为 0 的辅助边即可)。容易发现,这样会恰有 2 个点成为奇点,并且固定点一定在这 2 个点里;

4. 这样 $T \cup M$ 就是一张有欧拉路的图,用 short-cutting 的方法把欧拉路变成哈密尔顿路即可。

这个算法在 $k \in \{0, 1\}$ 时是 1.5 近似算法。下面进行证明。

$k = 0$

证明思想与 TSP 类似。假设最优解上有 $2t$ 个奇点,那么可以拆成两个匹配:1 - 2, 3 - 4, ..., (2t-3) - (2t-2)(2t-1 和 2t 没有匹配) 与 2 - 3, 4 - 5, 6 - 7, ..., (2t-2) - (2t-1)(1 和 2t 没有匹配),就可以证明 $M$ 的权值之和至多为 $0.5\text{OPT}$。

$k = 1$

不妨设起点(设为 s)是固定点。

如果起点是奇点比较好办,假设最优解上有 $2t+1$ 个奇点(不含起点),那么可以拆成两个匹配:1 - 2, 3 - 4, ..., (2t-1) - 2t(2t+1 没有匹配)与 2 - 3, 4 - 5, ..., 2t - (2t+1)(1 没有匹配);

如果起点是偶点就比较麻烦了。假设最优解上有 $2t$ 个奇点,因为起点必须被匹配,我们没法把最优解拆成两个匹配符合要求的匹配。不过我们可以先把最优解拆成两个匹配 $M_1$:s - 1, 2 - 3, ..., (2t-2) - (2t-1)(2t 没有匹配),以及 $M_2$:1 - 2, 3 - 4, ..., (2t-1) - 2t(s 没有匹配)。

记 $w(M)$ 表示匹配 $M$ 的权重之和。如果 $w(M_1) < w(M_2)$ 那把 $M_1$ 并入 $T$ 答案就已经出来了,否则我们用 $T \cup M_2$ 得到一张欧拉图,找出一条哈密尔顿回路,再去掉连接 s 的一条边,获得以 s 为起点的哈密尔顿路。由于 $w(M_2) \le w(M_1)$,而我们加进图的是 $M_2$,所以仍然有 1.5 的近似比。

$k = 2$

$k = 2$ 的情况稍有不同,这个算法在同时给定起点与终点的情况下,近似比为 5/3。这次我们要把 $T \cup \text{OPT}$ 拆成 3 个匹配来完成证明。下面以起点(记为 s)与终点(记为 t)均为偶点为例进行证明,其它情况类似。

不难发现,$T - \{s, t\}$ 中有偶数个点,那么 $S$ 中也有偶数个点。设最优路径依次经过 $s, v_1, v_2, \dots, v_{2k}, t$,其中 $v_i$ 是 $T$ 上的奇度点。

记 $u - v$ 表示仅通过最优路径中的边从点 $u$ 走到点 $v$,$u \sim v$ 表示仅通过 $T$ 中的边从点 $u$ 走到点 $v$。我们尝试将 $T \cup \text{OPT}$ 拆成这样三个部分(不一定是匹配),且每条边至多使用一次:
1. $s - v_1, v_2 - v_3, \dots, v_{2k-2} - v_{2k-1}, v_{2k} - t$;
2. $v_1 - v_2, v_3 - v_4, \dots, v_{2k-1} - v_{2k}, s \sim t$;
3. 找到 $s, t, v_1, v_2, \dots, v_{2k}$ 的一个排列 $u_1, u_2, \dots, u_{2k+2}$,$u_1 \sim u_2, u_3 \sim u_4, \dots, u_{2k+1} \sim u_{2k+2}$。

由于三角不等式,$u \sim v$ 所使用的边的权值总和,一定大等于直接连接 $u$ 和 $v$ 的边的权值。如果我们能找到以上拆分,且每条边至多使用一次,那么我们就找到了 3 个 $S$ 的完美匹配,其权值总和不超过 $2\text{OPT}$。这样,$S$ 的最小权完美匹配权值就不会超过 $\frac{2}{3}\text{OPT}$,就能证明 $\frac{5}{3}$ 的近似比。

举个例子。左图中,实线是 $T$ 的边,虚线是 $\text{OPT}$ 中的边;红边是部分 1 中的边,蓝边是部分 2 中的边,绿边是部分 3 中的边。

再看右图。虽然所有绿色边不能构成一个匹配,但是橙色边却可以构成一个匹配,而且权值之和一定不大于绿色边的权值之和。

很显然,部分 1 与部分 2 中除开 $s \sim t$ 之外的边,就组成了最优路径。我们通过以下算法,在 $T$ 上找到部分 3 以及部分 2 中 $s \sim t$ 中的边:

1. 在 $T$ 中找到从 $s$ 到 $t$ 的路径作为 $s \sim t$,去掉使用过的边;
2. 对于每个连通块,选择任意一个奇度点 $u$,在 $T$ 中找到通往另一个奇度点 $v$ 的路径,且路径上不含其它奇度点。去掉使用过的边;
3. 重复步骤 2,直到 $S$ 中的点都在步骤 2 中找到了对应的点。

根据算法描述容易看出,如果算法成功退出,我们就找到了需要的拆分。接下来说明 $S$ 中的每个点都能在步骤 2 中找到对应的点,即算法可以成功退出。

注意到 $s$ 与 $t$ 均为偶度点。步骤 1 结束后,由于 $s$ 与 $t$ 是路径端点,去掉路径上的边后,$s$ 与 $t$ 都变成了奇度点;而路径上的其它点在去掉路径上的边后,奇偶性不变。

步骤 2 中,由于每个连通块一定有偶数个奇度点,所以一定可以找到符合要求的 $u$ 和 $v$。由于路径中间不含其它奇度点,所以其它点的奇偶性不变,不影响算法的后续运行;而 $u$ 与 $v$ 作为路径端点,在去掉路径中的边后都变成了偶度点,不会再次被选中,也不影响算法的后续运行。

因此,我们一定可以将 $T \cup \text{OPT}$ 拆成 $S$ 的 3 个完美匹配,即可证明算法的近似比不超过 $\frac{5}{3}$。

原文地址:https://www.cnblogs.com/tsreaper/p/aop11.html

时间: 2024-08-28 19:57:50

应用运筹学基础:组合优化 (6) - 近似算法选讲 (4)的相关文章

应用运筹学基础:线性规划 (1)

学校有一门课叫<应用运筹学基础>,是计算机学院唯一教优化的课程,感觉上得还行,这里简单记录一下上课学到的知识.第一节课是线性规划(linear programming). 凸集 对于集合 $S$,若任意两元素 $x, y \in S$,且对于任意 $0 \le \theta \le 1$ 有 $\theta x + (1-\theta)y \in S$,那么 $S$ 是凸集(convex set,形象地想象就是凸的图形). 可以推广:若 $S$ 为凸集,那么对任意 $n \ge 2$ 个元素

移动前端开发基础与优化

移动前端开发基础与优化 http://qywx.gitcafe.io/2014/11/22/%E7%A7%BB%E5%8A%A8%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91%E5%9F%BA%E7%A1%80%E4%B8%8E%E4%BC%98%E5%8C%96/ 优雅且高效的使用Chrome Developer Tools(上) http://lin-chao.github.io/2014/10/10/%E4%BC%98%E9%9B%85%E4%B8%94%E9%A

正睿OI DAY3 杂题选讲

正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n\leq k^2\) 暴力 \(n\geq k^2\),找点x,求直线l经过x,且点数最多,点数\(\geq k+1\),递归,否则再找一个 One Point Nine Nine 现在平面上有\(n\)个点,已知有一个常数\(D\). 任意两点的距离要么\(\leq D\),要么\(\geq 1.

应用运筹学基础:组合优化 (2) - 一类问题的贪心解法

这一节课讲解了被称为独立系统的一类问题,以及用贪心解决独立系统问题的近似比. 独立系统 考虑一个有限元素集合 $E$,给 $E$ 中的每个元素 $e$ 定义一个非负的费用 $c(e)$.再考虑 $\mathcal{F} \in 2^E$,那么对于 $F \in \mathcal{F}$,我们定义 $F$ 的费用 $c(F) = \sum\limits_{e \in F} c(e)$.现在我们要找出一个 $F$,使得 $c(F)$ 最大(或最小).这就是这节课我们需要考虑的一类问题. 独立系统 从

NFS服务基础及优化

一.NFS主配置文件(默认为空):            /etc/exports        格式:            共享的目录    共享地址1(参数1,参数2,...)    共享地址2(参数1,参数2,...)        注意:            共享目录的本地权限,如果需要读写共享,一定要让本地目录被NFS客户端的用户(nfsnobody)可以读写        重要参数:            rw    读写权限            ro    只读权限     

【运筹学基础】——预测

本章的重点是在讲方法,这些方法基本上都是用计算去解决,所以我就总结了一下方法. 一.定性 简单来说,定性预测方法有两个,一个是背对背(特尔斐),另一个是面对面(专家小组) (1)特尔斐法:在专家群中取得比较一致的意见,匿名发表意见. 程序: 1.定课题 2.选专家 3.设计咨询表 4. 逐轮咨询,信息反馈 5.统计分析 适合长期或中期预测 (2)专家小组法:接受咨询的专家自由结合成小组讨论. 优:相互协商,讨论补充. 缺:被权威人士左右观点. 主要适合于短期预测. 二.定量 定量预测部分是需要用

选移动广告优化平台就选KeyMob

KeyMob移动广告优化平台整合了多家国内外主流的广告平台,为应用开发者打造了一个跨越国界的智能广告管理工具. KeyMob移动广告优化平台(www.keymob.com)是目前最先进的一站式移动广告优化平台,还整合了国内外多家主流的移动广告平台.产品于2014年10月正式上线,最领先的专门为Android.IOS开发者免费服务的第三方平台. 提起KeyMob移动广告优化平台(http://www.keymob.com/)很多开发者可能会感觉到有点陌生,KeyMob移动广告优化平台是湖南常乐网络

【运筹学基础】——宏观总结

宏观大图: 简单来说,运筹学这本书,理论挺好懂的,计算部分太多了,需要动手去做.在运筹学的科学理论指导下进行决策. 我将本书分为了三个部分:决策程序,库存管理,以及决策方法. 在决策程序阶段,一看步骤我就想起了信息系统开发管理编的知识网,系统开发步骤啥的.既然是步骤,那肯定都会有模板的,就例如这个决策程序步骤吧! 首先,我们要确定要决策的问题目标,然后针对这个问题拟定可行的解决方案,拟定好方案后,就要对这些方案进行预测,然而预测也要有一定的步骤(略过).无论是谁都会很在意盈亏的,预测完就要进行盈

【运筹学基础】——导论

导图: 总结: 第一章导论,主要讲了三部分.分别是: 一.什么是运筹学 在运筹学的解释中,我们定好3个关键词,就可以解决这个问题了. 利用,干什么,目的(通过--为--提供依据) (1)利用计划方法和有关学科要求 (2)把复杂功能关系转换为数学模型 (3)其目的是通过定量分析为决策和揭露新问题提供数量依据. 二.定量分析与定性分析 量与性的问题. 性通过主观经验来分析解决问题 量通过计量方法来解决问题,一般是复杂重要的问题,以及重复简单的问题. 三.用运筹学的知识去解决决策的六个步骤 我将六个步