NP完全问题null顾 小 丰顾 小 丰Email:guxf@uestc.edu.cn *第7章 NP完全问题 第7章 NP完全问题 判定问题、语言和编 码 多项式变换与可满足 性问题 非确定型图灵机 NP类NP完全问题与Cook 定理 强NP完全问题 Co-NP类问题 NP困难问题 空间复杂性简介 序序 对一个已确定是可计算的问题,人们总试图寻求实现它的最优算法。然而对有些问题,这个工作难度很大,目前还不能做到这点。 目前人们已经证明了一些问题,它们的时间复杂性是多项式阶 的,这只须设计一个实现它的时间...
其中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困难问题 为了给出这类问题的定义,我们需要一个比多项式变换更一般的称为多项式时间图灵归约的概念。这一概念的严格定义需要对确定型图灵机做另一修改,增加一个用于预测、咨询功能的外部信息输入带,而有限状态控制器同时作用于这两个带上。这里略去这一过程,直接在判定问题层次上给出其