斯坦纳树、旅行商问题
本节轮到我们这组做lecture notes,提交上去的是用latex处理的整理结果。这里我把自己的笔记基本更新成和lecture notes一致了,内容更少一些,个别表达有所不同。
斯坦纳树问题
斯坦纳树问题:给定G=(V,E), C:E→R+,其中C满足三角不等式。对于点集S⊆V,求G的连通子图G′=(S′,E′), S⊆S′,使得S中的点彼此联通,并且选中的边权和最小。显然,最优解的G′必定是一棵树,我们记作斯坦纳树,S′∖S中的点记作斯坦纳点。
斯坦纳树问题的求解是一个NP-Hard问题。在本节中,我们重点关注该问题的近似算法,同时为了简单起见,我们仅讨论完全图上的斯坦纳树。
欧氏平面上的斯坦纳树
欧氏平面上的斯坦纳树:给定平面上的n个点,用总长尽量短的线段把他们连接起来。注意线段可以在平面上的任意点相交。
欧氏平面上的距离关系自然满足三角不等式。
最优解中,线段在平面上除了给定点外的交点就是斯坦纳点。

从上图看出 n=3 和 n=4 的情况,S、S1 和 S2 是斯坦纳点。n=3 时,斯坦纳点就是三角形的费马点。
满足三角不等式的斯坦纳树:2-近似算法
容易想到,如果不考虑斯坦纳点,对图G关于S的导出子图直接求最小生成树,就是斯坦纳树问题的一个可行解。在满足三角不等式的前提下,我们可以证得这就是一个2-近似的算法,下面给出证明。
算法近似比证明:
记给定点集S的最小生成树解T,斯坦纳树问题的最优解T∗。可以将T∗中的边复制一遍,得到图2T∗。由于图2T∗中的所有点的度数都是偶数且联通,那么一定存在经过S中所有点的欧拉回路。
从S中的一点出发,找到任意一条欧拉回路L。易知L的长度就是2T∗的边权之和。我们这样构造一个可行解:只走S中的点,且每个点只走一次,如果遇到了斯坦纳点或者已经走过的点就“跳跃”到下一个点。因为我们是讨论完全图上的斯坦纳树,所以跳跃是允许的,这种跳跃又称为short-cutting。这样依次走完S中的点,就得到一个可行解T′。
举个例子,假定下图是我们对2T∗构造的欧拉回路的一部分,红色代表S中的点,蓝色则是斯坦纳点。由于a之后遇到了斯坦纳点,我们要跳跃到b;在走到c之后,由于a已经走过了,我们要直接跳到d。
在满足三角不等式的前提下,直接跳过去不会比沿着欧拉回路L走过去的距离长,所以有C(T′)≤2C(T∗)。又因为T′也是一棵S上的生成树,边权之和不会比最小生成树T小,因此C(T)≤C(T′)。综上所述,有C(T)≤C(T′)≤2C(T∗)。近似比上界是2。
然后证明近似比下界也是2:如下图所示,构造这样一个例子,令S={v1,v2,…,vn}。S中的所有点到中心点的边权值为1,其他边权值都为2。
对这个例子使用最小生成树求解,得到的树是是不经过中心点的一条链,边权和为2(n−1)。显然,该问题的最优解是利用中心点作为斯坦纳点,边权和为n,从而得到近似比n2n−2,当n→∞时,近似比趋近于2。因此近似比的下界为2。
综上所述,最小生成树是满足三角不等式的斯坦纳树问题的2-近似算法。
旅行商问题
背景:
欧拉回路:从s出发,恰好经过每条边最后回到s
欧拉路:恰好经过每条边
哈密尔顿圈:从s出发,恰好经过每个点回到s
哈密尔顿路径:从s出发,恰好经过每个点到达终点t
旅行商问题(TSP):给定完全图G=(V,E), C:E→R+,求边权和最小的哈密尔顿圈。即,确定顶点的一个排列顺序π,使得∑i=1nC(vπi,vπi+1)最小,其中πn+1=π1。
完全图上的旅行商问题也是一个NP-Hard问题。
旅行商问题的近似算法研究
普通完全图上的 TSP 没有很好的近似比。若C任意,可以证明∀k=2poly(n),都不存在k近似算法。其中poly(n)是n的多项式。
证明:考虑哈密尔顿圈问题,已知判断图G1=(V,E1)是否含哈密尔顿圈是一个NPC问题。构造完全图G=(V,E),对G求TSP问题。其中,E中一条边e的边权定义如下:
C(e)={1nke∈E1e∈E1
反证法:假设存在TSP的k-近似算法,利用算法对G求TSP近似解。那么若TSP的最优解Copt=n,即G1中存在哈密尔顿圈,TSP近似解满足CA≤nk;否则最优解一定满足Copt≥nk+n−1,即G1中不存在哈密尔顿圈,TSP近似解CA≥nk+1。
这样一来,由这种近似算法求解后,根据近似解与nk的大小关系,就可以反推G1的哈密尔顿圈问题。但是,哈密尔顿圈是一个NP问题,不能被归约到多项式时间求解,也就证明了不存在旅行商问题的k-近似算法。考虑到问题的编码长度与多项式规约,保证k=2poly(n),完全图的输入规模仍然是 n 的多项式。
推广:同理可以证明装箱问题的近似比不会小于等于23,因为判断2个箱子能否装下物品是NP问题,如果存在近似比小于23的近似算法,直接用它求解装箱问题,有:如果近似解用了3个箱子,说明最优解2个箱子可以装下;如果近似解用了多于3个箱子,就说明最优解2个箱子装不下。这样一来就解决了判断2个箱子能否装下物品这个NP问题,因此,不存在近似比小于等于23的装箱问题近似算法。
满足三角不等式的TSP问题
根据前面的证明,我们知道普通完全图上的旅行商问题难以得到较好的近似算法。因此,我们再给该问题加上一定的限制:在距离函数C满足三角不等式的前提下,旅行商问题就有较好的近似算法。接下来讨论此前提下的旅行商问题。
最小生成树松弛算法
记旅行商问题最优解为H∗。求图G的最小生成树T∗,显然C(T∗)≤C(H∗)。最小生成树松弛算法过程如下:
把T∗中的边复制一遍得到图Ge。Ge的所有点度数都为偶数且相互连通,因此一定存在欧拉回路。与斯坦纳树问题同理,任选一条欧拉回路应用short-cutting(此处要保留最后一个点),得到点的排列π为TSP的可行解,并生成哈密尔顿圈Hc。由三角不等式,易知C(Hc)≤C(Ge)=2C(T∗)。
综上所述,C(Hc)≤C(Ge)=2C(T∗)≤2C(H∗),因此该算法近似比上界为2。
构造例子如下图所示:
完全图G共有2n+1个顶点,中心点v0到外围每个点的距离是1,外围相邻的两个点距离也是1,其他边权都为2(未在图中标出)。容易求得最小生成树T∗为v0为中心的星图。如果对Ge选择欧拉回路v0v1v0v3v0…v2n−1v0v2v0v4…v2nv0,再去重复点做short-cutting得到Hc:v0v1v3…v2n−1v2…v2nv0,则有C(Hc)=2(2n−1)+2=4n。易知最优解的C(H∗)=2n+1,从而确定该算法近似比下界为2。
因此,该算法的近似比是2。
MST松弛改进
考虑MST松弛算法的改进空间,所有边复制一遍的操作可能与最优解之间间隙比较大,我们尝试只给生成树中的奇度数点添边。显然生成树中的奇度数点会有偶数个,存在完美匹配,即求一个T∗中奇度数点之间的最小权完美匹配M∗,得到Ge=T∗∪M∗(这里的并是边集的相加,即如果两个集合中都有这条边,那么在并中会有两条一样的边)。在Ge上取任意的欧拉回路,生成一个近似解Hc,有C(Hc)≤C(T∗)+C(M∗)。接下来证明该算法的近似比为23。
分析最优解H∗,H∗是一个环。考虑取出其中的生成树中的奇度数点依次连起来,不妨设为2n个奇度数点t1,t2,…t2n,他们之间连有2n条边。显然,按照次序,(t1−t2,…t2n−1−t2n)和(t2−t3,…t2n−t1)就是两组完美匹配M1,M2,满足C(H∗)≥C(M1)+C(M2)≥2C(M∗),所以C(M∗)≤21C(H∗)。
综上所述,有C(Hc)≤C(T∗)+C(M∗)≤23C(H∗),改进后近似比的上界为23。
构造例子如下图所示,证明其下界也为23:
完全图上面一行有n个顶点,下面一行有n+1个顶点。图中画出的边权值为1,其他顶点间的距离由所给边下的最短路长确定。易知C(Hc∗)=2n+1,环绕一圈即为最优解。若最小生成树T∗为v1v2…v2n+1,有C(T∗)=2n,则有奇度数点的最小完美匹配M∗为v1v2n+1,C(M∗)=n。综上得到近似比2n+12n+n,当n→∞时,近似比趋近于23,得证。
哈密尔顿路径问题
哈密尔顿路径问题指在赋权完全图上求边权和最小的哈密尔顿路,这里我们同样考虑满足三角不等式的情况。类似于旅行商问题,也可以得到类似的MST松弛算法:求G的最小生成树T∗,做奇度数点中除去任意两点的最小权完美匹配M∗,得到Ge=T∗∪M∗再做short-cutting。其中,去掉的这两点在Ge中度数仍为奇数,作为哈密尔顿路径的起点和终点。
类似地,把最优解中除去起点、终点外的T∗奇度数点摘出来,可以得到两组匹配,且剩余一条边(因为完美匹配是去掉了两个奇度数点的),因此仍然可以证明算法近似比为23。另外,要解决去掉任意两点的最小权完美匹配的求解问题,这里可以引入两个虚拟节点a,b,连接到所有奇度数点并设置边权为0,则在最小权完美匹配中a,b一定会各自匹配到一个奇度数点,就相当于去掉了任意两个点后的完美匹配最优解。
固定起点的哈密尔顿路径问题
如果指定了起点S求边权和最小的哈密尔顿路,意味着S的度数有可能是偶数,那么就要尝试在图Ge中调整起点S的度数为奇数,我们通过给S加一条边来解决。在T∗中引入误点的概念,误点包括:
误点的度数是需要加边调整的。这样一来,如果S的度数是偶数,我们就会尝试加边改为奇度数点。可以证明误点一定是奇数个:如果S为奇度数点,那么奇度数点共有偶数个,去掉S为奇数个;如果S为偶度数点,那么奇度数点共有偶数个,算上S仍为奇数个。
对所有误点求去掉任一点的最小权完美匹配M∗(类似于前面去掉任意两点求解的算法,不多阐述),做Ge=T∗∪M∗,再做short-cutting就可以得到一个解Hc。
对于图Ge,考虑起点S的两种情况:
若S为奇度数点,则S不是误点,S和求完美匹配时去掉的点直接分别构成起点和终点;
若S为偶度数点,并且没有被匹配的误点是S,那么图Ge中全部都是偶度数点,任意选取一个与S相连的点A,删去他们之间的边,这样图中一定存在着从S为起点A为终点的欧拉路径,即可构成哈密尔顿路。
可以证明,对于固定起点的哈密尔顿路径求解,以上算法的近似比仍然是23:
分析最优解H∗,考虑取出其中的误点依次连起来,不妨设为2n+1个误点t1,t2,…t2n+1,他们之间连有2n条边。显然,按照次序,(t1−t2,…t2n−1−t2n)和(t2−t3,…t2n−t2n+1)就是两组完美匹配M1,M2,因此仍然满足C(H∗)≥C(M1)+C(M2)≥2C(M∗),也就可以证明MST松弛算法的近似比为23。
固定起点、终点的哈密尔顿路径问题
对于固定起点和终点的哈密尔顿路径问题,算法近似比不再是23。首先介绍算法过程,仍然是MST松弛算法,同样引入误点的概念:
-
V∖{S,T}中的奇度数点
-
{S,T}中的偶度数点
容易知道误点一定有偶数个,在误点中做最小权完美匹配得到M∗。那么在图Ge=T∗∪M∗中,S,T的度数为奇数,其他点的度数为偶数,所有点都是联通的,因此存在从S出发到T的欧拉路径,任选构造一条从S到T的欧拉路径就得到了一个点的排列π。
注意,在π中T可能在中间就出现过了,为了保证T是终点,在做short-cutting得到哈密尔顿路径Hc的过程中,把中间出现的T跳跃掉即可,只保留终点的T。这样就可以得到一个S为起点,T为终点的哈密尔顿路径近似解了。
对于固定起点、终点的哈密尔顿路径求解,算法近似比不再是23。下面这个例子可以说明,近似比至少是35:
完全图上有如图所示8个点,部分边权已经在图上标出,其余边权设置为该图上的最短路径长度。容易知道最优解C(H∗)=3N+6,但按照以上算法,哈密尔顿路径可以取到C(Hc)=5N+6。因此得到近似比下界35。
下面证明算法近似比上界就是35:
同样分析最优解和匹配之间的关系,考虑不等式C(T∗)+C(H∗)≥3C(M∗)是否成立,如果成立的话,由于C(T∗)是C(H∗)的下界,就可以得到C(M∗)≤32C(H∗)。
考虑图Ge=T∗∪H∗,由于H∗是一条哈密尔顿路径,因此只有起点和终点的度数奇偶性发生改变,图Ge中仍然有偶数个误点,T∗中除了S,T以外的奇度数点仍然为奇度数点。容易推出,T∗中的奇度数点在Ge中都属于误点(包括S,T)。
由于最优解H∗中包含一组误点的匹配,即从H∗中选出所有Ge中的误点,按序两两选出误点之间的匹配边,称这个匹配为E,有C(E)≥C(M∗)。考虑图Q=Ge∖E,得到的图所有点的度数都是偶数,由于E⊆H∗,因此T∗⊆Q,Q是联通的。综上可以得到Q是欧拉图,一定存在一条欧拉回路,这条回路包含了两组误点的完美匹配,满足C(Q)≥2C(M∗),所以C(T∗)+C(H∗)≥3C(M∗),也就证明了近似算法的近似比上界35。
所以对于固定起点和终点的哈密尔顿路径问题,以上算法近似比是35。