13完全性北京大学信息科学技术_第1页
13完全性北京大学信息科学技术_第2页
13完全性北京大学信息科学技术_第3页
13完全性北京大学信息科学技术_第4页
13完全性北京大学信息科学技术_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、算法设计与分析第13讲完全性汪小林信息科学技术学院1主要内容7.1 P类与NP类7.1.1 易解的问题与难解的问题7.1.2 判定问题7.1.3 NP类7.2 多项式时间变换与NP完全性7.2.1 多项式时间变换7.2.2 NP完全性7.2.3 Cook-Levin定理第一个NP完全问题7.3 几个NP完全问题 最大可满足性与三元可满足性、顶点覆盖,团与集、哈密顿回路与货郎问题、恰好覆盖、子集和, 背包, 装箱与双机调度7.1 P类与NP类7.1.1 易解的问题与难解的问题评价算法好坏的重要标准运行时间O(nlogn)O(n2)快速排序算法Dijkstra算法O(n2n)最大团问题的回溯法用一

2、台每秒10亿次的超大型计算机计算快速排序算法给10万个数据排序, 运算量约为105log21051.7106, 仅需1.7106/109=1.710-3秒.什么是好算法?Dijkstra算法求解1万个顶点的图的单源最短路径问题,运算量约为(104)2=108, 约需108/109=0.1秒.回溯法解100个顶点的图的最大团问题, 运算量为10021001.81032, 需要1.81032/109=1.81021秒=5.71015年, 即5千7百万亿年!再从另外一个角度来看1分钟能解多大的问题. 1分钟60秒,这台计算机可做61010次运算, 用快速排序算法可给2109(即, 20亿)个数据排序

3、, 用Dijkstra算法可解2.4105个顶点的图的单源最短路径问题. 而用回溯法一天只能解41个顶点的图的最大团问题.算法的时间复杂度函数 f 和 g 是多项式相关的: 如果存在多项式 p 和 q 使得, 对任意的nN, f(n)p(q(n) 和g(n)q(f(n).nlogn与n2, n2+2n+5与n10都是多项式相关的,logn与n, n5与2n不是多项式相关的.问题P 的实例I的规模:I 的二进制编码的长度, 记作|I|.定义7.1 如果存在函数 f:NN使得, 对任意的规模为n的实例I, 算法 A对I的运算在 f(n)步内停止, 则称算法A的时间复杂度为f(n).多项式时间算法:

4、 以多项式为时间复杂度. 易解的问题: 有多项式时间算法.难解的问题: 不存在多项式时间算法.例如几点说明1.当采用合理的编码时, 输入的规模都是多项式相关的.“合理的”是指在编码中不故意使用许多冗余的字符.例如, 设实例I是一个无向简单图G=,V=a.b,c,d, E=(a,b),(a,d),(b,c),(b,d),(c,d).若用邻接矩阵表示, 则编码e1=0101/1011/0101/1110/, 长度为20.若用关联矩阵表示, 则编码e2=11000/10110/00101/01011/, 长度为24.设G有n个顶点m条边, 则用邻接矩阵时|I|=n(n+1), 矩阵时|I|=n(m+

5、1). 两者是多项式相关的.用关联几点说明2. 自然数应采用二 (k2)进制编码, 不能采用一进制编码.n的二进制编码有log2(n+1)位, 一进制编码有n位, 两者不是多项式相关的.3. 时间复杂度常表成计算对象的某些自然参数的函数, 如图的顶点数或顶点数与边数的函数.实例的二进制编码的长度与这些自然参数通常都是多项 式相关的.4. 关于操作指令集的两点说明. 运行时间通常是计算执行的操作指令数, 这就要求执行的指令数与实际的运行时间是多项式相关的.几点说明4.1 要求每一条指令的执行时间是固定的常数. 例如, 2个不超过计算机字长的二进制数的四则运算是一条合理的指令. 而2个任意长度的二

6、进制数的四则运算不能作为合理的指令. 当超过计算机字长时, 必须进行分段处理.4.2 算法的计算步数与采用的操作指令集有关. 这就要求任何两个“合理的”操作指令集, 其中一个指令集中的每一条指令都可以用另一个指令集中的指令模拟, 且模拟所用的指令条数不超过某个固定的常数.可以规定一个基本操作指令集, 如它由位逻辑运算与、或、非组成, 然后认为任何可以用这个基本操作指令集中常数条指令实现的操作都是合理的指令, 由有限种合理的指令的操作指令集是合理的操作指令集.几点说明在上述约定下, 算法是否是多项式时间的与采用的编码和操作指令集无关, 从而一个问题是易解的、还是难解的也与采用的编码和操作指令集无

7、关.设有编码s1,s2和操作指令集 D1,D2. 实例 I 的这两种编码的长度分别为|I|1和|I|2. 存在多项式 p和 q, 使得 |I|1p(|I|2) 和 |I|2q(|I|1). 又存在常数 k1和 k2, 使得D1(D2)中的每一条指令都可以用 D2(D1)中的不超过 k1 (k2)条指令模拟.设算法 A在采用编码s1和操作指令集 D1时存在多项式 f 使得, 对任意的实例I, 算法在 f(|I|1)步内停机. 不妨设 f 是单调递增的. 若采用操作指令集D2, 算法至多运行 k1 f(|I|1) k1 f(p(|I|2)步. 故 A在采用编码 s2 和操作指令集 D2 时也是多项

8、式时间的. 反之亦然.易解的问题与难解的问题易解的问题. 如排序、最小生成树、单源最短路径等已证明的难解问题. 一类是不可计算的, 即根本不存在求解的算法, 如希尔伯特第十问题丢番图方程是否有整数解.另一类是有算法, 但至少需要指数时间, 或指数空间, 甚的时间或更大的空间. 如带幂运算的正则表达式的至全体性, 即任给字母表 A上的带幂运算的正则表达式R, 问:R=A*?这个问题至少需要指数空间.既没有找到多项式时间算法、又没能证明是难解的问题. 如哈密顿回路问题、货郎问题、背包问题等7.1.2 判定问题只有两个是, 否.判定问题:判定问题 P = , 其中DP 是实例集合, YP DP 是为

9、“Yes”的实例.所有哈密顿回路(HC): 任给无向图G, 问G有哈密顿回路吗?货郎问题(TSP): 任给n个城市, 城市i与城市j之间的正整数距离 d(i,j), ij, 1i, jn, 以及正整数D, 问有一条每一个城市恰好经过一次最后回到出发点且长度不超过D的巡回路线吗? 即, 存在1,2,n的排列s 使得n-1 d (s (i),s (i + 1) + d (s (n),s (1) D ?i =1组合优化问题与判定问题0-1背包: 任给n件物品和一个背包, 物品i的重量为wi, 价值为vi, 1in, 以及背包的重量限制B和价值目标K, 其中wi, vi, B, K均为正整数, 问能在

10、背包中装入总价值不少于K且总重量不超过B的物品吗?即, 存在子集T1,2,n使得wi Bvi K ?且iTiT搜索问题, 组合优化问题与判定问题的对应.如果搜索问题, 组合优化问题有多项式时间算法, 则对应的判定问题也有多项式时间算法; 通常反之亦真.组合优化问题与判定问题组合优化问题P*由3部分组成:(1) 实例集DP*,;(2) IDP*, 有一个有穷非空集S(I), 其元素称作I的可行解.(3) sS(I), 有一个正整数c(s), 称作s的值.如果s*S(I), 对所有的sS(I), 当P*是最小(大)化问题时,c(s*)c(s)(c(s*)c(s)则称s*是I的最优解, c(s*)是

11、I的最优值, 记作OPT(I).P*对应的判定问题P =定义如下: DP=(I,K) | IDP*,KZ*, 其中Z*是非负整数集合. 当P*是最小化问题时, YP=(I,K) | OPT(I)K;当P*是最大化问题时, YP=(I,K) | OPT(I)K.7.1.3NP类定义7.2 所有多项式时间可解的判定问题组成的问题类称作P类.定义7.3 设判定问题P =, 如果存在两个输入变量的多项式时间算法 A和多项式 p, 对每一个实例 ID, IY 当且仅当存在 t, |t| p(|I|), 且 A对输入 I 和 t 输出“Yes”, 则称P 是多项式时间可验证的,A是P 的多项式时间验证算法

12、, 而当IY时, 称 t是IY的证据.由所有多项式时间可验证的判定问题组成的问题类称作NP类.例如,HC, TSP, 0-1背包NP非确定型多项式时间算法非确定型多项式时间算法:对给定的实例 I, 首先“猜想”一个 t,|t| p(|I|), 然后检查t 是否是证明 IY 的证据, 猜想和检查可以在多项式时间内完成, 并且当且仅当t.IY 时能够正确地猜想到一个证据定理7.1 PNP.问题: P=NP?7.2 多项式时间变换与NP完全性7.2.1 多项式时间变换如何比较两个问题的难度?定义7.4 设判定问题P1=, P2=. 如果函数f:D1 D2满足条件:(1) f 是多项式时间可计算的,(

13、2) 对所有的ID1, IY1f(I)Y2,则称 f 是P1到P2的多项式时间变换.如果存在P1到P2的多项式时间变换, 则称P1可多项式时间变换到P2, 记作P1pP2.例例7.1HCpTSP.证 对HC的每一个实例I: 无向图G=, TSP对应的实例f(I)为: 城市集V, 任意两个不同的城市u和v之间的距离d (u, v) = 1,若(u, v) E,否则,2,以及界限D=|V|.例最小生成树: 任给连通的无向赋权图G=以及正整数B, 其中权W:EZ+, 问不超过B的生成树吗?最大生成树: 任给连通的无向赋权图G=以及正整数D, 其中权W:EZ+, 问G不小于D的生成树吗?例7.2 最大

14、生成树p最小生成树.证 任给最大生成树的实例I:连通的无向赋权图G=和正整数D, 最小生成树的对应实例f(I): 图G=和正整数B=(n-1)M-D, 其中n=|V|, M=maxW(e) | eE+1, W (e)=M-W(e). 如果存在G的生成树T, 使得, 则W (e) DeTW (e) = (n - 1)M - W (e) (n - 1)M - D = B.eTeT反之亦然.p的性质定理7.2p具有传递性. 即, 设P1pP2, P2pP3, 则P1pP3. 证 设Pi=, i=1,2,3, f和g是P1到P2和P2到P3的多项式时间变换.对每一个ID1, 令h(I)=g(f(I).

15、计算f和g的时间上界分别为多项式p和q, 不妨设p和q是单调递增的. 计算h的步数不超过p(|I|)+ q(|f(I)|). 输出作为合理的指令, 一步只能输出长度不超过固定值k的字符串, 因而|f(I)|kp(|I|). 于是, p(|I|)+ q(|f(I)|) p(|I|)+q(kp(|I|), 得证h 是多项式时间可计算的.又, 对每一个ID1,IY1 f(I)Y2 h(I) =g(f(I)Y3,得证h是P1到P3的多项式时间变换.p的性质定理7.3 设P1pP2, 则P2P 蕴涵 P1P.证 设P1=, P2=, f是P1到P2的多项式时间变换, A是计算f的多项式时间算法. 又设B

16、是P2的多项式时间算法. 如下构造P1的算法C: 对每一个ID1, 首先应用A得到f(I), 然后对f(I)应用B, C输出“Yes”当且仅当B输出“Yes”.推论7.4设P1pP2, 则P1是难解的蕴涵P2是难解的. 由例7.2及最小生成树P, 得知最大生成树P.由例7.1, 如果TSPP, 则HCP. 反过来, 如果HC是难解的,则TSP也是难解的.7.2.2 NP完全性定义7.5 如果对所有的PNP, P p P, 则称P 是NP难的.如果P 是NP难的且PNP, 则称P 是NP完全的.NP完全问题是NP中最难的问题.定理7.5 如果存在NP难的问题PP, 则P=NP.推论7.6 假设P

17、NP, 那么, 如果P 是NP难的, 则PP.定理7.7 如果存在NP难的问题P 使得 P p P, 则P 是NP 难的.推论7.8 如果PNP并且存在NP完全问题P 使得 P p P,则P 是NP完全的.证明NP完全性的“捷径”为了证明P 是NP完全的, 只需要做两件事:(1) 证明PNP;(2) 找到一个已知的NP完全问题P , 并证明P p P.7.2.3 Cook-Levin定理合式公式是由变元,逻辑运算符以及圆括号按照一定的规则组成的表达式. 变元和它的称作文字. 有限个文字的析取称作简单析取式. 有限个简单析取式的合取称作合取范式.给定每一个变元的真假值称作一个赋值. 如果赋值t使

18、得合式公式F为真, 则称t是F的成真赋值. 如果F存在成真赋值, 则称F是可满足的.F1=( x1 x2)( x1 x2 x3) x2是一个合取范式.例如令t(x1)=1, t(x2)=0, t(x3)=1是F1的成真赋值,F1是可满足的.F2=( x1 x2 x3)( x1 x2 x3) x2 x3不是可满足的.Cook-Levin定理可满足性(SAT): 任给一个合取范式F, 问F是可满足的吗?定理7.9 (Cook-Levin定理) SAT是NP完全的.定理7.10P=NP的充分必要条件是存在NP完全问题PP.7.3 几个NP完全问题SAT恰好覆盖3SAT最大可满足性子集和VC有向HCH

19、C双机调度背包集装箱团7.3.1 最大可满足性与三元可满足性最大可满足性(MAX-SAT): 任给关于变元x1, x2, xn的简单析取式C1,C2,Cm及正整数K, 问存在关于变元x1, x2, xn的赋值使得C1,C2,Cm中至少有K个为真吗?设判定问题P =, P =, 如果DD, Y = DY, 则P 是P 的特殊情况, 称作P 的子问题.例如“给定一个平面图G, 问G是哈密顿图吗?”是HC的子问题.SAT是MAX-SAT的子问题:取K=m.MAX-SAT: 如果已知P 的某个子问题P 是NP难的, 则P 也是NP限比特殊情况容易. 容易把P 多项式时难的一般情况间变换到P : 只需把

20、P 的实例I看作P特殊情况的实例, 即可得到P 对应的实例.定理7.11MAX-SAT是NP完全的.证 MAX-SAT的非多项式时间算法: 猜想一个赋值, 检查是否有K个简单析取式满足.要证SATpMAX-SAT. 任给SAT的实例I: 关于变元x1, x2,xn的合取范式F=C1C2Cm, 其中C1,C2,Cm是简单析取式, 对应的MAX-SAT的实例f(I): 简单析取式C1,C2,Cm和正整数K=m.3SAT3元合取范式: 每一个简单析取式恰好有3个文字的合取范式. 三元可满足性(3SAT): 任给一个3元合取范式F, 问F是可满足的吗?定理7.123SAT是NP完全的.显然 3SATN

21、P.证要证 SAT p3SAT. 任给一个合取范式F, 要构造对应的 3元合取范式F = f(F), 使得F是可满足的当且仅当F 是可满足的.设F =C1C2Cm , 对应的F =F1F2 Fm,Fj 是 对应Cj 的合取范式, 并且Cj是可满足的当且仅当 Fj是可满足的.证明(1) Cj=z1. 引入两个新变元yj1, yj2, 令Fj =(z1 yj1 yj2)(z1 yj1 yj2)(z1 yj1 yj2)(z1 yj1 yj2).(2) Cj=z1z2. 引入一个新变元yj, 令Fj = (z1 z2 yj)(z1 z2 yj).(3) Cj=z1z2z3. 令 Fj = Cj.(4)

22、 Cj=z1z2zk, k4. 引入k-3个新变元yj1, yj2,yj(k-3), 令Fj =(z1 z2 yj1)( yj1 z3 yj2) ( yj2 z4 yj3)( yj(k-4) zk-2 yj(k-3) ( yj(k-3) zk-1 zk). 设赋值 t 满足Cj, 则存在i使得 t(zi)=1. 当i=1或2时, 令t(yjs)=0 (1sk-3); 当i=k-1或k时, 令t(yjs)=1 (1sk-3); 当3ik-2时, 令t(yjs)=1(1si-2), t(yjs)=0(i-1sk-3). 则有,t(Fj )=1.证明反之, 设t(Fj)=1. 若t(yj1)=0,

23、则 t(z1 z2)=1; 若t(yj(k-3)=1, 则 t(zk-1zk)=1; 否则必有s(1sk-4)使得 t(yjs)=1且 t(yj(s+1)=0, 从而t(zs+2)=1. 总之, 都有t(Cj)=1.Fj 中简单析取式的个数不超过Cj中文字个数的4倍, 每个简单析取式有3个文字, 因此可以在|F|的多项式时间内构造出F.局部替换法 要证P1pP2. 当P2是P1的子问题或两者的结构相似时, 往往可以把P1的实例的每一个子结构替换成对应的P2实例的子结构.7.3.2 顶点覆盖、团与设无向图G=, V V. V 是G的一个顶点覆盖: G的每一条边都至少有一个顶点在V 中.团: 对任

24、意的u,vV 且uv, 都有(u,v)E.集: 对任意的u,vV , 都有(u,v)E.集引理7.13 对任意的无向图G=和子集V V, 下述命题是等价的:(1) V 是G的顶点覆盖,(2) V-V 是G的集,(3) V-V 是补图 Gc=的团.顶点覆盖、团与集顶点覆盖(VC): 任给一个无向图G=和非负整数K|V|,问G有顶点数不超过K的顶点覆盖吗?团: 任给一个无向图G=和非负整数J|V|, 问G有顶点数不小于J的团吗?集: 任给一个无向图G=和非负整数J|V|, 问G有顶点数不小于J的集吗?根据引理7.13, 很容易把这3个问题中的一个问题多项式时间变换到另一个问题.顶点覆盖定理7.14

25、 顶点覆盖是NP完全的.证: VC的非确定型多项式时间算法: 任意猜想一个子集VV, |V |K, 检查V 是否是一个顶点覆盖.要证3SATpVC. 任给变元x1, x2, xn的3元合取范式F=C1C2Cm, 其中Cj=zj1 zj2 zj3, zjk是某个xi或xi.如下构造VC的实例f(F):G=和K=n+2m, 其中V=V1V2,E=E1E2E3 ,V1= xi,xf| 1iniE1=( xi,xf )| 1ini证明V2=zjk, j| k=1,2,3, 1jm,E2=(zj1, j,zj2, j), (zj2, j,zj3, j), (zj3, j,zj1, j)| 1jm.E3=

26、(zjk, j, zjk )| k=1,2,3, 1jm这里设Cj=zj1 zj2 zj3, 当zjk=xi时, zjk =xi; 当zjk= xi时, zjk =xf .i例如, 对应F=(x1x2x3)(x1x2x3)的f(F):K=7, 图G如下x1xfxxfxxf12233x2, 2xf , 12xf , 33x1, 1x3, 1x1, 2证明要证F是可满足的G恰好有K个顶点的顶点覆盖.任何顶点覆盖V 在xi和xf中至少取一个, 在z ,j、z,j和ij1j2zj3 ,j中至少取2个,故V 至少有n+2m个顶点. 而K=n+2m, 故任何顶点数不超过K的顶点覆盖V 恰好包含K个顶点,

27、且在xi和 xf 中取一个, 这恰好对应对x 的赋值, 取x 对应t(x )=1,取xfiiiii对应t(xi)=0; 每个三角形的顶点zj1,j、zj2,j和zj3,j中取2个.设t是F的成真赋值, 对每一个i(1in), 若t(xi)=1, 则取xi; 若t(xi)=0, 则取xfi . 这n个顶点覆盖E1. 对每一个j(1jm), 由于t(Cj)=1, Cj至少有一个文字zjk的值为1. 于是, 从对应的三角形的顶点zjk,j引出的边(zjk,j, zjk )已被覆盖. 取该三角形的另外2个顶点, 这就覆盖了这个三角形的3条边和引出的另外2条边. 这样取到的n+2m个顶点是G的一个顶点覆

28、盖.证明反之, 设V V是G的一个顶点覆盖且| V |K=n+2m. 根据前面的分析, 每一对xi和 xf 中恰好有一个属于V, 每一个三角形恰i好有2个顶点属于V. 对每一个i(1in), 若xiV, 则令t(xi)=1;若 xf V, 则令t(x )=0. 对每一个j(1jm), 设z ,jV, 为了覆iijk盖边(zjk,j, zjk ), 必有 zjkV. 由于t(zjk)=1, 从而t(Cj)=1. 因此, t是F的成真赋值, 得证F是可满足的.G有2n+3m个顶点和n+6m条边, 显然能在多项式时间内构造G和K,定理7.15集和团是NP完全的.构件设计法构件设计法 定理7.14证明

29、中设计了2种“构件” 变元构件和简单析取式构件. 变元构件是一对顶点xi, xf及连接它们i的边; 简单析取式构件是三角形. 用这些构件及构件之间的连G, 每个构件各有其功能, 通过这种方式到达用VC的实接例表达3SAT的实例的目的.7.3.3 哈密顿回路与货郎问题有向哈密顿回路: 任给有向图D, 问:D中有哈密顿回路吗? 定理7.16 有向HC是NP完全的.证 要证3SATp有向HC. 任给变元x1, x2, xn的3元合取范式F=C1C2Cm, 其中Cj=zj1 zj2 zj3, 每个zjk是某个xi或xi.采用构件设计法构造有向图D. 表示变元xi的构件是一条由一串水平的顶点组成的链Li

30、, 相邻的两个顶点之间有一对方向相反的有向边. 只有两种可能的方式通过Li上的所有顶点从左到右或者从右到左通过Li上的所有顶点, 这恰好对应xi的值为1或者为0. 表示简单析取式Cj的构件是一个顶点cj.添加s0, s1, xn, 并通过它们把L1, L2, Ln连接起来.证明关键是两种构件之间的连接: 链Li有3m+1的顶点, 依次为di0, ai1, bi1, di1, ai2, bi2, di2, , aim, bim, dim. 对每一个Cj=zj1 zj2 zj3, 如果zjk=xi, 则添加和; 如果zjk=xi, 则添加 和.例如 C2=x1x3x4对应的连接证明设F是可满足的,

31、 t是F的成真赋值. 要根据t构造一条从s0到sn, 最后回到s0的哈密顿回路, 先暂时不考虑所有的cj.依次对i=1,2,n进行, 若t(xi)=1, 则从si-1到di0, 从左到右经过Li的所有顶点到达dim, 再到si; 若t(xi)=0, 则从si-1到dim, 从右到左经过Li 的所有顶点到达di0, 再到si. 最后, 从sn回到s0. 现在要将所有cj这条回路. 设Cj=zj1 zj2 zj3, 由于t(Cj)=1, 必有k(1k3)使得t(zjk)=1. 若zjk =xi, 则通路从左到右经过Li, 且有有向边和. 于是, 可以把cj插在aij与bij之间; 若zjk = x

32、i,则通路从右到左经过Li, 且有有向边和. 于是, 可以把cj插在bij与aij之间. 这就得到D中的一条哈密顿回路.证明反之, 设D有一条哈密顿回路P, P必须从sn到s0. 不妨设P从s0 开始到sn, 最后回到s0结束. 我们称上面构造的那种哈密顿回路是正常的, 即正常的回路从左到右或者从右到左通过每一条Li, 每一个cj插在某个aij和bij或者bij和aij之间. 如果P是正常的, 容易根据P规定F的一个成真赋值t: 若P从左到右通过Li,则令t(xi)=1; 若P从右到左通过Li, 则令t(xi)=0. 根据cj方式, 不难证明必有t(Cj)=1.Li的要证P一定是正常的. 假设

33、不然, 破坏正常性的惟一可能是P从某条链Ls上的顶点u到cj后没有回到同一条链中的顶点, 而是到另一条链Lt(st)中的顶点. 若u=asj, 由于bsj只与asj、 cj及dsj证明相邻, P已经过asj和cHC与TSP定理7.17HC是NP完全的.证 要证有向HC p HC. 任给一个有向图D=, 要构造无向图G=使D有哈密顿回路当且仅当G有哈密顿回路.把D的每一个顶点v替换成3个顶点vin, vmid和vout, 用边连接vin和vmid, vmid和vout. D的每条有向边在G中换成( uout, vin).V = vin, vmid, vout | vV ,E =( uout, v

34、in) | E(vin,vmid),( vmid,vout) | vV .即定理17.18TSP是NP完全的.7.3.4 恰好覆盖恰好覆盖: 给定有穷集A=a1, a2, an和A的子集的集合W=S1, S2, S m, 问: 存在子集UW使得U中的子集都是不相交的且它们的并集等于A? 称W这样的子集U是A的恰好覆盖. 例如, 设A=1,2,3,4,5, S1=1,2, S2=1,3,4, S3=2,4, S4=2,5,则 S2, S4是A的恰好覆盖. 若把S4改为S4=3,5, 则不存在A的恰好覆盖.定理7.19 恰好覆盖是NP完全的.证明证 要证可满足性p恰好覆盖. 任给变元x1, x2,

35、 xn的合取范式F=C1C2Cm, 其中 Cj= z j1 z j 2 L, z js. 取jA=x1, x2, xn,C1,C2,Cm pjt | 1tsj, 1jm,其中pjt代表Cj中的文字zjt.W包含下述子集:TT = x , p | z =x , 1ts , 1jm,1in,iijtjtijTF = x , p | z =x , 1ts , 1jm,1in,iijtjtijCjt =Cj, pjt, 1tsj, 1jm. pjt , 1tsj, 1jm.要证F是可满足的当且仅当W含有A的恰好覆盖. 设UW是A的恰好覆盖, 对每一个i, 若 TTi U, 则令t(xi)=1;若TF

36、U, 则令it(xi)=0. 对每一个j, 必有一个Cjt=Cj, pjtU.zjt=xi或xi . 若TTU, 则pjtTT, 从而z =x . 有t(x )=1, 故t满足C .iijtiij证明若TFiU, 则pjtTFi , 从而zjt =xi. 有t(xi)=0, 故t也满足Cj. 得证t是F的成真赋值.反之, 设t是F的成真赋值. 对每一个i, 若t(xi)=1, 则U包含TTi; 若t(xi)=0, 则U包含TFi . 对每一个j, 由于t满足Cj, Cj必有一个文字zjt使得t(zjt)=1, 从而U中现有的子集不包含pjt. 于是, 可以把Cjt加入U. 至此, U覆盖了所有

37、的xi和Cj, 以及部分pjt. 最后, 把那些尚未被覆盖的pjt的恰好覆盖.的单元子集pjt加入U, 即可得到A由于F中的文字数不超过mn, 故|A|n+m+mn, W中的子集数不超过2n+2mn, 每个子集的大小不超过n+1.而且构造很简单, 显然可以在多项式时间内完成.7.3.5 子集和,背包,装箱与双机调度子集和: 给定正整数集合X=x1, x2, xn及正整数N, 问存在X的子集T, 使得T中的元和等于N吗?装箱: 给定n件物品, 物品j的重量为正整数wj, 1jn, 以及箱子数K. 规定每只箱子装入物品的总重量不超过正整数B, 问能用K只箱子装入所有的物品吗?双机调度: 有2台和n项作业J1, J2, Jn, 这2台完全相同, 每一项作业可以在任一台上进行, 没有先后顺序,作业Ji的处理时间为ti, 1in, 截止时间为D, 所有ti和D都是正整数, 问能把n项作业分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论