算法设计与分析-f (1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i iI
集合覆盖贪心算法Set-Cover(E,S)
1. 2. 3. 4.
5.
I=,Uncov=E,Set[i]=si,1im。 如果Uncov= ,则结束。 选择j,使得|Set[j]|最大。 I=I{j},Uncov=Uncov-Set[j], Set[i]= Set[i]- Set[j] ,1im 。 转第2步。
算法Max-k-SAT-W(U,C)的近似度不大于2K/(2k-1)
• 证明:
– 开始时,Left中所有项的权重不超过|C|/2k。 – 每次循环,集合Left中裁掉的项的权重总和不小于留在Left中被 伤害的项增加的权重总和。 – 所以Left中项的权重总和不会增加。当算法结束时, Left中所 有项的权重不超过|C|/2k。 – 算法结束时,每个不能被满足的项的受伤害次数为它含有的变 量字母个数,从而,每个不能被满足的项的权值为1。 – 即|Left| |C|/2k。 – |SU||C|(1-1/2k)。得证!
0
t r
iM 0

j 1
set [ r ][ i ]
1 j
(2 )


关键性质:
cov k

iM 0

1 j Set [ r ][ i ] 1 j
Set[1][i] Set[r ][i] 从而:
iM 0
set [1][ i ]
证明:由算法第4步可知: cov
cov
R=Set[1][1m],Uncov[1],j1,…,Set[t-1][1m],Uncov[t-1],jt-1,Set[t][1m],Uncov[t].
• 显然每次选择ji后,置集合Set[ji]为空,所以任何集 合均不可能被重复选择。
• I(R)={j1,j2,…,jt-1}表示算法一个运行序列所选择的集 合的下标的集合。 • 对于正整数集合M,如果存在算法的一个运行序列R, 使得M=I(R),则称M为可选择的。 • 根据上面的定义,很显然有: • 设S1S是E的一个子覆盖,M1={i:siS1},则M1是 可选择的,当且仅当存在算法的一个运行序列R, 使得M1=I(R)。
Johnson’s改进算法Max-k-SAT-W(U,C)(二)
1. 2. 3. 4.
5.
6.
对C中的每个项c赋权W(c)=2-|c|。 设SU=,True=,Left=C,Lit=U U , 如果Lit中的任一变量都不出现在Left的任意子句中,则 结束。 设y为Lit中的某变量符号,YT为该包含y的子句的集合, YF为包含y的反变量的子句的集合。 如果YT中子句的权之和不小于YF中子句的权之和,则: True= True{y},SU=SUYT,Left=Left-YT。 YF中所有子句的权加倍。 否则, True= True{ y }, SU=SUYF,Left=Left-YT。 YT中所有子句的权加倍。 Lit=Lit-{y, y },转第3步。
• 8.4 局部搜索技术
– Max-3-SAT问题的4/3近似度局部搜索算法
二、Max-K-SAT问题
• 如果对Max-SAT问题的输入子句加以限制,使得每 个子句都至少含有k个布尔变量字母,则得到的子 问题为Max-K-SAT。 • 当K1时,所有的Max-K-SAT问题都是NPC的。 • 下面的算法是Johnson于1974年设计的。
Johnson’s Max-k-SAT(U,C)贪心算法(一)
N 1 1 I M 0 sS0 j 1 j sS0 j 1 j h
1 j 1 j
N
1 j 1 j
N
• A tight case
S0 k!个不相 交的 k-元 素子集, 每个子集 含有一个 Segment 中的一个 点。 Segment 1 k! points
k!个不相交的 1-元素子集。
算法Max-k-SAT(U,C)的近似度不大于1+1/k
• 证明:
– 每次将变量y添加到True集合中,肯定满足|C[y]||C[ y ]|。 – 称|C[ y ]|中的项为被y伤害的项。 – 算法结束时,如果某个项未能满足,则该项受伤害的次数 为其含有的变量个数。从而,总的受伤害的次数至少为: k*|Left|。 – 所以有|SU| k*|Left|。则有:|C|= |SU|+|Left|(1+1/k)|SU|。 • A tight example for k=3: S={{x1,x2,x3},{ x1 ,x4,x5},{x 2 ,x6,x7},{x3 ,x8,x9}} 选择三个反变量加入True,只能使3个项满足。 • 为了使受伤害次数较多的项尽可能满足,考虑给项加上权。
• Max-k-SAT问题的
– 1+1/k近似性能比算法 – 1+1/(2k-1)近似性能比算法
• 集合覆盖问题O(logn)近似性能比算法
一、Max-SAT问题
• 实例:布尔变量集合U={u1,u2,…,un},项集合 Ci U U 。其中, C={C1,C2,…,Cm }, U {u1 , u2 ,..., un } 。 • 询问:计算U的真值指派f:U{T,F},使得可满足 项的数目最大。 • 设项Ci={u[i,1], …, u[i,k]} ,Ci可满足的含义是: u[i,1]…u[i,k]=T ,即Ci所含有的布尔变量字母至少有一 个取真值。
合取范式最大可满足贪心算法Max-SAT(U,C)


对任一变量
如果含有其本身的项不少于含有其反变量的项
• • • 该变量赋值为T。 将其反变量从所有项中删除。 将所有已满足的项从项集合中删除。 该变量赋值为F。 将该变量本身从所有项中删除。 将所有已满足的项从项集合中删除。

如果含有其本身的项少于含有其反变量的项
Design and Analysis of Algorithm 算法设计与分析
朱大铭 教授 山东大学计算机学院 dmzhu@sdu.edu.cn
第八章
• 8.1 组合技术
近似算法设计技术
– Max-SAT问题的2近似性能比算法 – Max-k-SAT问题的
– 集合覆盖问题O(logn)近似性能比算法 – 顶点覆盖问题的2近似性能比算法 – 集合覆盖问题的f近似性能比算法
1
n=1时,显然成立。 假设nk-1时结论成立。 n=k时,算法对u1的真值指派至少满足1/2*|C[u1]C[u1]|个 项。 u1赋值后的项集合C1中不含有u1及其反变量。根据归 纳假设,Max-SAT()对u2un的赋值使可满足的项不小于: 1/2*|C1|。所有算法满足: MaxSAT(U,C) 1/2*|C[u1]C[u1 ]| + 1/2*|C1|=n/2 • 从而算法的近似性能比不超过2。
三、集合覆盖问题
• 实例:基本元素集合E={e1,e2,…,en},E的子集的集合 S={s1,s2,…,sm},siE,1im。 • 目标:求S的一个标号子集I{1,2,…,m},满足: S E ,使|I|最小化。 • 下面给出求解集合覆盖问题的贪心算法,该算法虽 然简单,其性能却是最好的。
• A tight Example for k=3 S {{x1 , x2 , x3 },{x1 , x2 , x3 },{x1 , x2 , x3 },{x1 , x2 , x3 },
{x1 , x4 , x5 },{x1 , x6 , x7 },{x1 , x8 , x9 },{x1 , x10 , x11}} 如果第一次选择 x1 加入集合True,则最后只能有7个项满足。
• 关键引理:设M1是任意可选择的正整数集合,S0为 s E的任意子ຫໍສະໝຸດ Baidu盖,则有: 1
M1
ss0 j 1
j
• 证明:设M0={i:siS0},h=max{|si|:iM0},根据h的 取值进行归纳证明。
– h=0时, M0=,Uncov= , 则M1=,结论成立。 – 假设h=k-1时结论成立。下面证明h=k时亦成立。 – 设M1={j1,…,jt-1},其中r为满足Set[jr]<k 的第一个ji的下标。 设Cov=Set[j1]Set[j2]Set[jr-1],则Cov=Uncov[1]Uncov[r],且 r-1|Cov|/k (1) Set[r ][i] Un cov[r ] – 对于任意的iM0,|Set[r][i]|<k,且 iM 所以{Set[r][i]: iM0}是Uncov[r]的子覆盖,由归纳假设,有:
E Segment k k! points Segment k-1 k! points
S1
k!/k 个不相交的 k-元素子集。 k!/(k-1)个不相交 的 k-元素子集。
第二讲 线性规划、局部搜索和随机算法
• 8.2 线形规划技术
– 顶点覆盖问题的2近似性能比算法 – 集合覆盖问题的f近似性能比算法
1. 2.
3. 4.
5. •
设SU=,True=,Left=C,Lit=U U , 如果Lit中的任一变量都不出现在Left的任意子 句中,则结束。 设y为Lit中的某变量字母,满足在Left中包含y 的子句最多。YT为该包含Y的子句的集合。 SU=SUYT,Left=Left-YT, True=True{y}, Lit=Lit-{y, y}。 转第2步。 注意,上述算法中的y可以为某ui,也可为ui 的反变量,并且默认反变量的反变量为变量 本身。
• 1+1/k近似性能比算法 • 1+1/(2k-1)近似性能比算法
• 8.2 线形规划技术 • 8.3 原始对偶技术 • 8.4 局部搜索技术 • 8.5 随机近似算法
– Max-3-SAT问题的4/3近似度局部搜索算法 – Max-SAT问题的4/3近似度随机算法
第一讲 组合技术
• Max-SAT问题的2近似性能比算法
• • •

直到所有变量都被赋值
算法Max-SAT()的近似性能比不超过2。
• 证明:设
– MaxSAT(U,C)表示算法求得的真值指派能满足的项数。 – OPT(U,C)表示U的真值指派最多能满足的项数。 u 显然OPT(U,C)n。我们对布尔变量数目n进行归纳,以证明 MaxSAT(U,C) n/2。
• 设含有字母ui的项集合为C[ui]C,含有字母 u i 的 项集合为C[ u i ]C。 • 显然,若一个项既含有ui又含有 u i ,则无论ui赋T 或F均能使该项满足,因此假设C[ui] C[ u i]=。 • 若|C[ui]||C[ u i ]|,则指派ui为T,可使C[ui] 中的所 有项全部满足;否则,指派ui为F,可使C[ u i ]中的 所有项满足。因此总可给出ui恰当的赋值使C[ui] C[ u i ]中至少一半的项满足。 • ui赋值后,无论其它变量如何赋值,已经满足的项 仍然能保证满足;不能满足的项只能依靠其它变量 的赋值才能满足。
先讨论算法的性质:
• 定义如下符号:(第i次循环开始时)
– Set[i][j] :可选择的子集数组。1 jm。 – Uncov[i] :未被覆盖的元素构成的集合。 – Set[ji]:第i次循环选择的集合。
• 假设算法共执行t-1次循环,则Uncov[t]=;且对于 i<t, Uncov[i]。 • 则算法可用如下序列R表示:
iM 0

Set[1][i] Set[r ][i] k
iM 0
1 j Set [ r ][i ] 1 k
set [1][i ]
再由k|Set[1][i]||Set[r][i]|可得:
cov k
由(1)(2)(3)可得:

iM 0

1 j Set [ r ][ i ] 1 j
s
set [1][ i ]
(3)
M 1 t 1
ss0
1 j 1 j
即当h=k时结论成立。
• 设N=max{|si|:siS},则算法的近似性能比不大于 • 证明:设S0为E的最小子覆盖,M0={i:siS0}, h=max{|si|:iM0},显然Nh。设I为算法求得的子覆 盖中集合的下标,则
相关文档
最新文档