1 清华大学 宋斌恒 1 NP完全性理论介绍 清华大学 宋斌恒 清华大学 宋斌恒 2 内容提要 ? 计算模型与计算复杂度关系 ? 问题分类:【 P】与【 NP】类 ?NP-难【 hard】问题, NP完全集 ? 第一个 NPC问题和 NPC问题集 ? 如何证明一个问题是 NPC问题 清华大学 宋斌恒 3 引言 ? 脑力劳动机械化【吴文俊先生】 ? 图灵机的停机问题:是否存在一个图灵机,他 可以回答其它图灵机是否停机【既算法是有界 的】 ? 原则上是否存在一般数学问题的解题步骤的判 决问题【希尔波特第十问题变种】 ? 图灵公理:凡是可计算的函数都可以用一台图 灵机来计算 清华大学 宋斌恒 4 NPC问题 ?P- NP- NPC问题定义及其猜想: NPC是 一类不可以在多项式时间内计算的问 题。 ? 如果在量子计算模型中上述问题又如 何? 清华大学 宋斌恒 5 下面介绍计算机械化的进程 清华大学 宋斌恒 6 明代数学家程大位著《算法统 宗》中关于珠算的插图 2 清华大学 宋斌恒 7 机械式手动计算机 清华大学 宋斌恒 8 机械计算机 ? 法国数学家、哲学家帕斯卡在 1642年发 明了一种机械计算机,并与 1649年取得 专利。帕斯卡的计算机采用一种齿轮系 统,其中一小轮转十个数字,下一个小 轮便转动一个数字,通过齿轮系的联 动,可以进行加法和减法的运算 . 清华大学 宋斌恒 9 图灵 ? 大半个世纪以来,数学家、计算机 科学家提出了各种各样的计算模型 都被证明是同图灵机器等价的。这 一理论已被当成公理,它不仅是计 算机科学的基础,也是数学的基础 之一。为纪念英国数学家 Turing (1912-1954) 而设立的图灵奖成为计 算机界的诺贝尔奖 . 清华大学 宋斌恒 10 图灵机模型 清华大学 宋斌恒 11 图灵机模型 ? 图灵机模型用一个无限长的带子作为无限存储 , 它还有一个读写头 ,这个读写头能在带子上读 , 写和移动 : 开始时 ,带子上只有输入串 ,其它地 方都是空的 .当它需要保存信息时 ,读写头就把 信息写在带子上 .为了读某个输入或写下的信 息 ,带子可能将读写头往回移动到这个信息所 在的地方 .这样读 ,写和移动 ,机器不停的计算 , 直到产生输出为止 .机器实现设置了两种状态 : 接受或拒绝 清华大学 宋斌恒 12 图灵机定义 ? 一个 图灵机 是一个 7元组 (Q,∑ ,Γ ,δ ,q0,q1,q2), 其中 Q,∑ ,Γ都是有穷集合 ,并且 ?1) Q 是状态集 . ?2) ∑是输入字母表 ,不包括特殊空白符号︺ . ?3) Γ 是带字母表 ,其中 : ︺∈Γ ,∑是Γ的子 集 . ?4) δ : Q×Γ→ Q×Γ× {L,R}是转移函数 . ?5) q0∈ Q是起始状态 . ?6) q1∈ Q是接受状态 . ?7) q2∈ Q是拒绝状态 ,且 q2≠ q1 3 清华大学 宋斌恒 13 多带图灵机 , ? 和普通图 灵机相似 , 只是有多 个带子 ,每 个带子都 有自己的 读写头 ,用 于读和写 . 如图 清华大学 宋斌恒 14 非确定性的图灵机 ? 在计算的任何时刻 ,机器可以在多种可能 性中选择一种继续进行【永远选择正确 的,可以理解为全部分支都计算完后选 出正确的】 .它的计算是一课树 ,不同的分 枝对应着机器不同的可能性 .如果某个计 算分枝导致接受状态 ,则接受该输入 .与多 带图灵机相同的是 ,它的计算能力与普通 图灵机也是一样的 .当然他的计算速度就 不一样了。 清华大学 宋斌恒 15 现代计算机模型 清华大学 宋斌恒 16 随机存取机 RAM ? 类似现代计算机,有一个只读输入带、 只写输出带、指令计数器、内存储器、 其零号寄存器用作累加器,内存不能 写,每个内存可以存放任意大的整数。 有 12条指令: load、 store、 add、 sub、 mult、 div、 read、 write、 jump、 jgtz、 jzero、 halt。 清华大学 宋斌恒 17 练习 ? 利用 RAM设计一个计算多项式函数求值 的程序:其中多项式为 <a0,a1,…,an>,变 量为 x。 ? 考虑问题:程序是什么?输入是什么? 复杂度是多少? 清华大学 宋斌恒 18 随机存取存储程序机 RASP ? 除了程序可以存储在存储器中并可以修 改,其它与 RAM都一样。 4 清华大学 宋斌恒 19 RAM、 RASP复杂度耗费标准 ? 均匀耗费:不论计数器内整数多长,其 读写、运算耗费均相等 ? 对数耗费:耗费与其二进制表示的位数 成正比:既与数字大小的对数成正比 清华大学 宋斌恒 20 图灵机模型与 RAM模型计算能力 和复杂性关系 ? 定理一、上述计算模型的计算能力等 价:既能够用图灵机计算的问题一定能 够用 RAM计算,反之亦然。 ? 定理二、在对数耗费标准下、图灵机与 RAM的计算复杂度可在多项式时间内相 互归约。 清华大学 宋斌恒 21 问题变换与复杂性归约 ? 利用变换和归约可以把一个问题的复杂 性归结到另一个问题的复杂性 ? 问题 A变换到问题 B是指: – 将问题 A的输入变换为问题 B的适当输入 – 求解问题 B – 把问题 B的输出变换为问题 A的正确解 清华大学 宋斌恒 22 说明 A )(nτ ∝ B:是指在完成问题 A 到 B 的转换过程中的转换过程需要 ))(( nO τ 时间。 通常 n 表示问题 A 的规模,如果 )(nτ 是多项式,则称问题 A 可在多项 式时间内变换为问题 B 清华大学 宋斌恒 23 P、 NP类定义 ?P= {L|L是一个能够在多项式时间内被一 台确定性图灵机所接受的语言 } ?NP= {L|L是一个能够在多项式时间内被 一台非确定性图灵机所接受的语言 } ? 遗留概念说明: – 语言 – 语言与图灵机【算法与图灵机】 – 为什么选择多项式 清华大学 宋斌恒 24 A Formal-language framework ? 形式化语言框架的一些概念简介: – Alphabet Σ: is a finite set of symbols – A language L over Σ is any set of string made up of symbols from Σ. If Σ = {0,1}, then L={10,11,101,111,1011,…} is the language of binary representations of prime numbers, nullεis the empty string. nullΣ * ={ε,0,1,00,01,11,…} is the set of all strings – Every language is an element of Σ ? . 5 清华大学 宋斌恒 25 Operations on language ? Union and intersection: same as the set operations ? Complement of L: ? Concatenation of two language L 1 and L 2 : ? Closure or Kleene Star: –L*={ε}U L U L 2 U L 3 U… LL ?Σ= * },:{ 221121 LxLxxxL ∈∈= 清华大学 宋斌恒 26 多项式时间内可求解问题 ? 多项式时间内可求解的问题的特点 – 多项式时间可求解的问题被认为是易处理 的,有三条理由: 理由1:尽管 Θ(n 100 )算法被认为是不 易处理的,但事实上还没有什么实际问题有 如此之高的多项式算法。 经验证明一但一个问题有多项式解,那 么常常会有更加有效的解决方案。 清华大学 宋斌恒 27 理由 2:在某一种计算模型下有多项式算法则 在另一种计算模型下亦有多项式算法。 例如:一个问题在串行随机存取机上有 多项式算法,则在图林机上亦有多项式算 法,在并行机上亦如此。 理由 3:多项式算法时间问题集合有非常好的 封闭性质,它在加、乘、复合运算下都是 封闭的 【 本课程研究的算法大部分是多项式的,研 究的问题也是在多项式时间内可解的, 对 于不能在多项式时间内求解的问题该如何 处理?】 清华大学 宋斌恒 28 2.抽象问题: 抽象问题 Q是集合 I和 S上的二元关系。其中 I是问题实例集合, S是问题解集合。 ? 例如:①最短路径问题:问题实例(G, u、v):一个圆和其上两个顶点;问题解 是(u~v)一个从u到v的由边相连的顶点 集。 ②查找最小值问题:问题实例: <a 1 ,…,a n >一个数组。解:数m。 清华大学 宋斌恒 29 判决问题 ? Decision问题:如果I={0,1}或 {yes,no},则称问题是判决问 题,下面我们只关心判决问题。 优化问题一般都可以转换成判决 问题。 清华大学 宋斌恒 30 3.编码:抽象对象集合 S的编码是: 抽象对象集合 S的编码是: E: S→∑ * 即把S中的对象e转化成一个二进 制(可以是多进制)的串。 如果一个问题的实例是由二进制串集 构成,称其为具体问题。我们称一个算法 在O(T(n))时间内解决了一个具体问 题,如果此问题i的长度|i|是n,此算法可 在O(T(n))时间内求解此问题。 一个抽象问题可以编码成具体问题。 6 清华大学 宋斌恒 31 Problem vs. language ? A decision problem Q can be regarded as a language 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 it accepts all string x with A(x)=1 and rejected all string x with A(x)=0 清华大学 宋斌恒 32 Polynomial 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[无法保证非 L中的语言在多项式时间内 被拒绝 ] ? 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 清华大学 宋斌恒 33 class P的另一个等价定义 ?P={L ? {0,1}*: there exists an algorithm A that decides L in polynomial time} 清华大学 宋斌恒 34 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. 清华大学 宋斌恒 35 Language defined by verification ? L={x in {0,1} * : there exists y in {0,1} * such that A(x,y)=1} 清华大学 宋斌恒 36 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. 7 清华大学 宋斌恒 37 NP两种定义是等价的 ? 用非确定性图灵机和验证算法给 NP类的 定义是等价的 清华大学 宋斌恒 38 关于团问题属于 NP的两种表述 ? 团:给定无向图和整数 k,确定是否存在一个 包含 k顶点的完全子图【团】【 Clique】。 ? 非确定图灵机算法:一个转移函数:给定 k, 可以不确定地转移到任意一个包含 k个顶点的 子图,然后确认该子图是否是团。其复杂度为 多项式。 ? 验证算法:给定一个 k阶子图,验证它是否为 团。 清华大学 宋斌恒 39 co-NP ? Complexity Class co-NP={L: complement of L in NP} ? 余集 清华大学 宋斌恒 40 P is a subset of NP P=NP=co-NP NP=co-NP P Co-NP NP ∩co-NP NP =P 清华大学 宋斌恒 41 The most possible cases Co-NP NP ∩co-NP NP P 清华大学 宋斌恒 42 NP-Complete and reducibility ? The “hardest” language in NP, with polynomial-time reducibility. ? 多项式约简: we call L 1 is polynomial- time reducible to L 2 , denoted as L 1 ≤ p L 2 , if there exists a polynomial-time function f: {0,1}* ? {0,1}* such that for all x in {0,1}*, x in L 1 iff f(x) in L 2 . 8 清华大学 宋斌恒 43 Class NPC ?NPC={L in NP: L’ ≤ p L for every L’ in NP} ?NP-Hard: if L’≤ p L for every L’ in NP, we call L is NP-hard ? Theorem34.4 If any one of the NPC problem is belong to P, then P=NP 清华大学 宋斌恒 44 Existence of NPC problem ? Circuit satisfiability:【芯片满足性问题】 – Input n Boolean variables after a sequence of Boolean operations it outputs a value from {0,1}, if there exists a input such that its output is one we say the circuit is satisfiable. ? Circuit-SAT={<C>:C is satisfiable boolean combinational circuit} ? Theorem Circuit-SAT is belong to NPC 清华大学 宋斌恒 45 NP-completeness proofs ? 证明 circuit-satisfiability 问题是 NPC问 题,依赖我们是否能够证明对于所有属 于 NP的语言 L都有: L ≤ p Circuit-SAT, 其 证明超出了我们的课程的内容。 ? 那么对于一般问题的 NP完全是如何证明 的?这里我们把其中的过程做个介绍: 清华大学 宋斌恒 46 Lemma34.8 ? 如果 L是一个语言,如果存在一个 L’属于 NPC,且满足 L’ ≤ p L,则 L是 NP-难的 ( NP-hard) ,如果进一步有 L是 NP则 L属 于 NPC。 ? 证明:利用定义可以证明 清华大学 宋斌恒 47 一般证明语言 L是 NPC的步骤 ? 证明 L属于 NP ? 选取一个已知的 NPC语言 L’ ? 找到一个算法 f使得 f将 L’的每一个 属于 {0,1}*实例 x映射到 L的实例 f(x). ? 证明函数 f满足 x 属于 L’ 等价于 f(x) 属于 L对于所有 属于 {0,1}*的 x都成立 ? 证明计算 f的算法是多项式的 清华大学 宋斌恒 48 Formula satisfiability ? Language SAT is defined as: –SAT的实例是一个逻辑公式 φ,其构成如下 1. n布尔变量: x 1 ,x 2 ,x 3 ,…x n . 2. m布尔运算符: and、 or、 not、 implication、 if and only if(?,∧,∨,→,?)和 3. 括号(没有多余括号) ? 我们可以证明 SAT属于 NPC【 Cook定 理】 9 清华大学 宋斌恒 49 证明: SAT属于 NP ? 只需要证明把一个实例代入公式进行布 尔运算即可,其复杂度是多项式没有任 何问题! ? 【有优先级的公式计算问题是多项式 的】 ?SAT是 NP- hard的:我们可以把 Circuit- Satisfiable问题约简为 SAT问题,而后证 明约简过程是多项式的和充要的 清华大学 宋斌恒 50 3- CNF- SAT ? Formula in conjunctive normal form: ?∧∨→? ? f= (clause 1 ) ∧ (clause 2 ) ∧ …∧ (clause k ) – Where clauses contains only ?, ∨ and variables(variables and ?variables called literials) ? 3-conjunctive-normal-form: every clause contains exactly 3 literals. 清华大学 宋斌恒 51 3-CNF-SAT是 NP完全的 ? 验证是多项式的,没有问题 清华大学 宋斌恒 52 The Clique Problem ? Clique Problem(团): A clique is a complete subgraph of G. Here above G is a graph. ? CLIQUE={<G,k>:G is a graph with a clique of size k} ? Theorem: Clique problem is NP-complete 清华大学 宋斌恒 53 Vertex-Cover problem ? A vertex-cover of an undirected graph G=(V,E) is a subset V’ contains in V such that if (u,v) in E, then u in V’ or v in V’(or both). ? A vertex-cover problem is to find a vertex cover of minimum size in a given graph ? Decision problem: VERTEX-COVER={<G,k>:G has a vertex cover of size k} ? VERTEX-COVER 属于 NPC 清华大学 宋斌恒 54 Hamiltonian-cycle ? A Hamiltonian cycle is a sequence of V such that it runs all the vertices once exactly excepting the start and end vertex is the same one(it runs two times), and the running sequence is a path of the graph. ? HAM-CYCLE is belong to NPC 10 清华大学 宋斌恒 55 Traveling-salesman Problem ? 旅行商问题:旅行商必须访问所有 n个城 市,而每两个城市之间的的行走费用不 同,求一条费用最小的路径 ? TSP is NP-complete 清华大学 宋斌恒 56 The subset-sum problem ?In the subset-sum problem, we are given a finite set S subset of N, and a target t in N, we ask whether there is a subset S’ subset of S whose elements sum to t. ? SUBSET-SUM={<S,t>,there exists a subset S’ of S such that t = Σ s∈ S’ s} ? SUBSET-SUM is NP-complete. 清华大学 宋斌恒 57 目前对 NPC问题的处理 ? 由于没有迹象表明 NPC问题可以有多项 式时间的算法,当然也没有证明它没 有。目前人们对于 NPC问题主要是采取 近似计算方法来解决这类问题, 清华大学 宋斌恒 58 Approximation Algorithms ? Optimization problem has a minimum or maximum value(we assume it is positive), we denote as C ? Approximation algorithm cannot get the optimal solution hence it computes an approximate value, called C*, ? Performance ratios for approximation algorithms: ρ(n) satisfies ?Max{C/C*, C*/C}≤ ρ(n) ? We call the algorithm is ρ(n)-approximation algorithm 清华大学 宋斌恒 59 Approximation scheme ? An approximation scheme for an optimization problem is an approximation algorithm that takes as input not only an instance of the problem, but also a value ε >0 such that for any fixed ε, the scheme is a (1+ε)-approximation algorithm ? Polynomial time approximation scheme ? Fully polynomial time approximation scheme 清华大学 宋斌恒 60