首页 NP完全问题

NP完全问题

举报
开通vip

NP完全问题null顾 小 丰顾 小 丰Email:guxf@uestc.edu.cn *第7章 NP完全问题 第7章 NP完全问题 判定问题、语言和编 码 多项式变换与可满足 性问题 非确定型图灵机 NP类NP完全问题与Cook 定理 强NP完全问题 Co-NP类问题 NP困难问题 空间复杂性简介 序序 对一个已确定是可计算的问题,人们总试图寻求实现它的最优算法。然而对有些问题,这个工作难度很大,目前还不能做到这点。 目前人们已经证明了一些问题,它们的时间复杂性是多项式阶 的,这只须设计一个实现它的时间...

NP完全问题
null顾 小 丰顾 小 丰Email:guxf@uestc.edu.cn *第7章 NP完全问题 第7章 NP完全问题 判定问题、语言和编 码 多项式变换与可满足 性问题 非确定型图灵机 NP类NP完全问题与Cook 定理 强NP完全问题 Co-NP类问题 NP困难问题 空间复杂性简介 序序 对一个已确定是可计算的问题,人们总试图寻求实现它的最优算法。然而对有些问题,这个工作难度很大,目前还不能做到这点。 目前人们已经证明了一些问题,它们的时间复杂性是多项式阶 的,这只须设计一个实现它的时间复杂性是多项式阶的算法即可,例 如分类(又称排序)问题。这样一类问题将被称之为P类问题。还有一 类问题,人们已经设计出实现它的时间复杂性为指数阶的算法,并且 已证明该问题不存在多项式阶的算法,例如梵塔问题;这样一类问题 人们称之为顽型问题。但是有这样一类问题,人们目前已设计的实现 它的算法其时间复杂性为指数阶的,但还不能肯定它有或没有多项式 阶的算法,例如第6章讨论的当m>2时任意图的m-可着色问题。为研 究这类问题,人们又设计一种称为非确定图灵机的计算模型,这些问 题对应一个非确定的图灵机,而且可以在多项式时间内完成计算。人 们称这类问题为NP问题,NP是Nondeterministic Polynomial的缩 写,即非确定的多项式的意思。null 1971年S. Cook发 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 了“The Complexity of Theorem Proving Procedures”这篇著名论文,1972年R. Karp发表了“Reducibilty Among Combinatorial Prob1ems”,从此奠定了NP完全理论的基础。NP完全理论指出在NP类中有一些问题具有以下性质:若其中一个问题获得多项式算法,则这一类问题就全部获得了多项式算法;反之,若能证明其中一个问题是多项式时间内不可解的,则这-类问题就全部是多项式时间内不可解的。这类问题将称之为NP完全问题。NP完全理论不打算找出这一类问题的算法,仅仅着眼于证明这一类问题的等价性,即证明它们的难度相当。 NP完全理论还很年轻,有许多问题等待人们研究。例如,“NP=P”还是相反“P是NP的真子集”。这个问题是当代计算机科学中的一大难题。 7.1 判定问题、语言和编码 7.1 判定问题、语言和编码 我们讨论的几种计算模型,都可以认为是语言的接受器或函数的计算器。 为讨论问题简明,本章只讨论语言的识别问题。这是因为象图论、数论、逻辑和规划中的种种问题常常可以表示为语言的识别问题。其它的计算问题往往都有对应的判定问题。这种问题只有两个可能的解,或者回答“是”,或者回答“否”。判定问题判定问题 定义7-1 判定问题是由实数集合D和“是”的实例子集YD组成。 但是,我们感兴趣的多数判定问题具有相当数量的附加结构,在描述判定问题时,要强调这些附加结构。我们用来规定问题的标准 格式 pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载 由两部分组成。第一部分用各种分量,如集合、图、函数、数字等规定该问题的一般实例。第二部分陈述根据这个一般实例提出的是-否问题。规定D和Y的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 是明显的,一个实例属于D当且仅当它可以通过用规定类型的具体对象替换一般实例中的所有分量得到,而这个实例属于Y当且仅当具体到这个实例时,对所陈述的问题的回答为“是”。货郎担问题 货郎担问题 实例:一个有穷的“城市”集合C={c1,c2,…,cm},对于每一对城市ci,cj∈C有“距离”d(ci,cj)∈Z+,以及界限B∈Z+(这里Z+表示正整数集合)。 问:是否有经过C中所有城市的“旅行路线”,其全长不超过B,即是否有C的一个排列次序使得语言语言 我们只考虑判定问题的原因是因为它们有一个非常自然的、适合在数学上精确的计算理论中研究的形式对应物。这个对应物叫做“语言”,其定义如下: 定义7-2 对于任意有穷符号集合,我们用*表示所有的有穷字符串组成的集合。如果L是*的一个子集,我们称L是字母表上的语言。 例如,如果={0,1},那么*由空字符串“”,字符串0、1、00、01、10、11、000、001以及所有其它0和1的有穷字符串组成。于是{01,001,111,1101010}是{0,1}上的一个语言,由所有完全平方数的二进制表示组成的集合以及集合{0,1}*本身也都是{0,1}上的语言。编码编码 判定问题的每一实例可以编码成一个符号串,这样就将判定问题重新描述为一个语言的识别问题。这个语言必须由对应的判定问题中回答“是”的一切实例编码的串组成。 在选择编码方法时,必须慎重,因为一个问题的复杂性可能与编码的方法有关。由于问题的难度在本质上不依赖于用来决定时间复杂性的具体编码方法和计算机模型,因此很难想象一个“合理的”编码方法与标准的编码方法之间的差异超过多项式。编码的条件编码的条件实例I的编码必须是简洁的,不能“填塞”不必要的信息或符号; I中出现的数字必须用十进制(或二进制、八进制、以及以任何不等于1的数为基的进制)表示。 虽然不可能把我们在这里用“合理的”这个词表示的含义形式化,但是下述两个条件抓住了这个概念的主要内容:编码的标准编码的标准 如果我们规定只使用满足这些条件的编码方法,那么具体使用什么编码方法将不会影响关于一个给定问题的难度的判断。为此,我们对问题的标准表示约定如下: 整数用十进制表示; 用十进制数1,2,...,n表示一个图的n个节点,用(i1,i2)表示图中的边,其中i1,i2分别是该边的两个端点; 具有n个命题变元的布尔表达式由*(与),+(或),¬(非)与整数1,2,...,n(命题变元)所组成的字符串表示,其中*可以省略(但不引起混淆),必要时可以加括号。例如,布尔表达式(P1+P2)*P3可以写成:(1+2)3。null 当把整数及其它符号都采用二进制编码后,一个问题的判定过程就可以形式地描述如下: 已知 L⊆{0,1}*,对于x∈{0,1}*,若x∈L则回答“是”;若x∉L,则回答“非”。 这里,{0,1}*是指由有限个0和1组成的串的集合。 再次重申,我们的讨论仅限于语言的识别。7.2 多项式变换与可满足性问题 7.2 多项式变换与可满足性问题 定义7-3 P≜{L⊂{0,1}*|L为确定图灵机在多项式时间内所接受}。 该怎义中符号“≜”意义为“定义为”。 定义7-4 π≜{f|f:{0,1}*→{0,1}*且f可在多项式时间内完成}。 这个定义是说,π表示可在多项式时间内完成{0,1}*→{0,1}*这一转换的集合。多项式变换多项式变换 定义7-5 若A⊆{0,1}*,B⊆{0,1}*且存在f∈π使得 x∈A ⇒ f(x)∈B 成立,则称A可多项式变换于B,记作 ,或简称A变换为B。 符号 的意思是:存在一台确定图灵机M,它将可以A在多项式时间内转换为B。引理7-1引理7-1引理7-1 若 ,B∈P,则A∈P。 证明: x∈A ⇒ f(x)∈B f∈π,所以由f产生的输出也必有多项式界,设为多项式g。但B也有多项式界,设为h。对于输入x,先作用以f,接着解属于B的问题,总共所需时间: g(|x|)+h(g(|x|)) 显然也是多项式,所以A∈P,这个过程可以用下图表示:问题A的输入x问题B的输入最长为(g(|x|))f转换至多在g(|x|)内将x换成f(x)多项式h(g(|x|))内求解B输出问题B的解可满足性问题 可满足性问题 实例:集合L={A,B,...,¬A,¬B,...},c1,c2,...,ck是L的有限子集,称为子句。每个ci中不出现L中的互补对(即x∈cI则¬x∉ci),i=1,2,...,k。 问:是否存在一集合S⊆L,满足以下两个条件: s中不包含互补对; 。 null 从数理逻辑看来,设U={u1,u2,…,um}是一个布尔变量集合。关于U的真值赋值是一个函数t:U→{T,F}。如果t(u)=T,我们称u在t下取“真值”;如果t(u)=F,我们称u取“假值”。如果u是U中的一个变量,那么u和¬u是U上的文字。文字u在t下取真值当且仅当变量u在t下取真值;文字¬u取真值当且仅当变量u取假值。 U上的子句是U上的一个文字集合,例如,u1∨¬u2 ∨u8。它表示这些文字的析取,对于U上的一个真值赋值,这个真值赋值满足它当且仅当它至少有一个元素在这个赋值下取真值。除去t(u1)=F,t(u2)=T和t(u8)=F之外,t满足上面那个子句。U上的子句类C是可满足的当且仅当存在关于U的一个真值赋值同时满足C中所有子句。我们称这样一个真值赋值是满足C的真值赋值。 命题逻辑的可满足性问题 命题逻辑的可满足性问题 实例:布尔变量集合U以及U上的子句类C。 问:是否存在满足C的真值赋值? 例如,U={u1,u2}和C={u1∨¬u2,¬u1∨u2}是SAT的一个实例,对这个实例的回答为“是”,t(u1)=t(u2)=T给出一个满足的真值赋值。如果用C’={u1∨u2,u1∨¬u2, ¬u1}代替C也给出一个实例,对这个实例的回答为“否”,C'不是可满足的。 可满足性问题常用符号SAT表示,它是Satisfiability的缩写。图的m-可着色问题 图的m-可着色问题 实例:无向连通图G-(V,E)和m种不同的颜色,用这些颜色为G的各节点着色,每个节点着一色。 问:是否有使得G中任何一条边的两个节点的颜色不同的着色法。 例7-1 图的m-可着色问题可以多项式变换为SAT。 证明:已知图G的节点数为n,c1,c2,...,cm表示m种颜色,设null 因此,G的每一种着色方案对应于给mn个变量{Pij}的一种赋值。但是必须满足条件: (1)每个节点至少有一种颜色,故对任一i,有子句Pi1∨Pi2∨...∨Pim; (2)相邻的节点着不同颜色,故对图G的任意一对相邻节点(r,s),必有¬Prj∨¬Psj,1≤j≤m。 于是图G可m-着色的充要条件是可对变量Pij赋值i=1,2,...,n,j=1,2,...,m,使得由(1)和(2)构成的所有子句取值为T。 转换步骤(1),(2)所需的时间有多项式的界。■哈密顿回路问题(HC)哈密顿回路问题(HC) 实例:图G=(V,E)。 问:G是否包含一条哈密顿回路,即是否有G的节点排列次序使得(vn,v1)∈E和(vI,vi+1)∈E,1≤i<n?这里n=|V|。 例7-2 哈密顿回路问题(HC)可以多项式变换为货郎担问题(TS)。 证明:函数f的定义十分简单。设G=为给定的HC的实例,|V|=n。对应的TS的实例有一个等于V的城市集合C,对任意两个城市i,j,若(i,j)∈E,则规定d(i,j)=1,否则d(i,j)=2。令界限B=|V|。null 容易(非形式地)看到,能够用一个多项式时间算法计算这个函数f。对于 个规定的耗费d(i,j),只需要检查(i,j)是否是G中的一条边,所以f∈π。 假设(1,2,...,n)是G中的一条哈密顿回路,那么(1,2,...,n)也是f(G)中的一条周游路线,并且这条周游路线的耗费为B=n,这是因为在这条周游路线中经过的城市之间每一段耗费对应G中一条边,从而耗费为1。反之,假设(1,2,...,n)是f(G)中的一条总耗费为不超过B的周游路线。因为任意两个城市之间的耗费不是1就是2,而在计算周游路线的总耗费时恰好是n个这样的耗费相加,所以根据B=n,每一对相继访问的城市间的耗费恰好为1。由的f(G)定义,得到(i,i+1),1≤i<n和(n,1)都是G的边,从而(1,2,...,n)是G的一条哈密顿回路。■引理7-2引理7-2若L1 L2,L2 L3,则L1 L3。7.3 非确定型图灵机 7.3 非确定型图灵机 为讨论NP问题,再引进一种虚设的计算模型,即非确定型图灵机。 定义7-6 一个k-带非确定型图灵机(NDTM)M可由下述7元组确定: M= 其中Q,T,I,b,q0和qr的定义与确定型图灵机相同(参看第5章定义5-3),而δ是: Q×Tk→{A|A⊆Q×(T×{L,R,S})k}。null 定义指出,非确定型图灵机,对于由一个状态与k个磁带符号所给定的序组,δ确定的下一动作不是唯一确定的,它将要在一个有穷集合A中选择(猜测),它在同一时刻里可以做多种运算。但要注意,一个NDTM机M只能在A中任意选择其下一个动作,然而不能选A以外的动作。 假定(q',(a'1,d'1),(a'2,d'2),...,(a'k,d'k))∈δ(q,a1,a2,...,ak),并且非确定型图灵机M正处在状态q,且第i个磁头(1≤i≤k)正扫描着第i条磁带上符号ai的某一方格,则机器的下一动作可以进入状态q',并把ai变为a'i,而各磁头的动作由d'i指定。图灵机的格局图灵机的格局 定义7-7 称D=为k-带图灵机的一个格局,若每一个ai形为xqy,其中xy是在当前状态q下第i条带上的符号串(不计右端的空白符),q为机M的当前状态,q后面的第一个符号是M在第i条带的带头所扫描的方格符号。 若机M是确定型的且当前格局D不处于停机状态,则可由下一动作函数δ唯一地确定下一个格局D',并记为D├─MD',称为D转到D'。 对于非确定型机M,从当前格局D可导致多于一个的下一格局(但仅有穷个),若D‘是其中之一,则记为D├─MD’(或D├─D‘,若不引起混乱)。 若对某个k>1,有c1├─c2├─…├─ck或cl=ck,则可记作c1├─*ck。非确定型图灵机的作用非确定型图灵机的作用 非确定型图灵机M可以用作一种语言L的识别器。对于语言L,我们可以构造一台非确定型图灵机M,让机器的带符包括该语言的字母表(输入字母表)以及伪空白符b和其它一些特定符号(辅助符号)。机器处于开始状态时,将输入w打印在第一条磁带的最左面部分上,此外全为空白,而其它的磁带此时全为空白;把各条磁带的磁头放在该磁带之最左一格上。称输入w被这台机器接受,仅当: ├* 其中a1(因此一切a2,...,ak)有停机状态qr于其中。非确定型图灵机NDTM接受语言L 非确定型图灵机NDTM接受语言L 定义7-8 对语言L,按上述方法构成的非确定型图灵机NDTM接受L,当且仅当对w∈L,NDTM可接受w,对w∉L,NDTM陷入不停机状态。非确定型图灵机NDTM接受语言L,记作L(NDTM)。例7-3 等分划问题例7-3 等分划问题试设计一台NDTM,它接受了形如: 的字,其中i1,i2,...,ik为非负整数满足下述要求:有I⊆{1, 2,...,k}使 换言之,字w被接受当且仅当用字w所表现的数列i1,i2,...,ik,可以被分割为两个子序列,各子序列的数之和相等。这个问题是所谓等分划问题,已经知道,它是一个NP完全问题。 null 下面设计一台三带NDTM来接受所述的语言。这台NDTM的工作情况是:对输入磁带从左到右进行扫描,每次搜索全为0的一个磁带段0ij,并且不确定地在第2或第3磁带上增补选ij个0;当扫描到输入末端时,机器便核对第2磁带与第3磁带上0的个数,若相等则接受(注意,可能有许多情况导向了不相等,但我们关心的是:有一种选择导致相等)。设NDTM=<{q0,q1,q2,q3,q4,q5},{0,1,b,$},{0,1},δ,b,q0, q5>,下一动作函数δ如表7-1所示。 下面给该机器输入1010010,我们从许多可能选择的计算中,列出两个可能的计算,其中的第一个导向了对该输入是接受的,而第二个计算不接受该输入。因此,按我们的定义,该机器接受1010010。表7-1 例7-3中非确定型图灵机M的下移函数 表7-1 例7-3中非确定型图灵机M的下移函数 null ├─ ├─<1q2010010,$q2,$q2> ├─<10q210010,$0q2,$q2> ├─<10q110010,$0q1,$q1> ├─<101q30010,$0q3,$q3> ├─<1010q3010,$0q3,$0q3> ├─<10100q310,$0q3,$00q3> ├─<10100q110,$0q1,$00q1> ├─<101001q20,$0q2,$00q2> ├─<1010010q2,$00q2,$00q2> ├─<1010010q4,$0q40,$0q40> ├─<1010010q4,$q400,$q400> ├─<1010010q4,q4$00,q4$00> ├─<1010010q5,q5$00,q5$00> 接受。 ├─ ├─<1q3010010,$q3,$q3> ├─<10q310010,$q3,$0q3>  ├─<10q110010,$q1,$0q1> ├─<101q30010,$q3,$0q3> ├─<1010q30l0,$q3,$00q3> ├─<10100q310,$q3,$000q3> ├─<10100q110,$q1,$000q1> ├─<101001q30,$q3,$000q3> ├─<1010010q3,$q3,$0000q3> ├─<1010010q4,q4$,$000q40> 停止,因无下一格局。NDTM的时空复杂性NDTM的时空复杂性 定义7-9 称一台NDTM机M的时间复杂性是T(n),假若对于任何长为n的可接受的输入w,都存在着一条导向接受指令的计算路,该计算路至多有T(n)步。称M的空间复杂性是S(n),假若对于上述输入w,有一条导向接受指令的计算路,于其中在每一条带上至多有S(n)个相异的磁带方格被扫描过。例7-3的复杂性例7-3的复杂性 例7-4 对于例7-3所设计的机器M,其时间复杂性为2n+2,而空间复杂性为n+1。对所述的空间复杂性是显然的,为了看出时间复杂性为2n+2,只须注意:当对输入扫描结束(共用n+1步)后,要回头对2、3磁带进行比较(不超过n+1步)。用DTM模拟NDTM 用DTM模拟NDTM 原则上,对于每一台NDTM机,都可以设计一台DTM机来模拟它,使得两者皆接受了同一语言。然而DTM的时间耗费要大得多,可以证明,这种模拟的时间耗费下界是指数型的。确切地说,设T(n)是“时间可构造的”函数(即存在一台DTM机,给出该机的任一输入n,机器将在第T(n)步停机),则对每一台为T(n)时间囿界的NDTM机M,可以找到一个常数c>l和一台DTM机M'使L(M)=L(M')且M'的时间复杂性为O(cT(n))。 为了证明这个结果,可以用穷举算法来构造一台模拟M的DTM机M'。首先,可以找到常数d,使得NDTM机M在任何情况下的下一动作null的选择可能不超过d个。因此机器M的长度不超过T(n)的任何一条计算路都可用字母表Σ={0,1,...,dn-1}的长不超过T(n)的一个字来表现,这些字至多为(d+1)T(n)个。事实上,只有dT(n)个可将其按字母次序排列。对于长为n的输入x,DTM机M'模拟NDTM如下,依次模拟上述w∈Σ*为σw,(即M'在这次模拟中的计算路),如M中不存在如w所示的计算路或者w不是M接受x的计算路,则M'去模拟w的下一个次序的字母所示的计算路。注意,M'在每次模拟时要耗时O(T(n)),于是整个模拟至多耗费时间O(T(n)(d+1)T(n))(事实上为T(n)dT(n))取c=2(d+1)即可。细节的叙述要用到T(n)的时间可构造性(因模拟w到长为T(n)止),这里就不再叙述了。这样我们就证了下述定理: 定理7-1定理7-1如果取上述非确定型图灵机类为计算模型,则这个计算模型同已知的种种计算模型等价。 对于任一台NDTM时间囿界为T(n)且T(n)为时间可构造的机器M,都可以找到常数c>1和DTM机M'使L(M)=L(M')且M'的时间下限为O(cT(n))。 然而,我们不知道有一个为NDTM在时间复杂性T(n) 里接受的语言L,一切DTM在时间复杂度T(n)都不能接受 它。定理7-2定理7-2 若NDTM机M的空间复杂性为S(n),且S(n)使空间可构造的,则存在一台DTM机M',它的空间复杂性是O(S3(n))且L(M')=L(M)。 所谓一个函数S(n)是空间可构造的,如果存在一台DTM机M,当给它一个长度为n的输入,M机将在它的一条带的第S(n)个方格上放置一个特殊的标记符号并且对任何带不会使用多于S(n)个方格。绝大多数函数,例如多项式、2n、n!、⌈n1og(n+1)⌉都是空间可构造的。定理7-3定理7-3 设语言L可以为时间复杂性为T(n)的k-带NDTM机所接受,则L也可以被一台时间复杂性为0(T2(n))的单带NDTM机所接受。 这个定理使我们在讨论与非确定型图灵机有关问题时,可以只对单带机而言,于是便简单一些。7.4 NP类 7.4 NP类 有了非确定型图灵机这一计算模型,这里将讨论一个新的语言类NP类问题。 定义7-10 NP≜{L⊂{0,1}*|L为非确定图灵机在多项式时间内所接受}。 因为确定型图灵机是非确定型图灵机的特殊情况,于是有: P⊆NP 目前人们尚未证明P=NP,或P是NP的真子集。例7-5例7-5无向图的团集问题属于NP类。 团集问题定义如下: 实例:图G=(V,E)和正整数J≤|v|。 问:G是否包含大小不小于J的团,即是否有子集V'V,使得|V'|≥J并且V'中每两个节点都由E中的一条边连接着。 null 首先对团集问题编码。设G=(V,E),V={1,2,...,n},则表现团来问题的语言L由形如: k(i1,j1)(i2,j2)...(im,jm) 组成,这里k≥2,ik,jk∈V且(ik,jk)∈E,k=1,2,...,m,如图7.4-1所示。 当k=3,可编码为: 3(1,2)(1,4)(2,3)(2,4)(3,4)(3,5)(4,5)。 当然可以用二进制编码,因为对于任意两种编码语言,可以在多项式时间内互相解释。 如下设计工台NDTM机M,输入长为n的串w: k(i1,j1)(i2,j2)...(im,jm)null 该机可在O(n3)时间内认知w,其构成是: (1)若k>n,机M计算1步便停机在拒绝指令上. (2)k≤n,机M在G的一切k点子集中猜测(选择)一个k点团集,并对之进行验证。确切地悦,就是要验证所有猜测的k点子图的任何两个相异点间均有一条边连接。注意到一个k点团集共有:条边,每验证一边可从头到尾看完字w(长度为n),故共用O(n3)步。 注意:这台NDTM的能力是它能同时“并行”地对一切可能的k点子图进行验证。若有k点团集存在,则接受w,否则拒绝,而时间复杂性仅为O(n3)。 例7-6例7-6命题逻辑的可满足问题是一个NP问题。 null 首先把布尔式写成标准编码,例如:(Pl+P2)*Ps写成(1+2)3。 设L表示命题逻辑的可满足问题的语言,要证明L∈NP为此,可构造一台NDTM机M,其时间复杂性为O(n2)且L(M)=L。输入w的长为n: A1,A2,...,Am (1≤m≤n) 其中每一Ai为a1+a2+...+ak(1≤k≤n)而每一ai为j或 j。NDTM机M猜测(选择)一个满足指派(不超过2n种)。 只要有一个Ai=0,则拒绝w;当所有Ai=1,则接受w。而对每一个Ai,Ai=0 ⇔ 一切aj=0。对每一Ai核对是否为0要用O(n)步,于是核对是否w=0要用O(n2)步。这里之所以在步可以接受或拒绝,使因为我们使用了对于一切指派“并行”地处理这一不确定的过程。定理7-4定理7-4(1) SAT; (2) 团集问题; (3) 节点覆盖问题(VC); (4) 哈密顿回路问题(HC); (5) 图的m-可着色问题;(6) 回路节点集问题; (7) 回路边集问题; (8) 有向图哈密顿回路问题; (9) 集合覆盖问题; (10) 恰当覆盖问题;下面各问题都在NP中。节点覆盖问题(VC)节点覆盖问题(VC)实例:图G=(V,E)和正整数k≤|v|。 问:G是否有大小不超过k的节点覆盖,即是否有子集V使 得|V'|≤k并且对每一条边(u,v)∈E,u和v中至少有一个属于V'?回路节点集问题 实例:有向图G=(V,E)和正整数k≤|v|。 问:G是否有元素个数为k的回路节点集,即是否有S⊆V, |S|≤k,使得G的每一条回路都有一个点在S中?回路边集问题 回路边集问题 实例:向图G=(V,E)和正整数k≤|E|。 问:G是否有元素个数为k的回路边集,即是否有F⊆E, |F|≤k,使得G的每一条回路都有一条边在F中?有向图哈密顿回路问题 实例:有向图G=(V,E)。 问:G是否包含一条哈密顿回路,即是否有G的节点排列 次序使得∈E和∈E,1≤i<n?这里n=|V|。集合覆盖问题 集合覆盖问题 实例:一族(有穷)集合S1,S2,...,Sn及正整数k≤n。 问:是否存在子族Si1,Si2,...,Sik使得实例:一族(有穷)集合S1,S2,...,Sn及正整数m≤n。 问:是否存在子族Si1,Si2,...,Sim使得恰当覆盖问题 且Sij∩sim=Φ,j≠m7.5 NP完全问题与Cook定理 7.5 NP完全问题与Cook定理 在NP类问题中,Cook首先发现可满足问题具有特殊的重要性质,之后人们又证明了有很多NP类中的问题,也具有同样的性质,于是形成了NP完全问题类。 NP完全的定义 NP完全的定义 定义7-11 称L0∈NP为NP—完全的(简称NPC),如果下述条件能满足:对于认识L0的时间复杂性为T(n)≥n的任一个确定算法,那么对每一个L∈NP都能找到一个时间复杂性为T(PL(n))的确定算法认识L,这里PL(n)是依赖于L的一个确定多项式。 上述定义有时称为广义NP完全的定义。在NP完全理论中常用以下另一种关于NP完全的定义,称为狭义NP完全。 定义7-12 称L0∈NP是NP完全的,如果对一切L∈NP都有 。 定理7-5定理7-5若L0是狭义NP完全的,则L0是广义NP完全的。 证明:设L0为某一确定型图灵机A在时间T(n)≥n内所认识,不妨设T(n)为递增的。因L0为狭义NP完全,于是存在确定型图灵机M,它可以把L∈NP在多项式P(n)内将L翻译成L0。 构成一台新机器M*如下:输入w∈L,先用M将w译成w0∈L0(时间耗费界为P(|w|)),再将w0输入A并计算(时间花费界为T(|w0|))。因为M机输出w0时至少用过|w0|个磁带方格,故对应的计算步数不能少于|w0|,于是 |w0|≤P(|w|)。null 总之,新机M*认识L的时间上界应满足: P(|w|)+T(|w0|)≤P(|w|)+T(P(|w|)) 此步因为T(n)是递增函数。再由T(n)≥n,可得: P(|w|)≤T(P(|w|)) 综上可得: P(|w|)+T(|w0|)≤2T(P(|w|))≤T(2P(|w|)) 即M*机可以在T(PL(n))内认识L,这里PL(n)=2P(n),是与L有关的一个多项式,于是由定义7-11,L0是NP完全的。■ 但是以上定理7-5之逆,至今还没有肯定或否定的证明。 定理7-6定理7-6 我们以后谈到NP完全的,都是指定义7.5-2给出的狭义NP完全,由以上定理,当然也是广义NP完全的。 由NP完全的问题的定义,显然有: 定理7-6 设L0为任一NP完全的语言,那么 L0∈P ⇔ P=NP 这个定理恰说明NP完全理论的重要性。人们只须对具体某个NP完全的问题深入研究,如果能肯定它是P类,则所有NP问题就都属于P类;反之如果能肯定它不是P类,则NP类就是P类的真扩集(或说P类是NP类的真子集)。 NP完全的问题存在吗?Cook在1971年首先回答了这个问题。Cook定理Cook定理 证明:例7-6已证明了SAT∈NP,故只须证明对每一个语言L∈NP, 。换言之,对于一台在多项式界时间内接受L的NDTM机M,对M的一个输入w,都有一个(依赖于L的)多项式界的算法来构成一个布尔式w0,使得w0可满足当且仅当M接受w,由定理7-3,我们可假定M是单带的。假定M有状态q1,q2,...,qs,磁带符号x1,x2,...,xs,M的时间复杂性为P(n)。 若给机M输入长为n的w,如M接受w,则M在P(n)步内接受停机,故至少存在一条计算路Q0 ⊢ Ql ⊢ ... ⊢ Qg,这里Q0是开始格局,Qg为接受格局,g≤P(n)。定理7-7 命题逻辑的可满足问题是NP完全的。null 我们的目的是构造一个布尔式w0,它能“模拟”机M中所能进入的格局序列:即w0的变元的每个真(1)假(0)指派表现了M的至多一条计算路(也可能所表现的不是M的合法的计算路),w0取值1当且仅当指派表现了导致接受格局的计算路Q0,Q1,...,Qg。换言之,w0可满足当且仅当M接受w。我们先叙述一下w0中要用到的命题交元。 (1) C取值1当且仅当机M在瞬时t即第t步的第i个磁带方格内有符号xj,其中1≤i≤P(n)(这是因为机M的时间复杂性为P(n),则磁带复杂性≤P(n)),1≤j≤m,0≤t≤P(n)。 (2) s取值1当且仅当机M在瞬时t处于状态qk,这里1≤k≤s,0≤t≤P(n)。 (3) H取值1当且仅当在瞬时t磁头扫描着第i个磁带方格,这里1≤i≤P(n),0≤t≤P(n)。null 上述命题变元共有m⋅P(n)2+s⋅P(n)+P2(n)个,故阶为O(P2(n))。如果要用二进制数来编码表示这些命题变元,则至多用到Clog2n位的二进数即可,C为与P有关的常数(事实上,设P(n)为P0次多项式,则O(P2(n))=O(n2P0),命C=2P0+1,则Clog2n位二进数可表示2Clog2n=nC=n2P0+1个十进制数)。 但我们下面仍用一个单独的符号表示一个命题变元。这样做将失去因子Clog2n,但这并不影响我们对问题的讨论,因为我们只需要一个多项式时间囿界的函数。 我们要以上述命题变元来构成w0,在构造中要用到一个谓词U(x1,x2,...,xr),它取值为1当x1,x2,...,xr中恰有一个取值为1,U可表示为:(7-1)null这个式子中的第一个因子说xi中至少有一个取值1,其余的r(r-1)/2个因子说没有两个相异的xi同时取值为1。注意,U的长度是: (r+(r-1))+5r(r-1)/2 即O(r2)(严格地说,因一个命题变元符号至多O(Clogr)二进制码表示,故U的长度至多为O(r3))。 若M接受w,则存在一个接受w的计算路Q0,Q1,...,Qg。为使讨论简单,可不失一般地假定:不管M是否已进入接受格局,我们都让M继续“计算”下去,但对于已进入接受格局时,其下面的“计算”将不移动磁头也不改变已进入的接受状态,直到第P(n)个格局止。 下面,可用7个式子A,B,...,G来构成w0,它判断了:Q0,Q1,...,Qg是一条接受w的计算路,这里每个Qi长为P(n),g=P(n)。null 判断Q0,Q1,...,QP(n)为一条接受w的计算路等同于判断下述7条事实: (1) 在每个格局Qi中,磁头只扫描着一个磁带方格。 (2) 每个格局Qi中的每一个磁带方格内只有一个磁带符号。 (3) 每个格局Qi中只有一个状态。 (4) 在该计算路中,从一格局到它的下一格局时,至多只能修改上一格局中被扫描方格内的符号。 (5) 该计算路各格局的状态,磁头位置以及磁带方格内的符号的变化符合M的下一动作函数的要求。 (6) Q0是机M在输入w0时的开始格局。 (7) 该计算路的最后一个格局的状态是停机状态。null 现在来构成与判断(1)——(7)相应的布尔表达式A——G。 (1) 令At=∪(H<1,t>,H<2,t>,...,H) At的意思是说:在瞬时t,M的磁头恰好扫描着某一磁带方格。则置A=A0A1...AP(n)表述了上述判断(1)。 注意:因用一个符号表示一个命题交元H,故A的长为O(P3(n)),而且可在O(P3(n))时间内(用一台DTM机)写下这个式子。 (2) 令Bit=∪(C,C,...,C) 它的意思是说:在瞬时t,第i个磁带方格内只有一个符号。则置表述了上面判断(2)。 注意:因m为机M的磁带符号数为常数,故Bit与n无关。因而B的长是0(P2(n))。null(3) 令 因S为机M的状态数是常数,故C的长为O(P(n))。其中式子(C<1,j,t>≡C)+H的意思是: 在瞬时t,磁头正扫描着第i个磁带方格(即H),或者 在瞬时t+1,第i个方格中的符号仍是瞬时t时的符号xj。 (4) 下面的D表述了在任一瞬时t,至多可以改变一个磁带方格中的内容: 注意:1≤i≤P(n),1≤j≤m且1≤t≤P(n),m为常量,故D的长为0(P2(n))。null(5) 令 其中Σ中的l遍及于当机器M扫描着xj且处于状态qk时所有可能的下一动作,即是说,对每一∈δ(qk,xj),有一l值使xjl=x,qkl=q且il为i-1,i,i+1分别以d为L,S或R而定。δ为机M的下一动作函数。 注意:因为M是不确定的,故可能有多于一个的,但在任何情况下却只能有至多某一有穷常数C个。故Eijkt的长被一常数囿界而与n无关。 这里的Eijkt判断了下面的四个命题中(至少)有一个成立,null在瞬时t第i号磁带方格中不是符号xj, 在瞬时t磁头并不扫描着第i号磁带方格, 在瞬时t,M没有处于状态k,或 M的下一格局是依据M的下一动作函数从上一格局而获得的。 置注意:i,j,k,t的变化区域,可知E的长为O(P2(n))。,则E表述了上述判断(5)。null意思是在开始时其余磁带方格为空符号。这里不妨假定x1是空白符。显然,F的长度为0(P(n))。(6) 令 这里,S(1,0)是说在瞬时0,M处于状态q1,而q1是M的开始状态。而H(1,0)说在瞬时0,M扫描着第1号方格。 意思是前n个磁带方格中打印着输入的字w。最后 (7) 取G=S|0≤m<k≤b,且对某个j≤n,k-m=cj}。 于是G有b+1个结点,O(nb)条边。显然这一构造过程可在O(nb)时间内完成。下面我们证明图G(c1,c2,…,cn,b)有一条从0到b的通路当且仅当上述整数背包问题的判定问题的实例(c1,c2,…,cn,b)有一个解。 null设(0=i0,i1,i2,…,im=b)是G中的一条通路,考虑序列(y1,y2, …,ym)=(i1-i0,i2-i1,…,im-im-1)。则由G的定义知y1,y2,…,ym全 在{c1,c2,…,cm}之中,且 ,从而有非负整数解,即将xj 取成cj在(y1,y2,…,ym)中出现的次数。 反之,如果对于非负整数x1,x2,…,xn有 ,那么通过取 我们就会在G(c1,c2,…,cn,b)中重新找到一条从0到b的通路,这条通路是(0=i0,i1,i2,…,im=b),其中 。 null对于上述构造的图G,利用图论中寻找通路的算法,我们可以 在O(nb)时间内确定是否存在一条从0到b的通路。 综上所述,我们已经证明了整数背包问题的任何实例(c1,c2, …,cn,b)均能用上述的算法在O(nb)时间内解决。显然这是一个伪多项式算法。 关于强NP完全性与伪多项式算法之间的关系,我们有以下结论。 定理7.6-1定理7.6-1 除非P=NP,不然任何强NP完全问题都不会有伪多项式时间 算法。 证明:设为强NP完全问题,换言之,对于某个多项式p(n),p(n)是NP完全的。此外设有一个伪多项式时间算法A,它能在某个双变元多项式q(Length[I],Max[I])的时间内求解的任何实例I。于是,A就在多项式q(n,p(n))时间内求解了NP完全问题p(n)。除非N=NP,则由NP完全的定义知这是不可能的。 因此,证明一个问题是强NP完全的,不仅排除了求解它的多项式时间算法的存在性,而且也排除了其伪多项式时间算法的存在性。基于上述定理,我们也可以将强NP完全问题定义为这样一些NP完全的问题:对于它们,伪多项式时间算法的存在性将意味着P=NP。null基于多项式变换,我们在上节中指出了证明某一问题为NP完 全的一种简便而直接的方法。对于强NP完全问题,我们自然希望 也能有这样一个好的证明方法。这就要用到下列关于伪多项式变 换的概念。 令和’表示任意两个判定问题,实例集合分别为D和 D‘,“是”的集合分别为Y和Y’,并且分别规定函数Max, Length和Max’,Length‘。从到’的伪多项式交换是一个满足 下述条件的函数f:D→D': (a) 对于所有的I∈D,I∈Y当且仅当f(I)∈Y'; (b) 能够在两个变量Max[I]和Length[I]的多项式时间内计算f; (c) 存在多项式q1使得对所有的I∈D, q1(Length’[f(I)])≥Length[I]; (d) 存在两个变量的多项式q2使得对所有的I∈D, Max’[f(I)]≤q2(Max[I],Length[I])。定理7.6-2定理7.6-2 如果是强NP完全的,’∈NP,并且存在一个从到’的伪 多项式变换,那么’是强NP完全的。 证明:设f是这样一个伪多项式变换,q1和q2是定义中所规定的两个函数。不失一般性,我们可以假定q1和q2只有正整数系数,因为可以修改这些多项式,只要不减少它们的值。因为是强NP完全的,所以有一个多项式P使得p是NP完全的。而且,我们可以选取P使得它只含有正整数系数,因为如果p0是任意一个整系数多项式,对所有x都有p0(x)≥p(x),那末p0将包含p的所有实例,从而只要p是NP完全的,p0也一定是NP完全的。设p1是如下定义的多项式 p1(x)=q2(p(q1(x)),q1(x)) null我们断言,当限制在p的实例上时,函数f变成从p到’p1 的多项式变换,于是证明了’p1是NP完全的。首先让我们来看f 把p的每一个实例I映射到’p1的一个实例。根据p的定义和 q1,q2所满足的不等式,对p的每一个实例I, Max’[f(I)]≤q2(Max[I],Length[I]) ≤q2(p(Length[I]),Length[I]) ≤q2(p(q1(Length’[f(I)])),q1(Length’[f(I)])) =p1(Length’[f(I)]) 于是f(I)是’p1的一个实例。其次,根据伪多项式变换的定义 中的条件(a)和(b),以及p的每一个实例I都满足 Max[I]≤p(Length[I]), 可立即推出f符合多项式变换的其余要求。因此’p1是NP完全 的,从而得证’是强Np完全的。结论结论这个定理不仅告诉我们在证明某一新问题’的强NP完全性 时,并非一定要处理另一已知为强NP完全的问题的具体例子问 题p。而且,象定理7.6-2的结论一样,它给我们提供了一个利 用伪多项式变换来证明强NP完全性的直接而简便的,类似于NP完 全情形的方法。 7.7 Co-NP类问题 7.7 Co-NP类问题 在前面讨论的问题类——特别是P和NP的定义中,我们只考虑 求解或检验判定问题回答为“是”的实例所需的时间,而对于那 些答案为“否”的实例,情况如何呢?能否用同样的方法,在相 同的时间界内求解回答为“否”的实例呢?回答这些问题可从更 一般的角度进行分析,我们有如下定义。 定义7.7-1 对任一判定问题=(D,Y),都有一个相对应的称为该问题的补或余的另一个判定问题 ,其中 。 哈密顿回路问题(HC)的补哈密顿回路问题(HC)的补实例:图G=(V,E)。 问:G是否不存在哈密顿回路。 为了证明G不存在哈密顿回路,需要给出G中结点所有可能的排列,并且验证这些排列都不是回路。这和验证G存在哈密而顿回路不同,前者必须检查所有的排列,而后者只需检查一个排列(当G存在哈密而顿回路时,总可以假设猜对了)。检查所有排列不可能在多项式时间内完成。事实上,至今不知道 是否在NP中。为了区分、说明这一现象,我们引入如下的问题类。 Co-NP与Co-PCo-NP与Co-P定义7.7-2 Co-NP={ |∈NP}; Co-P={ |∈P}。 人们猜想: NP≠Co-NP。 但对于Co-P,下面定理保证了 P=Co-P。 定理7.7-1定理7.7-1如果是P类问题,那么的补 也是P类问题。 证明:因为是P类问题,因此存在解的多项式时间算法,解 的多项式时间算法恰好是求解的同一算法,只是每当先前回答“是”的时候,现在就回答“否”;反之亦然。 因此,若判定问题∈P,则有∈NP∩Co-NP,即 P NP∩Co-NP。 但对于NP完全问题则不同,具体有如下定理。定理7.7-2定理7.7-2如果一个NP完全问题的补是NP的,那么NP=Co-NP。 证明:假设有一个NP完全问题0,它的补 0是NP的。我们将证明:任何NP问题的补也是NP的。 因为0是NP完全问题,故可多项式变换到0,而这个变换也构成从 到 0的多项式变换。于是能给出 的任意回答为“是”的实例的简短检验,即可在多项式时间内完成论证:它由生成 0的回答为是的实例的多项式变换的运算过程和的 0该实例的证明过程组成。因为 0是NP的,这样的多项式时间内可检验的论证存在,且因变换是多项式时间的,故整个证明就是多项式时间的,所以 是NP的。因是任意的NP问题,故推出NP=Co-NP。 类似地可以证明:若NP∩Co-NP≠Φ,则亦有NP=Co-NP。 各类问题间的关系各类问题间的关系于是,NP完全问题是那样一些问题,它们的补很可能不是 NP的。反之,如果一个NP问题的补也是NP的,就表明该问题不 是NP完全的。 综合以上各节讨论有关猜想,我们可以用下图来表示各类问题之间的关系。 三个未解决的问题三个未解决的问题需要指出,到目前为止,对下面三个问题: P=NP∩Co-NP吗? Co-NP=NP吗? P=NP吗? 其答案仍然是未知的,故上述关系及一切有关结论均是在假设对 这三个问题的回答都是“否”的前提下建立的。显然,对(3)的肯定 意味着对(1)和(2)的肯定回答。同时,对(1)和(2)的回答“是”则意 味着对(3)的答案也是“是”。 7.8 NP困难问题7.8 NP困难问题 为了给出这类问题的定义,我们需要一个比多项式变换更一般的称为多项式时间图灵归约的概念。这一概念的严格定义需要对确定型图灵机做另一修改,增加一个用于预测、咨询功能的外部信息输入带,而有限状态控制器同时作用于这两个带上。这里略去这一过程,直接在判定问题层次上给出其
本文档为【NP完全问题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_344374
暂无简介~
格式:ppt
大小:844KB
软件:PowerPoint
页数:0
分类:其他高等教育
上传时间:2012-06-05
浏览量:137