清华大学算法分析与设计课件第10讲_NP完全性理论
- 格式:docx
- 大小:213.79 KB
- 文档页数:30
第十章 NP 完全问题10.1 引言首先说明一下问题的复杂性和算法的复杂性的区别,下面只考虑时间复杂性。
算法的复杂性是指解决问题的一个具体的算法的执行时 间,这是算法的性质;问题的复杂性是指这个问题本身的复杂程度,是问题的性质。
比如对于排序问题,如果我们只能通过元素间的相互比较来确定元素间的相互位置,而没有其他的附加可用信息,则排序问题的复杂性是O(nlgn),但是排序算法有很多,冒泡法是O(n^2),快速排序平均情况下是O(nlgn)等等,排序问题的复杂性是指在所有的解决该问题的算法中最好算法的复杂性。
问题的复杂性不可能通过枚举各种可能算法来得到,一般都是预先估计一个值,然后从理论上证明。
如果∏是任意一个问题,对∏存在着一个算法,他的时间复杂度是)(k n O ,其中n 是输入规模,k 是非负整数,则认为存在一个解问题∏的多项式时间算法。
多项式时间算法是一个有效算法。
把存在多项式时间算法的问题,称为易解决问题;把时间复杂度是以指数函数或排列时间算法的问题,称为难解问题。
为什么用多项式作为划分的标准呢?1) 对于使用的多项式算法来说,多项式的次数很少大于三;2) 多项式时间可解问题类具有很好的封闭性。
即加、减、组合等运算封闭;3) 对很多合理的计算模型来说,在一个模型上用多项式时间可解的问题,在另一个模型上也可以在多项式时间内获得解决。
有两类问题:一类是判定问题,另一类是优化问题。
判定问题的只牵涉到两种情况:yes 或no。
优化问题则牵涉到极值问题(最大化或最小化)。
判定问题很容易转换为优化问题。
为了研究问题的复杂性,我们必须将问题抽象,为了简化问题,我们只考虑一类简单的问题,判定性问题,即提出一个问题,只需要回答yes或者no的问题。
任何一般的最优化问题都可以转化为一系列判定性问题,比如求图中从A到B的最短路径,可以转化成:从A到B是否有长度为1的路径?从A到B是否有长度为2的路径?…从A 到B是否有长度为k的路径?如果问到了k的时候回答了yes,则停止发问,我们可以说从A到B的最短路径就是k。
NP完全性理论的应用用NP完全性理论进行子问题分析子问题的定义子问题的计算复杂性子问题的NP完全性证明NP难度搜索问题Turing归约NP-hard, NP-easy1子问题的定义及其实例定义设判定问题π=(Dπ,Yπ), 若Dπ’⊆Dπ, Yπ’⊆Yπ∩Dπ’,则称π’=(Dπ’,Yπ’) 是π的子问题.子问题的问题与原问题一样,定义域缩小.通过对实例的参数加以限制得到子问题.子问题实例限制子句中文字的个数得到SAT的子问题3SAT,2SAT 限制顶点度数、平面图、二部图、无圈图等得到图论问题的子问题限制常数K 的大小,如K=2, K=3 等得到子问题23努力扩大已知区域,缩小未知区域当P ≠NP 时,存在不属于NPC 也不属于P 的问题子问题的计算复杂性有先行约束的多处理机调度问题优化问题:给定任务集T, m 台机器,∀t∈T, l(t)∈Z+, T上的偏序≺.若σ:T→{ 0, 1, …, D }满足下述条件,则称T 为可行调度.∀t∈T, σ(t)+l(t)≤D∀i, 0 ≤i≤D, | { t∈T: σ(t) ≤i < σ(t)+l(t) }| ≤m∀t, t’∈T, t ≺t’⇔σ(t)+l(t) ≤σ(t’)求使得D 最小的可行调度.条件说明:任务在截止时间前完成同时工作的台数不超过m有偏序约束的任务必须按照约束先行4任务集如图所示,m=2,求使得D 最小的可行调度.实例5调度问题的子问题结构从上到下:偏序任意、树形偏序、无偏序约束从左到右:处理器台数限制逐步放大从前到后:各任务等长工作时间、任意工作时间78m =1, l 任意, 偏序任意(绿色面积)算法:1. 计算所有任务的工作时间之和Time2. if Time ≤D ,存在可行调度.3. 按照偏序从高层依次取任务,进行安排即可.m 任意, l 为常数, 偏序为空(浅兰色箭头)算法:1. Time ←⎡|T |/m ⎤l2.if Time ≤D ,存在可行调度.3. 将任务按顺序依次分配到m 台机器上.某些子问题属于P的说明9m 任意,l 为常数,偏序为树(深兰色箭头)关键路径算法:1.按照偏序关系,从树叶依次拿任务,每次至多下移m 个结点.2.将分配次数与D 比较,如果不超过D , 回答Yes. 分配次数至少为树高,可以证明时间为多项式时间.m =2, 偏序任意, l 为常数(紫色箭头)算法:H.N.Gabow,An almost linear algorithm for two processors scheduling, J.Assoc.Comput.Math,29, 1982, 766-780.某些子问题属于P的说明(续)10极大多项式可解的子问题π:(绿色)π是多项式时间可解的,并且不存在其他多项式可解的子问题π’,使得π是π’的子问题.极小NP 完全的子问题π(红色)π是NP 完全的,并且不存在其他NP 完全的子问题π’使得π’是π的子问题.极小未解决的子问题π:(黄色)π的子问题都属于P, 但不知π是否属于P ,也不知P 是否属于NPC.极大未解决的子问题π: (棕色)π的父问题都是NP 完全的,但不知π是否属于P ,也不知P 是否属于NPC.术语简介12对于由于顶点度数D 限制得到子问题的NPC 证明,通常采用局部替换法,设计新的保持性质不变,又能降低顶点度数的顶点替换.例2 顶点3 着色问题原问题:任意无向图的顶点3 着色问题子问题:最大度数D 不超过4 的顶点3 着色问题基本单元:度数k 大于等于5 的顶点替换成:子结构H k (内部顶点度数不超过4 的连续k −2个三角形)局部替换法的实例13对于G 中的k 度顶点,k ≥5, 替换成k -2个连续的三角形H k ,H k 具有k 个外顶点(和外部顶点邻接)H k 的顶点度数不超过4H k 的出口(外顶点)度数为2H k 可着3色,且每个外顶点着同色H k 的结构14下图的v 1 和v 2 是5度顶点,被H 5替换得到新的图,其中灰色区域表示替换后的两个H 5.替换实例NP难度搜索问题定义判定问题与搜索问题的关系搜索问题的形式定义Turing归约定义性质NP难,NP易与NP等价Turing归约的应用15搜索问题定义:一个搜索问题π有实例集Dπ, 对于π中的任何实例I,有一个有穷的解集合Sπ[I].如果存在算法A,对于任何实例I∈Dπ, A 都停机,并且如果Sπ[I]=∅,则回答无解,否则给出Sπ[I]中的一个解,那么称A解搜索问题π.例如,巡回售货员的优化问题,STS[I]就是实例I 中所有最短巡回路线的集合. Hamilton 回路的构造性问题,当G 中不存在Hamilton回路时回答无解,否则给出一条Hamilton回路.SHC [I]中是所有的HC的集合.搜索问题的定义及实例16判定问题与搜索问题之间的关系判定问题是搜索问题的特例.对于判定问题π,若I 属于Yπ, 则Sπ[I]={ Yes },若I 属于Dπ-Yπ, 则Sπ[I]={ No }.17搜索问题的形式说法设Σ是有穷字符表,R ⊆Σ+×Σ+ 称为Σ上的符号串关系,Σ+=Σ*−{ε},长度至少为1 的有穷串的集合.搜索问题π,I 为π的任意实例,I 在合理编码系统e 下的编码为x, 其编码系统的字符集为Σ. 令R[π,e]={ (x,y): x∈Σ+是实例I∈Dπ在e下的编码,y∈Σ+是解s∈Sπ[I]在e下的编码}则R 中的有序对由有解的实例的编码及其对应的一个解的编码构成18搜索问题的形式说法(续)定义函数f : Σ+→Σ*, x∈Σ+, 如果存在y∈Σ+使得(x,y)∈R, 则令f(x)=y, 否则f(x)=ε,那么称函数f 实现符号串关系R.实现符号串如果存在DTM 程序M计算的函数fM关系R,则称M解符号串关系R.如果存在多项式时间的DTM 程序M解R[π,e],则称搜索问题π在编码系统e下是多项式可解的.1920设π1, π2是搜索问题,A 是利用解π2的假想子程序s 解π1的算法,且只要s 是多项式时间的,A 也是多项式时间的,则称算法A 是从π1到π2 的多项式时间的Turing 归约. 这是也称π1 Turing 归约到π2,记作π1∝T π2.Turing归约Turing Reduction 非形式定义Turing归约(续)形式定义:带外部信息源的Turing 机OTM (Oracle Turing Machine)21OTM有穷带字符集Γ输入字符集Σ⊂Γ,空白字符b∈Γ−Σ., q h, q c, q r分别表示初始状有穷状态集Q, 其中含有q态、停机状态、访问外部信息源状态和恢复计算状态., q c})×Γ×(Σ∪{ b})转移函数δ:( Q−{ qh→Q×Γ×(Σ∪{b})×{-1,1}×{-1,1}×{-1,1}基本只写基本只写只读22输入x∈Σ+初始:x 写在基本带上方格1 到|x|,其余方格为b. Oracle的输入带(只写带)为b.每个带的带头置方格1.初始状态为q0.OTM的计算23OTM的计算(续)计算:,则计算结束,基本带方格1 到最右边非空若q=qh白方格的符号串是输出串.若q∈Q−{q, q c}, s1, s2分别为基本带和只读带扫描的h字符,且δ(q,s1,s2) = (q’,s1’,s2’, Δ1, Δ2, Δ3)那么状态变成q’,基本带字符改写为s’, 只写带字符改1’, 基本带、只写带、只读带带头分别移动Δ1,写为s2Δ2, Δ3.2425若q = q c ,y 为Oracle 输入带的字符串,z = g (y )为外部信息源函数,在一步之内将外部信息源Oracle 的输出带(只读)的1到|z | 方格写上z ,其余为b ;将输入带清为空白;将只读头,只写头置1;q c 变成q r . 基本带的内容、读写头不变.OTM的计算(续)26相对化的OTM 程序:设Mg 是M 与外部信息源g 相结合的相对化OTM 程序. 其带字符表为Γ,输入字符表为Σ.多项式时间的OTM 程序:如果存在多项式P 使得对于一切x ∈Σ+,Mg 在P (|x |) 步内停机,则称Mg 是多项式时间的OTM 程序.OTM 程序计算函数f :设Mg 对一切x ∈Σ+停机, 且停机时方格1到最右边非空白方格的字符串是f Mg (x ),那么它计算函数f Mg : Σ+→Σ*相对化的OTM程序27多项式时间的Turing归约:设R 1,R 2是Σ上的两个符号串关系,M 是输入字符集为Σ的OTM 程序,如果对于每个实现R 2 的函数g :Σ+→Σ*,相对化的OTM 程序Mg 都是多项式时间的OTM 程序,且Mg 计算的函数实现R 1,那么称M 是从R 1到R 2的多项式时间的Turing 归约,记作R 1∝T R 2Turing归约的形式定义29传递性π1∝T π2,π2∝T π3⇒π1∝T π3多项式变换是Turing 归约的特例.设π1多项式变换到π2, 如下设计解π1 的算法A :1. 对于π1的任何实例I ,先将I 变换成π2实例I ’,2. 利用解π2 的假想子程序s 对I ’识别.3. 如果I ’是肯定实例,则I 也是肯定实例;4. 如果I ’是否定实例,则I 也是否定实例.易见只要s 是多项式时间的,则A 也是多项式时间的. 因此π1∝T π2.Turing归约的性质NP难度定义设π是搜索问题,如果存在NP 完全问题π’使得π’π,则称π是NP-hard. 这意味着在多项式可计算的∝T角度看,π至少像NPC 问题一样难.π’, 设π是搜索问题,如果存在NP 问题π’使得π∝T则称π是NP-easy.设π是搜索问题,如果π是NP-hard, 同时也是NP-easy, 则称π是NP等价的.NP-easy ≼NP等价(包含NPC问题) ≼NP-hard30相关结果所有的NPC 问题都是NP-hard.因为多项式变换是Turing归约的特例.若π∈NPC, 则π多项式可解⇔P = NP若π是NP-hard, 则π多项式可解⇒P = NP若π是NP-easy, 则π多项式可解⇐P = NP若π是NP等价, 则π多项式可解⇔P = NP31相关结果(续)设π是判定问题,π为NPC ⇏πc为NPCπ为NP-hard ⇒πc为NP-hard证明:设π为NP-hard,任取实例I∈Dπ, I 也是πc的实例,且I∈Yπ⇔I∈Dπc−Yπc设s 是解πc的算法,如下得到解π的算法:先调用s对于实例I求解. 如果回答”Yes”, 则回答”No”,否则回答”Yes”. 从而证明了πTuring归约到πc. 据Turing归约的性质,πc 为NP-hard.32Turing归约的应用1.证明许多NPC 问题所对应的优化或构造问题为NP-hard.2.证明某些非NP 类的判定问题是NP-hard说明:1. 将解对应优化问题或构造问题的算法作为解判定问题算法的子程序,得到解判定问题的算法,从而构造了从判定问题到对应优化问题或构造问题的Turing归约.33实例—证明NP等价例1巡回售货员问题(TSO)是NP等价的.证:易证TSO是NP-hard. 下面证明TSO 是NP-easy.引入中间问题:巡回售货员的延伸问题(TSE)TSE实例:有穷城市的集合C= { c, c2, …, c m}1, c j∈C, d(c i, c j)∈Z+,距离∀ci长度限制B∈Z+,, …,cπ(k) >部分旅行路线ϑ= < cπ(1)问:ϑ是否可以延伸成全长不超过B的全程旅行< cπ(1), …, cπ(k), cπ(k+1), …, cπ(m)>?易证TSE属于NP.3435设s (C ,d ,ϑ,B )是解TSE 的子程序,其中C 为城市集,d 为距离函数,ϑ为部分旅行,B 为长度限制.下面构造解TSO 的算法.思路:用二分法确定最短路旅行长度B *旅行长度界于m →m ×d , d = max{ d (c i , c j )}每次取中点值验证是否存在能延伸到此长度的旅行根据最小长度值B *确定旅行路线从c 1开始,依次检查<c 1,c 2>,<c 1,c 3>…是否能延伸到B *长度的旅行,选择第一个可延伸的顶点c i . 按照上面方法确定后面的其他顶点.TSO 到TSE 的Turing归约40例2 第k 个最大子集实例:有穷集A , ∀a ∈A , S (a )∈Z +, 正整数B ≤S (A ),K ≤2|A |, 其中问:是否至少存在K 个不同的子集A ’,满足S (A ’)≤B ?这个问题不是NP 问题. 要猜想A 的K 个子集,K 不是|A | 的多项式, 输入规模为|A | ⎡log K ⎤⎡log S (A )⎤没办法用它的多项式个符号写下猜想.可以证明这个问题是NP-hard.∑=∈Aa a S A S )()(实例--分析非NP类问题的难度Turing归约命题:第k 个最大子集问题是NP-hard.下面构造从均分问题到这个问题的Turing归约.设s[A,S,B,K]是解第K个最大子集的子程序,其中A = { a1, a2, …, a n}S: A→Z+B≤S(A)K≤2n设A= { a,a2, …,a n },S:A→Z+是均分的实例,如1下构造解均分问题的算法.41算法说明步1到步7 二分法找L*.L* 的含义:至少Lmin个子集其和不超过S(A)/2.至多Lmax−1 个子集其和不超过S(A)/2.恰好有L*个子集其和不超过S(A)/2.步8 检查是否有一个子集其和等于S(A)/2.如果至少有L* 个子集其和≤b−1<b,那么没有一个子集其和恰好等于S(A)/2.44复杂性估计步1到步7二分法查找L*调用s[A, S, b, L]子程序log2n= O(n)次步8调用s[A, S, b, L]子程序 1 次如果s 是多项式时间的算法,则算法也是多项式时间的.45复杂性类的谱系NP之外Co-NPPSPACEP之内NCP完全46NP与Co-NP的结构前提:NP ≠Co-NP⇒P ≠NP49并行计算的PRAM模型PRAM(Parallel Random Access Machine)特征:1. 无限大共享存储器(用于处理器之间交换数据)2. 有限或无限个(n的多项式个)功能相同的处理器3. 指令集相同:逻辑运算、算术运算、访问内存、输入输出、转移4. 执行每条指令的时间相同,且与处理器个数无关50。
Lecture 10. NP完全性理论清华大学软件学院清华大学 1内容提要•计算模型与计算复杂度关系•问题分类:【P】与【NP】类•NP-难【hard】问题,NP完全集•第一个NPC问题和NPC问题集•如何证明一个问题是NPC问题涉及到的算法理论基础•原则上是否存在一般数学问题的解题步骤的判决问题【希尔波特第十问题】•图灵机的停机问题:是否存在一个图灵机,他可以回答其它图灵机是否停机【既算法是有界的】•图灵公理:凡是可计算的函数都可以用一台图灵机来计算•P-NP-NPC问题定义及其猜想:NPC是一类不可以在多项式时间内计算的问题。
清华大学 3明代数学家程大位著《算法统宗》中关于珠算的插图机械式手动计算机清华大学 5机械计算机•法国数学家、哲学家帕斯卡在1642年发明了一种机械计算机,并与1649年取得专利。
帕斯卡的计算机采用一种齿轮系统,其中一小轮转十个数字,下一个小轮便转动一个数字,通过齿轮系的联动,可以进行加法和减法的运算.图灵•大半个世纪以来,数学家、计算机科学家提出了各种各样的计算模型都被证明是同图灵机器等价的。
这一理论已被当成公理,它不仅是计算机科学的基础,也是数学的基础之一。
为纪念英国数学家Turing(1912-1954) 而设立的图灵奖成为计算机界的诺贝尔奖.清华大学7图灵机模型图灵机定义•一个图灵机是一个7元组(Q,∑,Γ,δ,q0,q1,q2), 其中Q,∑,Γ都是有穷集合,并且•1) •2) •3) 集. •4) •5) •6) •7) Q 是状态集.∑是输入字母表,不包括特殊空白符号︺. Γ是带字母表,其中: ︺∈Γ,∑是Γ的子δ: Q×Γ→Q×Γ×{L,R}是转移函数. q0∈Q是起始状态.q1∈Q是接受状态.q2∈Q是拒绝状态,且q2≠q1图灵机模型•图灵机模型用一个无限长的带子作为无限存储, 它还有一个读写头,这个读写头能在带子上读, 写和移动: 开始时,带子上只有输入串,其它地方都是空的.当它需要保存信息时,读写头就把信息写在带子上.为了读某个输入或写下的信息,带子可能将读写头往回移动到这个信息所在的地方.这样读,写和移动,机器不停的计算, 直到产生输出为止.机器实现设置了两种状态: 接受或拒绝清华大学9多带图灵机,•和普通图灵机相似,只是有多个带子,每个带子都有自己的读写头,用于读和写.如图清华大学11非确定性的图灵机•非常容易理解,在计算的任何时刻,机器可以在多种可能性中选择一种继续进行.它的计算是一课树,不同的分枝对应着机器不同的可能性.如果某个计算分枝导致接受状态,则接受该输入.与多带图灵机相同的是,它的计算能力与普通图灵机也是一样的.当然他的计算能力就不一样了。
现代计算机模型清华大学13随机存取机RAM•类似现代计算机,有一个只读输入带、只写输出带、指令计数器、内存储器、其零号寄存器用作累加器,内存不能写,每个内存可以存放任意大的整数。
有12条指令:load、store、add、sub、mult、div、read、write、jump、jgtz、jzero、halt。
练习•利用RAM设计一个计算多项式函数求值的程序:其中多项式为<a0,a1,…,an>,变量为x。
•考虑问题:程序是什么?输入是什么?复杂度是多少?清华大学15随机存取存储程序机RASP •除了程序可以存储在存储器中并可以修改,其它与RAM都一样。
RAM、RASP复杂度耗费标准•均匀耗费:不论计数器内整数多长,其读写、运算耗费均相等•对数耗费:耗费与其二进制表示的位数成正比:既与数字大小的对数成正比清华大学17图灵机模型与RAM模型计算能力和复杂性关系•定理一、上述计算模型的计算能力等价:既能够用图灵机计算的问题一定能够用RAM计算,反之亦然。
•定理二、在对数耗费标准下、图灵机与RAM的计算复杂度可在多项式时间内相互归约。
问题变换与复杂性归约•利用变换和归约可以把一个问题的复杂性归结到另一个问题的复杂性•问题A变换到问题B是指:–将问题A的输入变换为问题B的适当输入–求解问题B–把问题B的输出变换为问题A的正确解清华大学19说明A∝τ ( n ) B:是指在完成问题A 到B的转换过程中的转换过程需要O(τ(n))时间。
通常n 表示问题A 的规模,如果τ(n) 是多项式,则称问题A 可在多项式时间内变换为问题BP 、NP 类定义• P ={L|L 是一个能够在多项式时间内被一台确定性图灵机所接受的语言}• NP ={L|L 是一个能够在多项式时间内被一台非确定性图灵机所接受的语言} • 遗留概念说明:– 语言– 语言与图灵机【算法与图灵机】 – 为什么选择多项式变换与归约的关系命题一:若问题 A 的计算时间下界为 T (n ),且 A ∝τ ( n ) B :则 T(n)-τ (n ) 问题 B 的一个计算时间下界命题二:若问题 B 的计算时间上界为 T (n ),且 A ∝τ ( n ) B :则 T(n)-τ (n ) 问题 A 的一 个计算时间上界清华大学 21A Formal-language framework •形式化语言框架的一些概念简介:–Alphabet ∑:is a finite set of symbols–A language L over ∑ is any set of string made upof symbols from ∑. If ∑ = {0,1}, thenL={10,11,101,111,1011,…} is the language ofbinary representations of prime numbers,⎦ε is the empty string.⎦∑*={ε,0,1,00,01,11,…} is the set of all strings– Every language is an element of ∑*.清华大学23多项式时间内可求解问题·多项式时间内可求解的问题的特点–多项式时间可求解的问题被认为是易处理的,有三条理由:理由1:尽管 ( n100 ) 算法被认为是不易处理的,但事实上还没有什么实际问题有如此之高的多项式算法。
经验证明一但一个问题有多项式解,那么常常会有更加有效的解决方案。
清华大学25 理由2:在某一种计算模型下有多项式算法则在另一种计算模型下亦有多项式算法。
例如:一个问题在串行随机存取机上有多项式算法,则在图林机上亦有多项式算法,在并行机上亦如此。
理由3:多项式算法时间问题集合有非常好的封闭性质,它在加、乘、复合运算下都是封闭的【本课程研究的算法都是多项式的,研究的问题也是在多项式时间内可解的,对于不能在多项式时间内求解的问题该如何处判决问题· Dec i s i on 问题:如果I ={0,1}或 {yes, no },则称问题是判决【决策】问题,下面我们只关心判决问题。
优化问题一般都可以转换成判决 问题。
2.抽象问题:(What a problem is)抽象问题Q 是集合I 和S 上的二元关系。
其中 I 是问题实例集合,S 是问题解集合。
• 例如:①最短路径问题:问题实例(G , u 、v) : 一个圆和其上两个顶点;问题解是(u ~v)一个从u 到v 的由边相连的顶点集。
②查找最小值问题:问题实例: <a 1 , ⋯, a n >一个数组,问题解: 数m 。
清华大学 273.编码:抽象对象集合S的编码是:抽象对象集合S的编码是:E:S→∑*即把S中的对象e转化成一个二进制(可以是多进制)的串。
如果一个问题的实例是由二进制串集构成,称其为具体问题。
我们称一个算法在O(T(n))时间内解决了一个具体问题,如果此问题i 的长度| i |是n,此算法可在O(T(n))时间内求解此问题。
一个抽象问题可以编码成具体问题。
清华大学29Problem vs. language•A decision problem Q can be regarded as alanguage L:– L={x∈∑*: Q(x)=1}•A language accepted by an algorithm A is – L={x∈{0,1}*: A(x)=1}•A language decided by an algorithm A if itaccepts all string x with A(x)=1 and rejected all string x with A(x)=0Polynomial time•We say that a language is accepted in polynomial time by an algorithm A if A accepts every binary string in L in polynomial time•We say that a language is decided in polynomial time by an algorithm A if A accepts every binary string in L in polynomial time, and rejects in polynomial time the string not in L清华大学31 Definition of the complexityclass P•P={L {0,1}*: there exists an algorithm A that decides L in polynomial time} •Theorem 34.2•P={L: L is accepted by a polynomial timealgorithm}Polynomial time verifications •Verification algorithm A is a two arguments algorithm where one argument is an ordinary input string x and the other is a binary string y called a certificate.•A two arguments algorithm A verify an input x if there exists a certificate y such that A(x,y)=1.清华大学33Language defined by verification •L={x in {0,1}*: there exists y in {0,1}* such that A(x,y)=1}The complexity class NP•A language L belongs to NP if and only if there exists a two-input polynomial-time algorithm A and a constant c such that•L={x in {0,1}*: there exists y in {0,1}* with |y|=O(|x|c) such that A(x,y)=1}•We say that algorithm A verifies language L in polynomial time.清华大学35NP两种定义的等价性•用非确定性图灵机和验证算法给NP类的定义是等价的关于团问题属于NP的两种表述•团:给定无向图和整数k,确定是否存在一个包含k顶点的完全子图【团】【Clique】。