当前位置:文档之家› 计算复杂性理论031104(2)

计算复杂性理论031104(2)

第三章计算复杂性理论主要内容3.1 Turing机3.2 计算复杂性理论3.3 NP完全性理论的基本概念3.4 NP完全性证明3.5 用NP完全性理论分析问题3.6 NP难度3.1 Turing机一、Turing机的定义1. 基本模型2. 基本Turing机的变种单向带的Turing机k条带的Turing机非确定型的Turing机二、Turing机模型的等价性1. 单向带Turing机与基本Turing机等价2. k条带的Turing机与基本Turing机等价3. 非确定型Turing机与基本Turing机等价一、Turing机的定义1. 基本模型双向无限带的Turing机M = <Q,∑,Γ,δ,q,B,F>, 其中Q 有穷状态集Γ有穷带字符集∑输入字符集∑⊂ΓB 空白字符, B∈Γ-∑q 0初始状态, q∈QF 终结状态集, F⊂Q,qY ,qN∈Fδ: (Q-F)×Γ→Q×Γ×{L,R} 状态转移函数(ID)α1qα2表示此刻Turing机的FSC处于状态q,读写头指在串α2的第一个字符.例如Turing机M的某时刻的状态转移函数是δ(q,xi) = (p,Y,L)带上的字符串为x1x2...xi...xn, 读写头指向字符xi, 则它的瞬间描述是:x 1x2...xi-1qxi...xn┣x1x2...x i-2px i-1Yx i+1...x n ┣表示由左边的ID一步达到右边的ID┣*表示由左边的ID经有限步达到右边的ID被M接受的语言记作L(M),是∑*上的字的集合.当这些字左端对齐方格1放在带上,M处于状态q,M的带头指向方格1时, 经过有限步M将停机在接受状态qY, 即L(M)={ω|ω∈∑*,∃α1,α2∈Γ*(qω⊢*α1qYα2)}如果字ω不是L(M)中的字, M可以不停机或停机在拒斥状态qN.例1 L={0n1n|n≥1}, 设计接受L的Turing机如下: M = <Q,∑,Γ,δ,q,F>Q = {q0,q1,q2,q3,qY},∑= {0,1},Γ= {0,1,X,Y,B},F = {qY }. 其中qY代表接受停机状态.初始将字符串放在从1到n方格中, FSC处在状态q, 读写头指向方格1.将第一个0改写成X, 然后带头向右扫描. 遇到第一个1, 将1改为Y, 然后带头向左扫描. 遇到第一个X改为向右扫描. 这时进入下一个巡回.每个巡回将一对0和1改为X和Y, 直到接受或拒斥停机.例如输入0011,Turing 机动作如下:q 00011┣Xq 1011┣X0q 111┣Xq 20Y1┣q 2X0Y1┣Xq 00Y1 ┣XXq 1Y1┣XXYq 11┣XXq 2YY ┣Xq 2XYY ┣XXq 0YY ┣XXYq 3Y ┣XXYYq 3┣XXYYq Y转移函数如下(其中__代表拒斥停机状态)1X Y B q 0(q 1,X,R)____(q 3,Y,R)__q 1(q 1,0,R)(q 2,Y,L)__(q 1,Y,R)__q 2(q 2,0,L)__(q 0,X,R)(q 2,Y,L)__q 3______(q 3,Y,R)q Y2.基本Turing机的变种单向无限带的Turing机带方格从1开始, 向右无限长. 其它与基本Turing机相同.多带的Turing机k条双向带, k个读写头, 其中k为大于1的常数. 初始将输入写在第一条带的方格1到n内. 其它带为空. 每个读写头扫描一条带,可以改写被扫描方格的字符, 读写头然后向左或向右移动一个方格. 读写头的动作由FSC的状态及k条带所扫描的k个字符来决定.非确定型的Turing机(NDTM)一个有限状态控制器FSC, 猜想模块GM, 读写头, 只写头, 双向无限带.状态, 带方格的1到n写上输入x, 初始FSC处于q其它方格为空白字符B. 读写头指在方格1, 只写头指在方格-1.计算分为猜想阶段和检查阶段.猜想阶段状态下的待用状态.FSC处于q猜想模块GM指挥只写头,每次一步在所扫描的方格内写下 中的某个字符, 然后左移一个方格或不动.到某个时刻, 猜想模块进入待用状态, 这时有限状状态下的活跃状态. 从此刻起, 计算进态控制器进入q入检查阶段,而猜想模块是否继续动作, 或怎样动作, 完全是任意的.检查阶段与确定型的Turing机完全一样. 如果FSC进入接受状态, 则计算停止, 接受x. 如果进入拒斥状态, 则计算停止, 不接受x.二、Turng机的等价性定理1 语言L被一个具有双向无限带的Turing机M2接受当且仅当L被一个具有单向无限带的Turing机M1接受.定理2 语言L被一个k条无限带的Turing机M1接受当且仅当L被一个双向无限带的Turing机M2接受.定理3 语言L被一个非确定型的Turing机M1接受当且仅当L被一个确定型的Turing机M2接受.3.2 计算复杂性的基本概念一、空间和时间复杂性的形式定义1.确定型Turing机空间复杂性:离线的Turing机M,1条具有端记号的只读输入带,k条半无限存储带.如果对每个长为n的输入串, M在任一条存储带上都至多扫视S(n)个单元, 那么称M在最坏情况下的空间复杂度为S(n).时间复杂性:k条带的Turing机M, M有k条双向带, 一条带包含输入.如果对于每个长为n的输入串, M在停机前至多做T(n) 个动作, 那么称M在最坏情况下的时间复杂度为T(n).两条假设:空间复杂性至少需要1, 时间复杂性至少需要读入输入的时间, 因此这里作如下假定:对一切n,S(n)≥1,logn 是max{1,⎡logn⎤}的缩写.对一切n,T(n)≥n+1, T(n)是max{n+1,T(n)}的缩写.例1 L = {wcw R| w为0-1字符串},设计接受L的Turing机M1和M2, 使得M1的时间复杂度为O(n), M2的空间复杂度为O(log n).M1有2条带,把c左边的w复制到第2条带上. 当发现c时第2条带的读写头向左, 输入带的读写头向右. 比较两个带头的符号, 如果符号一样, 字符个数一样, M1接受x. M1至多作n+1个动作. 时间复杂度为n+1. 空间复杂度为⎡n-1/2⎤+1.M2有2条带, 第2条带作为二进制的计数器. 首先检查输入是否只有1个c, 以及c左边和右边的符号是否一样多. 然后逐个比较c左边和右边的字符, 用上述计数器找到对应的字符. 如果所有的字符都一样, M2接受停机. 空间复杂度为二进制的计数器的占用空间, 即O(log n). 时间复杂度为n2.2. 非确定型Turing机给定串x, M接受x的时间: M关于x的所有接受计算中, 在猜想阶段和检查阶段直到进入接受停机状态为止所发生步数的最小值.M的最坏情况下的时间复杂性T(n)=max{m|存在x∈L,|x|=n,M接受x的时间为m}给定串x, M接受x的空间: M关于x的所有接受计算中, 在猜想阶段和检查阶段直到进入接受停机状态为止在存储带上扫视的最少单元数.M的最坏情况下的空间复杂性S(n)=max{m|存在x∈L,|x|=n, M接受x的空间为m}二、带压缩、线性加速和带数目的减少带压缩:由于Turing机的状态数和带字符集的大小可以是任意给定的常数. 可以将若干个带字符编码成一个字符, 所以空间占用量总可以压缩一个常数因子.线性加速:使得计算加速一个常数因子.带数目的减少:在空间或时间复杂性不变的情况下减少带的数目.这里对Turing机进行一点修改, 允许带头原地不动.1. 带压缩(使用空间长度的线性减少)定理1 如果语言L 被一个具有k 条存储带S(n)空间有界的Turing 机(TM)接受, 则对任意1>c>0, L 被一个cS(n) 空间有界的TM 接受.2. 时间线性加速∞=∞→nn T Inf n )(那么,L 就可以被一个k 带cT(n)时间有界的TM M 2接受, 其中c 是大于0的任意常数.定理2 如果语言L 被一个k 带T(n)时间有界的TM M 1接受,那么只要k>1, 且定理3如果对于k>1和某个常数c>1, L被一个k带cn时间有界的TM接受, 则对于每个ε>0, L被一个k带(1+ε)n 时间有界的TM接受.推论1如果对于某个c>1,T(n)=cn, 则对任何ε>0,DTIME(T(n))= DTIME((1+ε)n)推论2如果对于某个c>1,T(n)=cn, 则对任何ε>0, NTIME(T(n)) = NTIME((1+ε)n)3. 带数目的减少(空间不增加下带数目的减少)定理4 如果语言L被一个具有k条存储带S(n)空间有界的TM接受, 那么L可以被一个具有1条存储带的S(n)空间有界的TM接受.4. 时间复杂性与带数目的减少定理5如果L在DTIME(T(n))中, 那么L可被一个单带TM在时间T2(n)内被接受.推论L在NTIME(T(n))中, 则L可以被一个非确定型T2(n)时间有界的TM接受.定理6如果L可以被一个k带T(n)时间有界的TM 接受, 则L可以被一个2带TM在T(n)logT(n) 时间内接受.推论如果L被一个k条带T(n)时间有界的NDTM接受, 则L也可以被一个双带T(n)logT(n) 时间有界的NDTM接受.小结:减少带数目,可以保证空间复杂性不变.减少带数目,时间复杂性增加.小结:1. 带压缩(空间的线性减少)M1: k 条存储带, S(n)空间存在M2: k 条存储带,cS(n)空间,1>c>02. 时间线性加速(时间的线性减少)(1)M1: k 带(k>1),T(n)时间()存在M2: k 带(k>1),cT(n)时间,1>c>0(2)M1: k 带(k>1),cn 时间,c>1存在M2: k 带(k>1),(1+ε)n 时间,任给ε>03. 带数目的减少(1)M1: k 带(k>1), S(n)空间,存在M2:单带, S(n)空间(2)M1: k 带(k>1), T(n)时间存在M2:单带, T 2(n)时间存在M2: 2带,T(n)logT(n)时间∞=∞→n n T Inf n )(3.3 NP完全理论的基本概念主要内容一、判定问题和语言判定问题定义与描述判定问题与语言的关系二、P类与NP类难解的问题与多项式可解的问题P类与NP类定义三、多项式变换与NP完全性多项式变换的定义及性质NP完全的定义四、Cook定理证明了第一个NP完全问题(SAT)一、判定问题和语言主要内容1. 判定问题的定义2. 陈述判定问题的标准格式3. 引入判定问题的理由4. 判定问题的形式描述——语言5. 算法的形式描述——Turing机1. 判定问题的定义一个判定问题π= (Dπ,Yπ), 其中Dπ为实例集, Yπ⊆Dπ为肯定实例的集合. 任给实例I∈Dπ, 问I∈Yπ?2. 陈述一个判定问题的标准格式对实例中参数的一般描述和一个肯定--否定问题.子图同构问题实例: 两个图G1=(V1,E1), G2=(V2,E2)问: G1是否包含与G2同构的子图?即是否存在子集V’⊆V1, E’⊆E1使得|V’|=|V2|,|E’|=|E2|,且有双射f: V2→V’满足以下条件?{u,v}∈E2⇔{f(u),f(v)}∈E’3. 引入判定问题的理由(1) 判定问题的形式化描述简单.(2) 许多优化问题的难度与判定问题的难度相关.例如巡回售货员问题是一个优化问题. 如果在实例中加上参数B, 问是否存在长度不超过B的旅行? 得到一个巡回售货员的判定问题. 可以如下给出解该判定问题的算法:I. 先解对应的优化问题得到最优解, 时间为f(n)II.计算最优解的成本函数(旅行长度), 然后和B比较. 如果大于B,则回答No;否则回答Yes. 所用时间为g(n)g(n)为多项式时间,因此解巡回售货员判定问题的时间由f(n)确定. 如果对于巡回售货员优化问题存在多项式时间的算法, 那么也存在解相应判定问题的多项式算法.4. 判定问题的形式描述--语言语言的定义设∑为有穷字符集, ∑*是∑上所用有穷字符串的集合. 称∑*的任何子集为∑上的语言.判定问题与语言的关系在合理的编码系统e下, 判定问题的任意实例被编码成一个字符串x.例如巡回售货员的判定问题的实例如下图相应的字符串是:∑= {c,[,],/,0,1,2,3,4,5,6,7,8,9,#}c[1]c[2]c[3]c[4]//10/5/9//6/9//3#25编码系统e将∑*中的字符串划分成三类:不是实例中的编码Dπ-Yπ中的实例的编码Yπ中的实例的编码只有Yπ中的实例的编码构成与判定问题π对应的语言L.具体定义如下:与判定问题π和编码系统e相关的语言L[π,e]设π为判定问题, e是关于π的编码系统, 其字符表为∑, 则L[π,e]={x∈∑*: x是某个实例I∈Yπ在e下的编码}I∈Yπ⇔x∈L[π,e]算法解判定问题π⇔用Turing机识别语言L[π,e]说明:对判定问题π, 相关的L[π,e]与编码系统有关.合理的编码系统:无冗余的符号和信息.数字用二进制(或其他进制,不允许用一进制)表示.可译码在不同的合理的编码系统下, 实例的编码所对应的输入长度length: Dπ→Z+多项式相关. 换句话说, e,e’为合理的编码系统, 实例I在e和e’下的编码所对应的输入长度分别为length[I] 和length’[I], 则存在多项式P和P’使得length’[I]≤P(length[I]), length[I]≤P’(length’[I])二、P类与NP类1. 难解的问题定义实例2. P类与NP类的定义非形式定义(问题类)形式定义(语言类)3. P类与NP类的关系P NPP=NP?1.难解的问题不存在确定型多项式时间算法的问题难解的原因问题太难, 在多项式时间不可能找到解解本身太庞大, 表示解的符号串长度不是输入长度的多项式函数一般只考虑第一种难解的问题两类难解的问题不可判定问题——不存在算法可判定的难解问题——有算法,但不存在多项式时间的算法停机问题是不可判定的定理1 不存在根据任意Turing机T的定义, 能够确定T在输入d上是否停机的算法.T证明思路:证明T在输入T上停机是不可判定的反证法:假设存在Turing机H,可以对任何Turing机T,判定T在T上是否停机.根据H,构造Turing机L,使得L在L上停机⇒L在L上不停机L在L上不停机⇒L在L上停机证假定H是一个可以判定T在T上是否停机的Turing机. H有两个停机状态:Yes停机状态⇔T在T上停机No 停机状态⇔T在T上不停机构造新的Turing机L. L比H多两个新的状态q1’, q2’.H进入Yes停机状态当且仅当L转移到q1’. 并且设定转移函数, 对一切u∈∑有δ(q1’,u) = (q2’,u,R),δ(q2’,u) = (q1’,u,L)H进入No停机状态, L也进入No停机状态. 从而有T在T上停机⇔L在T上不停机T在T上不停机⇔L在T上停机令T=L, 则导致L在L停机⇔L在L上不停机L在L不停机⇔L在L上停机产生矛盾.可判定的难解问题实例:非确定型的难解问题(用非确定型的Turing机在多项式时间不可能解出)判定半扩展正则表达式是否表示它的字母表上的所有的串. The Design and Analysis of Computer Algorithms, Aho, Hopcroft, Ullman. 1972.NP类问题是判定问题用非确定型的算法在多项式时间可解到目前还没有找到多项式时间的确定型算法是否为难解的问题(不清楚)2. P类和NP类的定义(1) 非形式的定义P类: 用确定型算法在多项式时间可解的判定问题类NP类: 用非确定型算法在多项式时间可解的判定问题类非确定型算法求解判定问题π任意给定实例I∈Dπ, 如果I∈Yπ, 则存在结构s,使得当对输入I猜想s时,检查阶段回答Yes; 如果I∉Yπ, 则不存在结构s,使得当对输入I猜想s时,检查阶段回答Yes.多项式时间的非确定型算法对于解判定问题非确定型算法, 如果存在多项式P,对每个实例I∈Yπ存在猜想s,使得检查阶段在时间P(length[I])内回答Yes.几点说明:1. 猜想的结构s的规模小于P(length[I])2. 对肯定实例I∈Yπ,至少存在一个猜想s,使得检查阶段在时间P(length[I])内回答Yes,而不管其他猜想.3. 对否定实例I∈Dπ-Yπ的运算可以不管.4. 可以看成具有无限并行能力的计算机. 将所有可能的结构猜想出来, 每个结构一道, 如果有一个回答Yes, 则整个机器停机并回答Yes; 使得机器回答Yes的最短时间就是计算时间.5. 肯定与否定是不对称的肯定与否定不对称.问题π与π的补问题πc.π: 对于给定的实例I,X是否成立?πc: 对于给定的实例I,X是否不成立?Dπ=Dπc, Yπ=Dπc-Yπc, Yπc=Dπ-Yπ.π∈P ⇒πc∈Pπ∈NP ⇒πc∈NP? 不一定π∈P ⇔πc∈P证设M是解π的DTM程序, 则对任意I∈Dπ, M都停机. M有两个停机状态Yes和No. 设M’完全模拟M的动作, 只是交换两个停机状态.则M’是解πc的DTM程序, 因为M’停机No ⇔M停机Yes ⇔I∈Yπ⇔I∈Dπc-YπcM’停机Yes ⇔M停机No ⇔I∈Dπ-Yπ⇔I∈Yπc所以π∈P ⇒πc∈Pπc∈P ⇒π∈P.π∈NP ⇒πc∈NP ?π∈NP, 存在解π的非确定型算法. 要想得到解πc的非确定型算法必须对I∈Yπc的实例做猜想. 而I∈Dπ-Yπ⇔I∈Yπc,对于I,原来解π的非确定型算法可能根本不停机, 因此不能由这个解π的非确定型算法得到解πc的非确定型算法.(2) 形式描述}P={L:存在多项式时间的DTM程序M使得L=LM}NP={L:存在多项式时间的NDTM程序M使得L=LM非形式描述形式描述判定问题π语言L实例I∈Dπ符号串x肯定实例I∈Yπ符号串x∈LM实例规模符号串长度确定型算法对所有输入停机的DTM程序确定型算法对I回答Yes DTM程序对符号串x停机接受状态确定型算法求解判定问题πDTM程序识别语言L多项式时间的确定型算法多项式时间的DTM程序π∈P(问题类) L∈P (语言类)3. P与NP的关系P ⊆NPP = NP ?可以证明DTM模拟NDTM的时间为指数时间DTM模拟NDTM的时间复杂性的上界.定理2 P ⊆NP是多项式时间的识别L的DTM程序. 如证任取L属于P, 令M1.下构造识别L的NDTM程序M2对于给定的输入, 任意写下猜想串, 然后在检查阶段模拟M1的动作即可. 易见M是识别L的NDTM程序, 故L属于NP.2定理3 如果L∈NP, 那么存在多项式P使得L能用时间复杂性函数为O(2P(n)) 的DTM程序识别.证L∈NP, 存在识别L的NDTM程序M, 即存在多项式q, 对于任意x∈L,|x|=n, 都存在猜想串s, |s|≤q(n), M对x和s 的计算在q(n)步停机yes.长度不超过q(n)的猜想串, 至多有K q(n)个, K=|Γ|.如下构造DTM程序M’: 依次写下所有长度不超过q(n)的猜想串s, 对输入x和s使用M的检查阶段的动作进行计算. 如果对某个猜想串s, M在q(n)步内停机Yes, 则M’停机Yes; 如果M对所有的猜想串在q(n)步或停机No,或不停机, 则M’停机No. 易见LM’= LM.考虑M’的时间复杂性. 对每个猜想串的计算时间至多为q(n), 对所有猜想串的计算时间至多为O(K q(n)q(n)) = O(2P(n))三、多项式变换和NP完全性1. 多项式变换的定义(1)非形式的定义设判定问题π1, π2, 若存在函数f: Dπ1→Dπ2满足I. f可以用确定型算法在多项式时间计算II. ∀I∈Dπ1, I∈Yπ1⇔f(I)∈Yπ2则称π1可多项式变换到π2, 记作π1∝π2.构造多项式变换的步骤:针对原来问题的参数给出变换规则f: Dπ1→Dπ2证明I∈Yπ1⇔f(I)∈Yπ2证明计算f的时间为多项式时间一个多项式变换的实例例HC αTSπ1: 哈密顿回路问题HCπ2: 巡回售货员问题TSHC 实例: 图G=(V,E), V={v1,v2, ...,vm}问: G中是否包含一条哈密顿回路?TS 实例:城市集合C={c1,c2,…,cm},正整数d(ci,cj),1≤i<j≤m,B为正整数问:是否存在一条长度不超过B的巡回路线?多项式变换 f 如下:令城市集合C=V. B=m.∀vi ,vj∈V (i≠j),⎩⎨⎧∉∈=EvvEvvvvdjijiji},{2},{1),(证明肯定实例当且仅当变换到肯定实例假设G存在一条HC <v1,v2,...,vm>, 则<v1,v2,...,vm> 也是f(G)中的旅行路线. 易见该旅行路线中的每条边长度都是1, 总长为m. 所以f(G)为TS的肯定实例.假设<v1,v2,...,vm>是f(G)中长度不超过m的旅行. 由于任何城市间的距离为1或2, 总共有m个距离, 因此每个距离必为1. 从而证明了G是HC的肯定实例.证明变换的时间为多项式时间计算d(vi ,vj), i j. 共计算m(m-1)/2次, 每次要检查{vi ,vj} 是否属于E (可以用邻接表进行). 显然是多项式时间.2)形式定义设∑1,∑2为字母表, L1⊆∑1*, L2⊆∑2* 是语言, 如果f: ∑1*→∑2*满足:I. 存在计算f的多项式时间的DTM程序II. ∀x∈∑1*, x∈L1⇔f(x)∈L2则称f是从L1到L2的多项式变换, 记作L1∝L2.所谓多项式时间的DTM程序M计算函数f : ∑*→Γ*是指:输入字符表为∑, 带字符表为Γ. M对∑*上的所有长度为n的字符串在n的多项式步内停机,且f对于任何x∈∑*, f(x)是输入x到M停机时带方格1到最右边的非空白方格为止的符号串.若L1∝L2, L2∝L1, 则称L1与L2是多项式等价的.2. 多项式变换的性质(1)若L1∝L2, 则L2∈P ⇒L1∈P.(2)若L1∝L2, L2∝L3, 则L1∝L3.证明思路条件:多项式变换f⇒存在计算f的多项式时间的DTM程序L∈P ⇒存在识别L的多项式时间的DTM 程序结论:语言属于P方法——构造识别语言的多项式时间的DTM程序存在多项式变换方法——给出多项式变换证明:若L 1∝L 2, 则L 2∈P ⇒L 1∈P证设∑1,∑2是L 1和L 2的字符表,f: ∑1*→∑2*是从L 1到L 2的多项式变换, M f 是计算f 的多项式时间的DTM 程序, M 2是识别L 2的多项式时间的DTM 程序.如下构造识别L 1的多项式时间的DTM 程序M ’: M ’首先模拟M f ,对x ∈∑1*计算出f(x)∈∑2*. 接着模拟M 2,确定f(x)是否属于L 2.因为f 是多项式变换, 即x ∈L 1 ⇔f(x)∈L 2,所以M 2对f(x)停机q Y ⇔M ’对x 停机q Y从而证明M ’识别L 1.设M f ,M 2的时间复杂性函数分别为多项式P f ,P 2,则|f(x)|≤P f (|x|)从而M ’的时间复杂性为O(P f (|x|)+ P 2(P f (|x|)))即L 1∈P.2. NP完全性若L∈NP, 且对于任意语言L’∈NP 都有L’∝L, 则称L是NP完全的, 记作L∈NPC, 其中NPC 是NP完全的语言类.类似可以定义NPC 为NP完全的问题类.3. NP完全的性质(1)若L1,L2∈NP, L1∈NPC, 且L1∝L2, 则L2∈NPC.(2)若L∈NPC, 则L∈P ⇒P = NP.(3)若P ≠NP, 则NPC⋂P=∅.证明留作思考.四、Cook定理1. 可满足性问题(1) 几个概念布尔变量的集合: U={u1,u2,...,um},ui为布尔变量U上的文字: 对于u U, u或 称为U上的文字U上的子句c: U上若干文字的集合,表示这些文字的析取.例如{u1,u3,u5}表示u1+u3+u5U上的子句集C: U上的字句的集合,表示C中子句的合取.例如C={{u1,u3,ū5},{u2,u3,ū5},{u5}}表示(u1+u3+ū5)(u2+u3+ū5)(u5)U上的真值赋值:函数t: U→{T,F}t(u)=F, 称u是假值,t(u)=T, 称u是真值.易见t(u)=T ⇔t(ū)=Ft满足子句c: c中至少有一个文字在这个赋值t下取真值t满足子句集C: t满足集合C中的每个子句.(2)可满足性问题(SAT)实例: 布尔变量集合U以及U上的子句集C问: 是否存在满足C的真值赋值?Cook定理(1971) 可满足性问题SAT是NP完全的.证(1)SAT NP.如下设计解SAT的非确定型算法. 任意猜想一个关于U中变量的真值赋值, 然后检查这个赋值是否满足C中所有的子句。

相关主题