集合覆盖近似算法

合集下载

集合覆盖问题的模型与算法

集合覆盖问题的模型与算法

个 集 合 覆 盖 。问题 : 求 的 一个 基 数 最 小 的集 合 覆盖 , 其 中基数 定义 为 集合 中元 素 的数 目。
J i ,
为 的一个集合覆盖 , 意指 中的每
V L S I 设计 、 网络 安全 等 。 1 。遗 憾 的 是 , 集 合 覆 盖 问题 在 算 法 复 杂性 上 属于 N P . 困难 问题 , 即它不 存 在多 项式 时 间精 确算法 , 除 ̄P = NP 。因此 , 近似 算法成 为求解集 合覆盖 问题 的 一个 有 效 途径 , 其 中以C h v  ̄ i t a l 的贪 心算 法 [ 4 - 5 ] 最 为 简洁 。 后来 , 学者们 又陆续提 出过一些近 似程度更 好的近似 算法 。 近 似算 法 固然 是 多 项式 时 间 算法 , 但 返 回 的往 往不 是

要: 集合 覆 盖 问题在 网络设 计领 域 中有 着 良好 的应用 背 景 , 但 它在 算法 复杂 性上 却是 NP . 困模 型 , 给 出 了源于贪 心 思想 的近似 算法 , 并从 原 始. 对 偶规 划 的 角度 进行 了证 明 , 基于L I N G O软件 的传 感 器 网络 最优 设计 案 例验证 了模 型 的正 确性 和 算法 的有效 性 。 关键 词 : 集合 覆 盖 ; 近似 算 法 ; 0 - 1 规 划; 对 偶规 划; 线性 交互 式通 用优化 器( L I N G O)
文献 标 志码 : A 中 图分 类号 : Q7 8 4; T P 3 0 1 . 6 d o i : 1 0 . 3 7 7 8 / j . i s s n . 1 0 0 2 — 8 3 3 1 . 1 3 0 3 - 0 3 8 3
1 引 言
集 合 覆 盖 问题 是 组 合最 优 化 和 理 论 计 算 机 科 学 中的

近似算法最小顶点覆盖

近似算法最小顶点覆盖

近似算法最小顶点覆盖
最小顶点覆盖问题是指在一个图中找到最小的顶点集合,使得每一条边都至少有一个端点在这个集合中。

最小顶点覆盖的算法很多,其中一种近似算法是贪心算法。

贪心算法的基本思路是,每次选择当前能选择的最优解来扩大覆盖集合。

对于最小顶点覆盖问题,我们可以选择一些顶点来组成覆盖集合,使得每条边都至少有一个端点在集合中。

一个比较直观的近似算法是:
1. 初始化覆盖集合为空。

2. 对于每条边,如果其中一个端点不在覆盖集合中,则将这个端点加入覆盖集合。

3. 重复步骤2,直到所有边都被覆盖。

这个算法的复杂度是O(E),其中E是边数。

虽然它不保证得到精确解,但是在实际中效果还是很不错的。

事实上,该算法的近似比例是2,也就是说,它得到的解最多是精确解的两倍。

近似算法

近似算法

u
v w
z
z
yxBiblioteka yx(a)
图G及其补图
(b)
上图(b)中有一个大小为2的顶点覆盖{w,z} 。
上图(a)的最大团为{u,v,y,x} k=4
顶点覆盖问题原来是以找图G的最小顶点覆盖的形式提出的。
为了研究其计算复杂性,将它表述为相应的判定问题。
首先,容易看出,VERTEX-COVER∈NP。因为对于给定的图G 和正整数k 以及一个“证书”v’ ,验证|V‘|=k,然后对每条
反之,设G有一个顶点覆盖V’V且|V‘|=|V|-k。对任意 u,v∈V,若(u,v)∈E,则u和v中至少有一个顶点属于 V’。这等价于,对任意的u,v∈V,若uV’且vV’,则
(u,v)∈E。换句话说,V-V’是G的一个团,其大小为
|V|-|V’|=k。即V-V’ 是G的一个k团。
因此 ,CLIQUE∝p VERTEX-COVER,从而VERTEXCOVER∈NPC。
证明思路: 首先,VERTEX-COVER∈NP。因为对于给定的图G和正整数k 以及一个“证书”V’,验证|V’|=k,然后对每条边(u,v)∈E, 检查是否有u∈V’或v∈V’,显然可在多项式时间内完成。 其次,通过CLIQUE∝pVERTEX-COVER来证明顶点覆盖问题 是NP难的。
u
v w
定义:语言L是NP完全的当且仅当 (1)L∈NP; (2)对于所有L’∈NP有L’ ∝p L。 如果有一个语言L满足上述性质(2),但不一定满足性质(1), 则称该语言是NP难的。所有NP完全语言构成的语言类称为NP完全 语言类,记为NPC。
定理:设L是NP完全的,则 (1)L∈P当且仅当P=NP; (2)若L∝p L1 ,且 L1∈NP,则 L1 是NP完全的。

集合覆盖问题

集合覆盖问题

集合覆盖问题 NP问题的近似解Set Cover problem是计算机算法复杂度领域的经典问题。

问题如下定义:⾸先有⼀个元素集合U,给定⼀系列集合,各集合之中含可能有⼀些共同的元素(如图所⽰)。

要求访问最少的集合,可以得到U中所有的元素,求出满⾜要求的最少数量的集合,它是Karp’s 21个NP-complete问题之⼀。

可以给出公式定义:给定⼀个元素集合{U}和集合{S},Si中的元素属于U,即S是U的⼦集集合。

我们要求的⼀个覆盖就是⼀个集合C其元素集合之并等于U即:。

⽤图⽰表明:Input:Output:Set cover问题通常在我们寻求⾼效获取被package起来的项或者寻求⼀种最优的项表述时出现,显然找到⼀个cover很简单,但我们⽬的是求的最优,这样才能更好的节约成本。

我们知道,所有的NP-C(NP完全问题)都还没有多项式时间算法。

⽽当我们遇到这类问题时我们通常采⽤只对特殊问题求解,动态规划或分⽀定界,概率算法,只求近似解或者启发式⽅法求解。

下⾯就使⽤贪婪算法给出近似解:⾸先给出如下函数定义给出贪婪算法:下⾯对此算法进⾏分析:此贪婪算法已被证明是set cover问题的⼀个多项式时间复杂度,(1+In r)ratio近似算法,其中r是输⼊S中集合的最⼤的集的势。

证明:假设S1,S2…Sj是通过贪婪算法依次选择的集合,Ci={S1,S2…Si},opt是满⾜集合覆盖最优解的集合数,由于贪婪规则,显然,当我们选择Si+1时Si+1必定覆盖了当前还未被Ci覆盖的最多元素。

还未被Ci覆盖的元素是|U|-f(Ci),他们可以被opt个⼦集合最优覆盖。

因此,按平均来算,最优解集合的⼀个⼦集可以覆盖(|U|-f(Ci))/opt个没有被Ci覆盖的元素,因此推出:解决Set cover问题的贪婪算法已经被证明是解决set cover问题的最可能的多项式时间复杂度近似算法。

ChA、NP完全问题的近似算法

ChA、NP完全问题的近似算法
for(int v = u + 1; v < n; ++v) { // 因为是无向图,只需考虑邻接矩阵的上三角
if(G[u][v] == 0) continue; X[u] = X[v] = 1; // 将u,v加入X for(int w = u + 1; w < n; ++w) // 删除与u,v关联的边
if(Y.find(*F) != Y.end()) W.insert(*F); return W; }
15
template<class K, class Pr, class A> // 每个元素都加上指定的值 set<K, Pr, A> operator+(const set<K, Pr, A> &X, const K &Y) { set<K, Pr, A> W;
(c)
(d)
(e)
(f)
图(a)~(e)说明了算法的运行过程及结果。(e)表示算法产生
的近似最优顶点覆盖 C,由顶点a,b,c,d,e, f 组成。(f)是图G 的
一个最小顶点覆盖,只有 3 个顶点:b,d,e 。
ห้องสมุดไป่ตู้
9
(2)复杂性分析
因为被选取和删除的边的总数为|E| ,所以该近似算法的计 算时间为 (|E|) 。
typename set<K, Pr, A>::const_iterator F = X.begin(), L = X.end(); for(; F != L; ++F) W.insert(*F + Y); return W; } template<class K, class Pr, class A> // 每个元素都乘以指定的值 set<K, Pr, A> operator*(const set<K, Pr, A> &X, const K &Y) { set<K, Pr, A> W; typename set<K, Pr, A>::const_iterator F = X.begin(), L = X.end(); for(; F != L; ++F) W.insert(*F * Y); return W; }

第9章近似算法

第9章近似算法

第9章近似算法第9章近似算法1第9章近似算法迄今为止,所有的NP完全问题都还没有多项式时间算法。

对于这类问题,通常可采取以下几种解题策略。

(1)只对问题的特殊实例求解(2)用动态规划法或分支限界法求解(3)用概率算法求解(4)只求近似解(5)用启发式方法求解本章主要讨论解NP完全问题的近似算法。

239.1 近似算法的性能若一个最优化问题的最优值为c*,求解该问题的一个近似算法求得的近似最优解相应的目标函数值为c,则将该近似算法的性能比定义为η= 。

在通常情况下,该性能比是问题输入规模n的一个函数ρ(n),即≤ρ(n)。

?c c c c *,*max ?c c c c *,*max 该近似算法的相对误差定义为λ= 。

若对问题的输入规模n,有一函数ε(n)使得≤ε(n),则称ε(n)为该近似算法的相对误差界。

近似算法的性能比ρ(n)与相对误差界ε(n)之间显然有如下关系:ε(n)≤ρ(n)-1。

**c c c ?**c c c ?9.2 顶点覆盖问题的近似算法问题描述:无向图G=(V,E)的顶点覆盖是它的顶点集V 的一个子集V’?V,使得若(u,v)是G的一条边,则v∈V’或u∈V’。

顶点覆盖V’的大小是它所包含的顶点个数|V’|。

VertexSet approxVertexCover( Graph g ){ cset=?;e1=g.e;while (e1 != ?) {从e1中任取一条边(u,v);cset=cset∪{u,v};从e1中删去与u和v相关联的所有边;}return c}Cset用来存储顶点覆盖中的各顶点。

初始为空,不断从边集e1中选取一边(u,v),将边的端点加入cset 中,并将e1中已被u和v覆盖的边删去,直至cset已覆盖所有边。

即e1为空。

49.2 顶点覆盖问题的近似算法图(a)~(e)说明了算法的运行过程及结果。

(e)表示算法产生的近似最优顶点覆盖cset,它由顶点b,c,d,e,f,g所组成。

求解集合覆盖问题的离散动态凸化方法

求解集合覆盖问题的离散动态凸化方法

求解集合覆盖问题的离散动态凸化方法刘秀梅;欧阳菲【摘要】集合覆盖问题是一个基本的组合优化问题,它是NP(多项式复杂程度的非确定性)完全问题.通过罚函数把问题转化为一个无约束最优化问题,给出一个辅助函数.它和问题有相同的离散全局极小解,设计一个算法,通过极小化该辅助函数得到问题的一个近似离散全局极小解.数值试验表明,算法对求解集合覆盖问题是有效的.【期刊名称】《宁德师范学院学报(自然科学版)》【年(卷),期】2019(031)002【总页数】5页(P120-123,133)【关键词】集合覆盖;离散全局极小解;罚函数;辅助函数【作者】刘秀梅;欧阳菲【作者单位】泉州理工学院通识教育中心,福建泉州362000;泉州理工学院通识教育中心,福建泉州362000【正文语种】中文【中图分类】O224集合覆盖问题是一个经典的NP(多项式复杂程度的非确定性)难问题,相继有很多学者利用不同思想提出了很多优化算法.Balas 和Ho 提出了割平面法[1],Fisher 和Kedia 提出了对偶启发式算法[2];Beasley 和Jornslen 结合拉格朗日启发式算法,用约束条件排除可行解的方法,Gomory f-cuts 和改进的分支策略解决了集合覆盖问题[3];Jacobs 和Brusco 开发了模拟退火算法[4];Beasley,Chu 以及Corne 等提出了用遗传算法解决集合覆盖问题[5].这些算法主要分为精确算法和启发式算法.如果问题规模比较大时,精确算法时间代价非常高,启发式算法则以牺牲解的精度来取得较好的时间复杂度.本文用罚函数的方法,把问题转化为一个无约束最优化问题,给出一个辅助函数,它和问题有相同的离散全局极小解.设计一个算法,通过极小化该辅助函数得到问题的一个近似离散全局极小解.1 集合覆盖问题介绍集合覆盖问题通常描述为:从一个m 行,n 列的0-1 矩阵(aij)m×n中选出若干列盖住所有的行,使得盖住所有行所付出的代价最小.它可用问题(A)二值整数规划来表示:式中:cj表示第j 列的代价;xj取0 或1,取1 表示第j 列包含在解中,取0 表示第j 列没有包含在解中;aij=1表示第j 列盖住了第i 行,aij=0 表示第j 列没有盖住第i 行.2 罚函数一般地,一个合适的罚函数对不可行点产生正的惩罚,对可行点不产生惩罚.问题(A)的罚项函数的定义如下:其中,,…,m},当xj为问题(A)的可行解时,p(x)=0.对所有x∈I,p(x)≥0.精确罚问题的定义为:其中,μ>0 为惩罚参数,称为罚因子.设,则f(x)=g(x)+μp(x).定理1 如果x*是问题(A)的最优解,且μ=g(x*),则x*是问题(P)的最优解.证明因为x*是问题(A)的最优解,所以也是问题(P)的可行解,故p(x*)=0,则f(x*)=g(x*)+μp(x*)=g(x*).对所有x∈I,有f(x)=g(x)+μp(x)=g(x)+g(x*)p(x).当p(x)≠0 时,,而aij,xj为0 或1,故,所以p(x)=1,f(x)=g(x)+g(x*)p(x)=g(x)+g(x*)>g(x*).当p(x)=0 时,x∈F,g(x)>g(x*),此时f(x)=g(x)>g(x*).综上可知,对所有x∈I,f(x)>f(x*),即x*是问题(P)的最优解.定理2 如果xμ*是问题(P)的最优解和问题(A)的可行解,则xμ*是问题(A)的最优解.证明根据定理2 的假设,有f(xμ*)=g(xμ*)+μp(xμ*)=g(xμ*)<f (x),∀x∈I,即g(xμ*)<g(x)+μp(x).则对∀x∈F,有g(xμ*)<g (x),即xμ*是问题(A)的最优解.3 邻域的概念在组合优化中,欧氏距离的概念通常不再适用.因此,需要重新定义邻域的概念.定义1 对∀x∈I,若集合N(x)={x,φi(x),i=1,…,n},则称N(x)为x 的邻域,其中φi(x)表示x 的第i 个分量为,其余分量不变.定义了邻域之后,类似连续函数,可以定义局部最优和全局最优.定义2 设x0∈I.若对∀x∈N(x0),有f(x)≥f(x0),则称x0为问题(P)的离散局部极小解;若对∀x∈I,有f(x)≥f(x0),则称x0为问题(P)的离散全局极小解.从上述定义可知,问题(P)的离散全局极小解也一定是问题(P)的离散局部极小解.本文通过邻域搜索算法求问题(P)的离散局部极小解,算法1 的具体步骤如下:1)取点x0∈I.2)若x0为问题(P)的离散局部极小解,停止;否则,取x∈N(x0),使f(x)<f (x0).3)令x0:=x,转步骤2).4 辅助函数及其性质上述邻域搜索算法找到的一般只是问题(P)的离散局部极小解,本文给出一个不同于文献[6]的辅助函数.此辅助函数和问题(P)有相同的离散全局极小解,设计一个算法,从一个初始点出发,极小化该辅助函数,来找问题(P)的比当前离散局部极小解更好的解.4.1 辅助函数假设x1*为问题(P)当前最好的离散局部极小解,且x0是问题(P)的离散局部极小解,使得f(x0)≥f(x1*).构造如下辅助函数:其中,k 为非负参数.在此范数“‖·‖”表示1-范数,即,构造以下辅助问题:4.2 辅助函数T(x,k)的性质类似于文献[6]中相关定理之证明,可以得出辅助函数T(x,k)相关的一些性质.定理3 若x0是问题(P)的离散局部极小解,且f(x0)≥f(x1*),则x0是问题(AP)的离散局部极小解.定理4 s1={x∈I:f(x)<f(x1*)},s2={x∈I:f(x)≥f(x1*)},对所有x∈s1,y∈s2,T(x,k)<T(y,k)成立.由定理4 可得:推论1 若x1*不是问题(P)的离散全局极小解,则s1={x∈I:f(x)<f(x1*)}≠Ø,且问题(AP)的所有离散全局极小解在集合s1中.定理5 假设x1*不是问题(P)的离散全局极小解,y∈s1={x∈I:f(x)<f(x1*)}.若y 是问题(AP)的离散局部极小解,则y 是问题(P)的离散局部极小解,反之成立.由推论1 和定理5 可得以下结论:推论2 若x1*不是问题(P)的离散全局极小解,则问题(P)和问题(AP)有相同的离散局部极小解和离散全局极小解.定理6对∀x=(x1,x2,…,xn)T∈I,若x≠x1*=(x11*,x12*,…,x1n*)T,且x1*∈I,那么存在y=(y1,y2,…,yn)T∈N(x),使得‖y-x1*‖<‖x-x1*‖.证明若x≠x1*,则存在j∈{1,2,…,n},使xj≠x1j*.令yi=xi,i=1,2,…,n(i≠j),则显然,y∈N(x).定理7 对于函数T(x,k),有以下结论:1)对∀x∈s2={x∈I:f(x)≥f(x1*)},若存在y∈N(x),使得f(y)<f(x1*),则x 不是问题(AP)的离散局部极小解.2)对∀x∈s2,x≠x1*,令若k>L(x),则x 不是问题(AP)的离散局部极小解.3)若,则对所有x∈s2,x≠x1*,x 不是问题(AP)的离散局部极小解.定理7 的结论2)和3)说明,当极小化函数T(x,k)时,若离散局部极小解一直在集合s2中,那么通过增加k 值,T(x,k)的极小解可以从离散局部极小解中跳出. 定理8 设z∈N(x),且f(x)>f(z)≥f(x1*),则T(z,k)<T(x,k).当且仅当下列条件之一成立:1)k=0;2)k>0 且‖z-x0‖≤‖x-x0‖;定理8 说明,若k 太大,那么在一些情况下T(x,k)的下降点不会在集合s2中.所以为了得到比x1*更小的离散局部极小解,当从一个初始点极小化T(x,k)时,k 值不能太大.但是定理7 又表明:要绕过当前的离散吸引区域时,k 必须足够大,这与定理8 矛盾了.因此,在减小T(x,k)时,应先取k=0,然后再慢慢增加k 值.5 动态凸化方法下面给出通过解问题(AP)来得到问题(P)的离散全局极小解的算法2.算法2 的步骤如下[6]:1)随机选一点x∈In,用算法1 减小f(x),得到问题(P)的一个离散局部极小解x1*.令N1为一个充分大的数,δk为一个正数.令Ν=0.2)选择一点x0∈In,使x0是问题(P)的一个离散局部极小解,且f(x)≥f(x1*),用k,x0,x1*构造函数T(x,k).3)令k=0,N=N+1.若N>Nl,则转到步骤6);否则随机找一点y∈In,转到步骤4).4)用算法1 从y 开始极小化T(x,k).假设x′是得到的一个离散局部极小解.若x′≠x0且f(x′)>f(x1*),则令k=k+δk,y=x′,重复步骤4);若x′=x0,则转到步骤3);若f(x′)<f(x1*),则转到步骤5).5)令x1*=x′,转到步骤2).6)停止.输出x1*和f(x1*),作为问题(P)的近似全局极小解和极小值.在此算法中,最初,令k=0,随机选一点x∈In,用算法1 从y 开始极小化T(x,k).若极小化的序列收敛于x′≠x0且f(x′)>f(x1*),则增加k 值,减少T(x,k)从x′开始.若此时极小化的序列收敛于x″≠x0且f(x″)>f(x1*),则由定理7,k 值太小了,增加k 值,极小化T(x,k)从x″开始,直到极小化的序列收敛于x0或{x∈I:f (x)<f(x1*)}中的一个点.若极小化的序列收敛于x0,重复以上过程.若极小化的序列收敛{x∈I:f(x)<f (x1*)}中的一个点,那么由定理7,已经找到问题(P)的比x1*小的离散局部极小点,留下x1*,重复以上过程.6 实验结果与分析对提出的算法,本文编写了程序,用OR-Library 中的第一个例子进行测试,这个实例中,列的代价cj是从1 到100 的整数中随机选出的,其中每行至少被两列覆盖.对实例运行15 次,得到的离散局部极小值为157.此实例用贪心算法求得的离散局部极小值为186.本文算法得到的结果比贪心算法得到的结果好,但是速度比贪心算法要慢.与其他算法相比,本文算法操作简便,容易理解.7 结论集合覆盖问题在实际生活中的应用非常广泛,因此,研究它的求解方法是非常有意义的.集合覆盖问题是一个约束最优化问题,本文用罚函数的方法,把约束吸收到目标函数中,通过求解该罚函数的无约束优化问题的最优解来得到原约束优化问题的最优解.构造了一个新的辅助函数,并证明了该辅助函数和集合覆盖问题有相同的离散全局极小解.本文用离散动态凸化方法来求解集合覆盖问题,该算法是一个近似算法,算法从一个随机初始点出发开始极小化辅助函数,使极小化序列逐渐逼近问题的最优解.参考文献:【相关文献】[1]EBALAS E,HO A.Set covering algorithms using cutting planes,heuristics and subgradient optimization:a computational study[J].Mathematical Programming,1980,12:37-60. [2]FISHER M.Optimal solution of set covering partitioning problems using dual heuristics[J].Management Science,1990,36:674-683.[3]BEASLEY J E,JORNSTEN K.Enhancing an algorithm for set coveringproblems[J].European Journal of Operational Research,1992,58:293-300.[4]JACOBSL,BRUSCOM.Alocal-search heuristic forlarge set covering problems[J].Naval Research Logistics,1995,42:1129-1140.[5]BEASLEY J E,CHU P C.A genetic algorithm for the set covering problem[J].European Journal of Operational Research,1996,94:392-400.[6]ZHU W X,FAN H.A discrete dynamic convexized method for nonlinear integer programming[J].Journal of Computational and Applied Mathematics,2009,223(1):356-373.。

一种求解最小集合覆盖问题近似解的组合优化方法

一种求解最小集合覆盖问题近似解的组合优化方法

一种求解最小集合覆盖问题近似解的组合优化方法专利名称:一种求解最小集合覆盖问题近似解的组合优化方法技术领域:本发明涉及一种求解最小集合覆盖问题近似解的组合优化方法,属于组合优化问题的求解技术领域。

背景技术:最小集合覆盖问题是一种抽象的组合优化问题。

该问题给出一系列元素和一系列集合,其中每个集合包含一个或者多个元素,并且每一个集合拥有一个权值。

最小集合覆盖问题即是要从这些集合中挑选一组集合,使得每一个元素至少出现在这一组集合中的某个集合中(即形成一个对所有元素的覆盖),并且要使得这一组集合的权值之和最小。

形式化地描述,有n个元素U= {1,2,. . .,n},和m个集合C = (S1, S2,, Sj,其中对于任意1=1,2,...,!11有友£队并且¥技)为集合SJA权值。

最小集合覆盖问题要寻找C的一个子集C*使得Esec*切⑷:最小,同时满足Usee* = 最小集合覆盖问题广泛存在于工业生产中,例如物流仓储的布局、基站的布局、故障诊断、分布式系统、无线传感器网络配置、调度等等。

然而由于最小集合覆盖问题为NP难问题,在极有可能成立的NP幸P的假设条件下,不存在解决该问题的高效的算法(即多项式时间内能够求解最优解的算法)。

目前工业应用上,用于处理类似NP难问题的方法主要为启发式搜索算法,包括模拟退火算法、演化算法、粒子群算法等,以期望取得较好的解。

然而这些算法对于取得的解过于随意,解的质量并没有任何保障,有可能获得很差的解从而导致应用中过大的成本开销等问题。

发明内容发明目的本发明主要针目前求解最小集合覆盖问题的启发式算法,缺乏对取得的解的质量的保障这一问题,提出一种求解最小集合覆盖问题近似解的组合优化方法,该方法令取得的解的集合权值之和除以最优解的集合权值之和为“近似率”,令k为所有集合的势的最大值,则该装置取得近似率SHk (取=Eti I)的解的期望步数为mn2,取得近似率为Hk - _的解的期望步数为mk+1n2。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

cx
xS
k i 1
(ui1
ui ) | Si
(S1
1 S2
... Si1 ) |
• 注意到|Si - (S1∪S2∪···∪Si-1)|≥ |S - (S1∪S2∪···∪Si-1)| =ui-1,

因为贪心算法中对 元素。由此可得:
Si
的选择保证了Si比任意集合
S
覆盖更多的
cx
xS
k
(ui1
i 1
ui
)
1 ui1
10
集合覆盖近似度的证明(6)
• (6)由前式可得:
11
集合覆盖近似度的证明(7)
• Corollary 35.5 • GREEDY-SET-COVER is a polynomial-
time (ln |X|+ 1)-approximation algorithm. • Proof Use inequality (A.14) and Theorem
优解DS,近似度为(ln |X|+ 1)。 • (2)利用Steiner Tree算法将前面所得的
近似最优解DS连成一个连通的点集,即得 到一个较好的连通支配集CDS。
14
• 再见
再见
15
1 cx | Si (S1 S2 ... Si1 ) |
6
集合覆盖近似度的证明(2.2)
• 一个计算cx的示例。例如按顺序选择S1、S2、S3,则分 配给a、e、f、h的代价分别为1/4,分配给b、d、g的代价 为1/3,分配给c的代价为1。总代价∑cx为3。若按其它顺 序选择不同集合(如最优解的某个顺序),则cx可能会重 复,因此这种选择下的∑cx一定大于等于3。
• 分配给最优覆盖的代价为: cx SC*xS
• 由于每一个x∈X都至少在一个集合S∈C*中,因
此有:
cx cx
SC*xS
xX
• 将上面的两个不等式组合起来,有: | C | cx SC*xS 8
集合覆盖近似度的证明(4)
• (4)证明的余下部分关键在于以下的不等 式,稍后再对其进行证明。对属于F的任何
集合覆盖问题
• 许多问题如点覆盖,支配集等都是集合覆 盖问题的特例。
X a b c d e f g h
S1 1
11
1
S 2
1
1
1 1
S3
1
1
S4 1
1
1 1
S5 1
1
S 6
11
1
1
集合覆盖问题
• Set-Cover • 下图中,F={S1, S2, S3, S4, S5, S6},一
个最小的集合覆盖为C={S3, S4, S5}。可用 矩阵表示每个子集能覆盖的元素个数。
集合S,有: cx H (| S |) xS
• 根据前面的式子可得:
| C | H (| S |) | C* | H (max{| S |: S F}) SC*
9
集合覆盖近似度的证明(5)

((S设S并S中251k且,∪).仍为.S.S,考中未使S2 虑k共被∪u中k任有覆·=的··意u盖∪0某i-的集1的S一-i最)合元|u个为小iS素个所∈下贪的元覆F标心个,素盖,集数和首。因合。i次对=此覆被定于1S盖,S义i 2中算=i所,u的1法.覆.0,.,每选=2盖|,C|一择S.。|.。.|个,于S为k设元1,是,S:S素中有有2u,至元i:u.=.少i.素-,1|SS被≥的i-uS后个i,1,,数。
X a b c d e f g h
cx
1/ 4 1/ 3 1 1/ 3 1/ 4 1/ 4 1/ 3 1/ 4
S1 1
11
1
S 2
1
1
1
1
S3 S4 1
1 1
1
1 1
S5 1
1
S 6
1
1
1

7
集合覆盖近似度的证明(3)
• (3)在算法的每一步中,要产生1个代价,因此
有: | C | cx xX
35.4.
12
集合覆盖近似算法思考题
• Exercises 35.3-4 • Show that the following weaker form of
Theorem 35.4 is trivially true:
| C || C* | max{| S |: S F}
13
集合覆盖的应用
• 求连通支配集 • (1)用GSC算法求得一个支配集的近似最
5
集合覆盖近似度的证明(2.1)
• (2)设Si表示由GSC算法所选出的第i个子 集;在将Si加入C时要产生代价1。将这个 选择Si的代价平均分布于首次被Si覆盖的元 素之上。设cx表示分配给元素x的代价, x∈X。对每一个元素只分配一次代价,即 当它首次被覆盖时分配一个代价。如果x首 次被Si覆盖,则有:
2
Greedy-Set-Cover近似算法
• 在每一阶段都选出能覆盖最多的,未被覆
盖的元素的集合S。 X a b c d e f g h
S1 1
S 2
1
11
1
1
1 1
S3 S4 1
1 1
1
1 1
S5 1
1
S 6
11
1
3
GSC的近似度
• Theorem 35.4 • GREEDY-SET-COVER 是一个多项式时间
的ρ(n)-近似算法,其中
(n) H (max{|S |: S F})
• Corollary 35.5 • GREEDY-SET-COVER是一个多项式时间
的 (ln |X|+ 1)-近似算法。
4
集合覆盖近似度的证明(1)
• 证明: • (1)为了证明其是一个ρ(n)-近似算法,对
每一个由该算法选出的集合赋予一个代价1, 将这一代价平分到初次被覆盖的元素上, 在利用这些代价来导出一个最优集合覆盖 C*的规模和由该算法得到的集合覆盖C的规 模之间的关系。
相关文档
最新文档