第九章NP完全性理论与近似算法PPT课件
清华大学算法分析与设计课件第10讲_NP完全性理论

清华⼤学算法分析与设计课件第10讲_NP完全性理论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⾮确定性的图灵机⾮常容易理解,在计算的任何时刻,机器可以在多种可能性中选择⼀种继续进⾏.它的计算是⼀课树,不同的分枝对应着机器不同的可能性.如果某个计算分枝导致接受状态,则接受该输⼊.与多带图灵机相同的是,它的计算能⼒与普通图灵机也是⼀样的.当然他的计算能⼒就不⼀样了。
第9章 NP完全性理论

P = NP无法证明
计算机科学与工程系
P
NP
教学进度
计算机科学与工程系
• 多数人相信,存在至少一个不可能有多 项式级复杂度的算法的NP问题,即 P≠NP
教学进度
计算机科学与工程系
• 约化:一个问题A可以约化为问题B的含 义即是,可以用问题B的解法解决问题A, 或者说,问题A可以“变成”问题 B。
教学进度
计算机科学与工程系
• 比如说,现在有两个问题:求解一个一元一次方程和 求解一个一元二次方程。 • 前者可以约化为后者,即知道如何解一个一元二次方 程那么一定能解出一元一次方程。 • 可以写出两个程序分别对应两个问题,那么能找到一 个“规则”,按照这个规则把解一元一次方程 程序 的输入数据变一下,用在解一元二次方程的程序上, 两个程序总能得到一样的结果。这个规则即是:两个 方程的对应项系数不变,一元二次方程的二次项系数 为 0。按照这个规则把前一个问题转换成后一个问题, 两个问题就等价了。
教学进度
计算机科学与工程系
• 所说的“可约化”是指的可“多项式地” 约化(Polynomial-time Reducible),即变 换输入的方法是能在多项式的时间里完 成的。 • 约化的过程只有用多项式的时间完成才 有意义。
教学进度
计算机科学与工程系
• “问题A可约化为问题B”有一个重要的直 观意义:B的时间复杂度高于或者等于A 的时间复杂度。也就是说,问题A不比 问题B难。
教学进度
计算机科学与工程系
教学进度
计算机科学与工程系
• 根据有限状态控制器的当前状态及每个读写 头读到的带符号,图灵机的一个计算步可实 现下面3个操作之一或全部。 • (1)改变有限状态控制器中的状态。 • (2)清除当前读写头下的方格中原有带符号并 写上新的带符号。 • (3)独立地将任何一个或所有读写头,向左移 动一个方格(L)或向右移动一个方格(R)或停在 当前单元不动(S)。
算法与计算复杂性课程(9)NP完全理论

1判定问题和语言判定问题定义与描述判定问题与语言的关系P类与NP类难解的问题与多项式可解的问题P类与NP类定义多项式变换与NP完全性多项式变换的定义及性质NP完全的定义Cook定理NP完全理论的基本概念判定问题和语言判定问题的定义陈述判定问题的标准格式引入判定问题的理由判定问题的形式描述——语言算法的形式描述——Turing机23定义一个判定问题π= (D π,Y π), 其中D π为实例集, Y π⊆D π为肯定实例的集合. 任给实例I ∈D π, 问I ∈Y π?陈述一个判定问题的标准格式对实例中参数的一般描述和一个肯定--否定问题.子图同构问题实例: 两个图G 1=(V 1,E 1), G 2=(V 2,E 2)问: G 1 是否包含与G 2 同构的子图? 即是否存在子集V’⊆V 1, E’⊆E 1使得|V’|=|V 2|, |E’|=|E 2|, 且有双射f : V 2→V’满足以下条件?{u,v }∈E 2⇔{ f (u ), f (v ) }∈E’判定问题的定义和描述引入判定问题的理由•判定问题的形式化描述简单.•许多优化问题的难度与判定问题的难度相关.判定问题∝优化问题将判定问题转换为优化问题. 时间为O(g(n))调用解优化问题的算法求解优化问题. 时间为O(f(n))用优化问题的解得到判定问题的解. 时间O(h(n))总时间:O(g(n)+f(n)+h(n))g(n) 和h(n) 为o(f(n)),判定问题时间为O(f(n))实例:巡回售货员问题是优化问题. 如果在实例中加上参数B, 问是否存在长度不超过B的旅行? 得到对应的判定问题.4算法的形式描述算法解判定问题π⇔用Turing 机识别语言L[π,e]说明:对判定问题π, 相关的L[π,e] 与编码系统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])7P类与NP类难解的问题定义实例P类与NP类的定义非形式定义(问题类)形式定义(语言类)P类与NP类的关系P⊆NPP=NP?8难解的问题定义:不存在确定型多项式时间算法的问题难解的原因•问题太难, 在多项式时间不可能找到解•解本身太庞大, 表示解的符号串长度不是输入长度的多项式函数一般只考虑第一种难解的问题两类难解的问题不可判定问题——不存在算法可判定的难解问题——有算法,但不存在多项式时间的算法9实例---不可判定问题停机问题是不可判定的定理1不存在根据任意Turing机T 的定义, 能够确定T 在上是否停机的算法.输入dT证明思路:证明T在输入T 上停机是不可判定的反证法:假设存在Turing机H,可以对任何Turing机T,判定T 在T 上是否停机.根据H,构造Turing机L, 使得对于L产生如下悖论:L 在L 上停机⇒L 在L 上不停机L 在L 上不停机⇒L 在L 上停机10证 明证 假定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 上停机 11 产生矛盾.实例---可判定的难解问题非确定型的难解问题(用非确定型的Turing机在多项式时间不可能解出) 判定半扩展正则表达式是否表示它的字母表上的所有 的串. The Design and Analysis of Computer Algorithms, Aho, Hopcroft, Ullman. 1972.NP类问题是判定问题 用非确定型的算法在多项式时间可解 到目前还没有找到多项式时间的确定型算法 是否为难解的问题(不清楚)12P类和NP类非形式定义P类: 用确定型算法在多项式时间可解的判定问题类 NP类: 用非确定型算法在多项式时间可解的判定问题类 非确定型算法求解判定问题π 任意给定实例 I ∈Dπ, 如果 I∈Yπ, 则存在结构 s,使得 当对输入I 猜想 s 时,检查阶段回答Yes; 如果 I∉Yπ, 则 不存在结构 s,使得当对输入I 猜想 s 时,检查阶段回答 Yes. 多项式时间的非确定型算法 对于解判定问题非确定型算法, 如果存在多项式 P, 对每个实例 I∈Yπ 存在猜想 s,使得检查阶段在时间 P(length[I]) 内回答 Yes.13几点说明1. 猜想的结构 s 的规模小于 P(length[I]) 2. 对肯定实例 I∈Yπ,至少存在一个猜想 s,使得检查阶 段在时间 P(length[I]) 内回答 Yes, 而不管其他猜想. 3. 对否定实例 I∈Dπ-Yπ 的运算可以不管. 4. 可以看成具有无限并行能力的计算机. 将所有可能的 结构猜想出来, 每个结构一道, 如果有一个回答Yes, 则 整个机器停机并回答Yes; 使得机器回答Yes的最短时 间就是计算时间. 5. 肯定与否定是不对称的14NP类问题肯定与否定不对称问题 π 与 π 的补问题 πc. π: 对于给定的实例 I,X是否成立? πc: 对于给定的实例 I,X是否不成立? Dπ = Dπc, Yπ = Dπc-Yπc, Yπc = Dπ-Yπ. π∈P ⇒ πc∈P π∈NP ⇒ πc∈NP? 不一定 Dπ=DπC15YπYπcπ∈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πc M’停机Yes ⇔ M 停机No ⇔ I∈Dπ-Yπ ⇔ I∈Yπc 所以 π∈P ⇔ πc∈P π∈NP, 存在解π的非确定型算法. 要想得到解 πc的 非确定型算法必须对 I∈Yπc的实例做猜想. 而 I∈Dπ- Yπ ⇔ I∈Yπc,对于I, 原来解π的非确定型算法可能根本 不停机, 因此不能由这个解π的非确定型算法得到解πc 的非确定型算法. π∈NP 推不出 πc∈NP16P与NP类的形式定义P = { L:存在多项式时间的DTM程序M使得 L=LM } NP ={ L:存在多项式时间的NDTM程序M使得 L=LM }非形式描述 判定问题 π 实例 I∈Dπ 肯定实例 I∈Yπ 实例规模 确定型算法 确定型算法对I 回答Yes 确定型算法求解判定问题 π 多项式时间的确定型算法 π∈P(问题类) 形式描述 语言 L 符号串 x 符号串 x∈LM 符号串长度 对所有输入停机的DTM程序 DTM程序对符号串x停机接受状态 DTM程序识别语言 L 多项式时间的DTM程序 L∈P (语言类)17P与NP的关系P ⊆ NP P = NP ? 可以证明 DTM 模拟 NDTM 的时间为指数时间 DTM 模拟 NDTM 的时间复杂性的上界定理2 P ⊆ NP证 任取 L 属于P, 令 M1 是多项式时间的识别 L 的 DTM 程序. 如下构造识别 L 的 NDTM 程序 M2. 对于给定的输入, 任意写下猜想串, 然后在检查阶段 模拟 M1 的动作即可. 易见 M2 是识别 L 的 NDTM 程序, 故 L 属于 NP.18DTM 模拟 NDTM定理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) 的猜想串, 至多有 Kq(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(Kq(n)q(n)) = O(2P(n))19多项式变换和NP完全性多项式变换的定义 非形式的定义 变换实例 形式定义 多项式变换的性质 NP完全性 NP完全的有关结果 Cook定理 可满足性问题 Cook定理2021设判定问题π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 的时间为多项式时间多项式变换的非形式定义23证明肯定实例当且仅当变换到肯定实例假设G 存在一条HC <v 1,v 2, ... ,v m >, 则<v 1,v 2, ... ,v m > 也是f (G ) 中的旅行路线. 易见该旅行路线中的每条边长度都是1, 总长为m . 所以f (G ) 为TS 的肯定实例.假设<v 1,v 2, ... , v m >是f (G ) 中长度不超过m 的旅行. 由于任何城市间的距离为1 或2, 总共有m 个距离, 因此每个距离必为1. 从而证明了G 是HC 的肯定实例.证明变换的时间为多项式时间计算d (v i , v j ), i ≠j . 共计算m (m -1)/2次, 每次要检查{v i , v j } 是否属于E (可以用邻接表进行). 显然是多项式时间.证明24多项式变换的形式定义设∑1, ∑2为字母表, L 1⊆∑1* , L 2⊆∑2* 是语言, 如果f : ∑1*→∑2*满足:I. 存在计算f 的多项式时间的DTM 程序II. ∀x ∈∑1*, x ∈L 1 ⇔f (x )∈L 2则称f 是从L 1到L 2的多项式变换, 记作L 1 ∝L 2.所谓多项式时间的DTM 程序M 计算函数f : ∑*→Γ*是指: 输入字符表为∑, 带字符表为Γ. M 对∑*上的所有长度为n 的字符串在n 的多项式步内停机,且f 对于任何x ∈∑*, f (x ) 是输入x 到M 停机时带方格1 到最右边的非空白方格为止的符号串.若L 1∝L 2, L 2∝L 1, 则称L 1与L 2是多项式等价的.25(1)若L 1∝L 2, 则L 2∈P ⇒L 1∈P .(2)若L 1∝L 2, L 2∝L 3, 则L 1∝L 3.证(1)设∑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. M ’识别L 1是由于x ∈L 1⇔f (x )∈L 2 ⇔M 2对f (x )停机q Y ⇔M ’对x 停机q Y 设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 .多项式变换的性质NP完全性与有关结果NP完全性若L∈NP, 且对于任意语言L’∈NP都有L’∝L, 则称L是NP完全的, 记作L∈NPC, 其中NPC是NP完全的语言类.类似可以定义NPC 为NP 完全的问题类.有关NP 完全的一些结果, L2∈NP, L1∈NPC, 且L1∝L2, 则L2∈NPC.(1)若L1(2)若L∈NPC, 则L∈P⇒P = NP.(3)若P≠NP, 则NPC∩P = ∅.证明留作思考.26几个概念布尔变量的集合U: ={ u1, u2, ... ,um}, ui为布尔变量U上的文字: 对于u∈U, u 或ū称为U上的文字U上的子句c: U上若干文字的集合,表示这些文字的析取.例如{ u1, u3, u5 }表示u1+ u3 + u5U上的子句集C: U上的字句的集合,表示C 中子句的合取.例如C={{u1, u2, ū5}, {u1, u3, ū5}, {u5}}表示(u1+u2+ū5)(u1+u3+ū5)(u5)可满足性问题27可满足性问题(续)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 中的每个子句可满足性问题(SAT)实例: 布尔变量集合U以及U上的子句集C问: 是否存在满足C的真值赋值?28Cook定理Cook定理(1971)可满足性问题SAT 是NP 完全的.证明思路1. 设计一个解SAT 问题的多项式时间的非确定型算法2. 证明任何NP类中的语言L 可以多项式变换到SAT.•设M 是接受L 的多项式时间的NDTM程序,将M在x 上的计算变换到一个SAT 的实例。
NP完全问题证明PPT幻灯片

aA
i 1
k
k
k
s(ai ) 2 s(ai ) B s(ai ) B
i 1
i 1
i 1
k
4 s(ai ) i 1
假设A’ A使得A’和A-A’的元素大小之和相等,即
k
s(a) s(a) 2 s(ai )
aA'
aA A'
i 1
由于
k
s(b1 ) s(b2 ) 3 s(ai )
设V’是V中不超过K的顶点覆盖, 则V’中必包含Ti中的一个顶点 和每个Ej’中的两个顶点, 至少要n+2m个顶点. 而K=n+2m, 故V’中一 定只包含每个Ti中的一个顶点和每个Ej’中的两个顶点.
如下得到赋值 uiV’ t(ui)=T
ūiV’ t(ui)=F
Ej’’中的三条边有两条被Vj’V’中的顶点覆盖, 第三条必被 V’Vi中的顶点覆盖. 这表示在Vi中的这个顶点对应的文字取真. 所以子句cj被满足. 从而C被满足.
(w1,x2,y2),(w1,x2,y1),(w2,x1,y1) s(a1) = 01 00 00 01 00 01 = 210 + 24 + 20 s(a2) = 01 00 00 01 01 00 = 210 + 24 + 22 s(a3) = 00 01 01 00 01 00 = 28 + 26 + 22 B = 01 01 01 01 01 01
问题描述:给定一个3元合取范式α,判定它是否可 满足。
证明思路: 3-SAT∈NP是显而易见的。为了证明3-
SAT∈NPC,只要证明CNF-SAT∝p 3-SAT,即合取 范式的可满足性问题可在多项式时间内变换为3-SAT。
第九章 NP完全理论

9.2.1 P 类问题
★定义 1 设 A 是问题 的一个算法。如果在处理问题 的实例时,在算法的执行过 程中,每一步只有一个确定的选择,则称算法 A 是确定性算法。因此,确定性算法对于同 样的输入实例一遍又一遍地执行,其输出从不改变。通常在写程序时,用到的都是一些确定 性算法,比如说排序算法和查找算法等。 ★定义 2 如果对于某个判定问题 ’,存在一个非负整数 k,对于输入规模为 n 的实 例,能够以 O(nk)的时间运行一个确定性算法,得到是或否的答案,则该判定问题 ’是一个 P(polynomial)类问题。
9.1 易解问题和难解问题
无论是计算机专业人士还是计算机科学家, 在研究问题的计算复杂性时, 它们首先考虑 的都是一个给定的问题是不是能够用某些算法在多项式时间内求解, 即算法的时间复杂性是 k 不是 O(n ),其中,n 是问题规模,k 是一个非负整数。Ednonds 于 1965 年指出只有多项式 时间算法才称得上是 “好”算法,他还认为有的问题可能不存在求解它们的这种“好”算法。 其实,多项式时间复杂性并不一定就意味着较低的时间要求,例如:1099n8 和 n100 都是 多项式函数,但它们的值却大得惊人。既然如此,为什么科学家还要用它作标准去定义问题 呢?原因可能有以下几条: (1) 这样做可以为有过多时间要求的那类问题提供一个很好的标准。 (2) 多项式函数在加、乘运算下是自封闭的,并且在那些可以作为有用的分析算法 复杂性的函数类中,多项式函数是具有这种性质的最小函数类。 (3) 多项式时间复杂性的分析结果,对于常用的各种计算机形式模型,具有不变性。 应该说明,对于能找到多项式时间算法的实际问题,它们的多项式时间复杂性函数,一 般都不含有特大系数或较高幂指数的项。
9.2 P 类和 NP 类问题
第九章-NP完全性理论与近似计算培训课件

寄存器可存放一个任意大小的整数。因此若设l(i)是整数i所
占的二进制位数,则
l(i)lo1g|i|
i 0 i 0
9.1.2 随机存取存储程序机P
1、RASP的结构
❖ RASP的整体结构类似于RAM,所不同的是RASP 的程序是存储在寄存器中的。每条RASP指令占据2 个连续的寄存器。第一个寄存器存放操作码的编码, 第二个寄存器存放地址。RASP指令用整数(1~18) 进行编码。
解释二:把RAM程序当作一个语言接受器。 将字符串S=a1a2…an放在输入带上。在输入带的第一个,
第二个,…,第n个方格中依次放入符号a1,a2,…,an。然 后在第n+1个方格中放入0,作为输入串的结束标志符。如果 一个RAM程序P读了字符串S及结束标志符0后,在输出带的第 一格输出一个1并停机,就说程序P接受字符串S。
0、有穷自动机(补充)
确定型有穷自动机的定义:
一台确定型有穷自动机是一个五元组(Q,
, , S, F)。其中, Q, , 都是有穷集合。 • Q:有穷状态集合 • :字母表
• S: 初始状态, S Q • F: 终止状态集合,F Q • : 转移函数, : Q Q
确定性有穷自动机举例
例:一台确定型有穷自动机,它接受这样的语言:由a,b 字符构成、不含3个连续b字符的有限长度的字符串。
2、RASP程序的复杂性
不管是在均匀耗费标准下,还是在对数耗费标准 下,RAM程序和RASP程序的复杂性只差一个常 数因子。在一个计算模型下T(n)时间内完成的输 入-输出映射可在另一个计算模型下模拟,并在 kT(n)时间内完成。其中k是一个常数因子。空 间复杂性的情况也是类似的。
9.1.3 图灵机
• 大多数指数时间算法只是穷举搜索法的变种 • 多项式时间算法通常只有在对问题的结构有了某些比
算法设计与分析王红梅NP完全理论PPT课件

汉诺塔问题不是NP类问题
第14页/共33页
P类问题和NP类问题的主要差别: ✓ P类问题可以用多项式时间的确定性算法来 进行判定或求解; ✓ NP类问题可以用多项式时间的非确定性算法 来进行判定或求解。
通常将存在多项式时间算法的问题看作是易解问题 (Easy Problem),将需要指数时间算法解决的问题 看作是难解问题(Hard Problem)。
例:易解问题——排序问题、查找问题、欧拉回路 难解问题——TSP问题、 Hanio问题、Hamilton回路
第7页/共33页
为什么把多项式时间复杂性作为易解问题和 难解问题的分界线?
第3页/共33页
例:对三个数进行排序的判定树
是
a1<a2
否
是
a2<a3
否
是
a1<a3
否
a1<a2<a3
a1<a
是
3
a2<a1<a3 否
a2<a
是
3
否
a1<a3<a2
a3<a1<2
a2<a3<a1
a3<a2<a1
第4页/共33页
2.1.3 最优算法
所谓最优算法(Optimality Algorithm)是 指在某一种度量标准下,优于该问题的所有 (可能的)算法。
第24页/共33页
定义2.7 令Π是一个判定问题,如果对于NP类 问题中的每一个问题Π',都有Π'∝pΠ,则称判定 问题Π是一个NP难问题。
算法设计与分析课件--NP完全性理论-NP完全问题及近似算法

1
第八章 NP完全性理论
目录
8.1 异解问题和难解问题
8.2 P类问题和NP类问题
8.3
NP完全问题
8.4 NP完全问题的近似算法
2
8.3 NP完全问题
问题变换:
➢ NP类问题在最坏情况下的时间复杂性一般都是快速增长的指数函 数。希望能够在NP类问题内部找到一种方法,比较两个问题的计 算复杂性。
❖该近似算法的相对误差定义为=
cc* c*
。若对问题的输
入规模n,有一函数ε(n)使得 c c* ≤ε(n),则称ε(n)
c*
为该近似算法的相对误差界。
13
8.4 NP完全问题的近似算法
NPC问题的近似算法示例 - TSP:
➢ 给定一个完全无向图G=(V,E),其每一条边(u,v)∈E有一非 负整数费用c(u,v)。要找出G的最小费用哈密顿回路。如果 TSP满足三角不等式性质,即对于任意3个顶点u,v,w∈V有 :c(u,w)≤c(u,v)+c(v,w),则称该TSP为欧几里得TSP,否 则称为一般TSP。
12
8.4 NP完全问题的近似算法
NPC问题的近似算法的性能:
❖若一个最优化问题的最优值为c*,求解该问题的一个近 似算法求得近似最优解相应的目标函数值为c,则将该近 似近≤似算ρ比法(是n的)问。近题ρ似输(比n入)定为规义1模时为n,的求=一m得a个x的c函c*近, c数c*似 ρ。解(在为n)通最,常优即情解m况a。x 下cc* ,,cc*该
➢ 传递性:设P1、P2和P3是3个判定问题。若P1∝τ(n)P2,且P2∝τ(n)P3 ,则P1∝τ(n)P3。
4
8.3 NP完全问题
多项式时间变换示例:
第九讲NP完全问题PPT教学课件

2020/12/11
14
非确定性算法的运行时间,是推测阶段 和验证阶段运行时间的和。
– 若推测阶段的运行时间为O(ni) – 验证阶段的运行时间为O(nj) – 则对某个非负整数k,非确定性算法的运行
时间为: O(ni) + O(nj) = O(nk) 。
2020/12/11
15
NP类判定问题
12
非确定性算法
问题∏的非确定性算法的两个阶段:推测阶 段和验证阶段。
– 推测阶段:对规模为n的输入实例x,以多项式时 间O(ni)产生输出y,而不管y的正确性
– 验证阶段:以多项式时间O(nj)的确定性算法验 证两件事情:
检查上一阶段的输出y是否具有正确的形式。
如果y不具正确的形式,算法就以答案no结束;
如果是,答案为yes,否则,答案为no。
存在多项式时间的确定性算法,对前面的推测进 行检查和验证。
因此,m团问题是NP类判定问题。
2020/12/11
28
难解问题的计算相关性
计算相关:某类问题可以归约为另一类问 题
计算相关的问题
– 若它们之一可用多项式时间求解,则其它同 类问题也可用多项式时间求解;
– 给定有向赋权图G=(V,E)(权为正整数)、正整数k、 及两个顶点s,t∈V,是否存在着一条由s到t、长度至多 为k的路径。
可排序的判定问题SORT:
– 给定个元素的数组,是否可以按非降顺序排序。
2020/12/11
11
归约
归约的定义:
– 令∏和∏’是两个判定问题
– 如果存在一个具有如下性能的确定性算法A
– 给定集合、由的子集构成的集类A、以及1和 |A|之间的整数k,在A中是否存在k个元素,它 们的并为S。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/11/27
计算机算法设计与分析
11
δ的进一步说明
• δ操作可以表示为δ(q,a1,…ak)=(q’,(a1’,d1),…,(ak’,dk)) • 当图灵机处于状态q且对一切i,1<=i<=k,第i条带的
读写头扫描着的当前方格中的符号为ai时,图灵机就 按这个δ操作进行工作:
1. q变为q’ 2. a变为a’ 3. 左移或者右移
2020/11/27
操作数
指令含义
=i / i / *i
取操作数入累加器
i / *i
将累加器中数存入内存
=i / i / *i
加法运算
=i / i / *i
减法运算
=i / i / *i
乘法运算
=i / i / *i
除法运算
i / *i
读入
=i / i / *i
输出
标号
无条件转移到标号语句
标号
正转移到标号语句
第九章
NP完全性理论
2020/11/27
计算机算法设计与分析
1
难?易?
• 可在多项式时间内解决的问题看作是 “易”解问题。
• 将需要指数函数时间解决的问题看作是 “难”问题。
• 这里所说的时间是针对问题规模n的多项 式还是指数函数。
2020/11/27
计算机算法设计与分析
2
内容
• 两部分:
– 三种机器(RAM, RASP, TM) – NP完全理论
2020/11/27
计算机算法设计与分析
12
图灵机的语言
• 当 进且入仅终当止从状指态q定f时的,初称始图状灵态机q0接开受始这,个经输过入一符系号列串计。算步后,最终 • 所有这台图灵机能接受的输入符号串的集合就是这台图灵机识别
的一个语言。
• 图灵机也可作为计算函数的装置。函数的自变量可编码成一字符 串输入到一条输入带上,用一特殊符号#隔开。若图灵机经过有 限步后,在一条指定的带上输出整数y并停机,则可以说图灵机 计算出了f(x)=y。
2020/11/27
计算机算法设计与分析
6
随机存取存储程序机RASP
(Random Access Stored Program Machine)
• RASP与RAM的区别在于(1)RASP的程序存储 在内存并且可以修改自身;(2)RASP不允许间 接寻址,它通过修改指令模拟间接寻址。
• RASP的指令集见表9-4。
已不将经确图证定林明的机各图是类林原变机型形类称图似为林于确机不定在确的可定,计的记算自为的动DT能机M力,;上即而等 价将于不原确型定δ:图的Q林图×机林T。机→但记ρ(是为Q×在NDT复×T杂M{L性,, 是R}有) 区别的。
• 注意在均匀耗费标准下这个关系不成立。TM 模拟RAM的时间复杂性可能是指数的关系。
三种机器在计算能力上是等价的,差别在于计算速度不同
2020/11/27
计算机算法设计与分析
14
图林机的变形
• 多道图林机(输入带上有多个道)。 • 双向图林机 (输入带被视为左右均是无穷的)。 • 多带图林机(具有多条输入带)。 • 多头图林机 (具有多个磁头)。 • 多维图林机(输入带是多维的)。 • 不确定的图林机(有限控制器是不确定的)。
标号
零转移到标号语句
停机
计算机算法设计与分析
5
RAM机的复杂性标准
• 均匀耗费标准
每条RAM指令需要一个单位时间,每个寄存器 占用一个单位空间。 • 对数耗费标准
RAM指令的执行时间与操作数的长度的对数(l(i)) 成比例,一个寄存器可放一个任意大小的整数。
若每个操作数不超过一个机器字,则用均匀耗 费标准是合理的,否则适用对数耗费标准。
• RASP更加接近冯·诺伊曼体系结构。
• 无论是采用均匀耗费标准还是对数耗费标准, 在相差一个常数因子的意义下,RAM与RASP 是等价的。
2020/11/27
计算机算法设计与分析
7
RAM与RASP是等价的
• 定理 不论在均匀耗费标准下还是在对数耗费标准下, 对时间复杂性为T(n)的任一RAM程序,都存在一个时 间复杂性为kT(n)的RASP程序与之等价,k为常数。
• 定理 不论在均匀耗费标准下还是在对数耗费标准下, 对每一个时间复杂性为T(n)的RASP程序,都有一个时 间复杂性为kT(n)的RAM程序与之等价,k为常数。
2020/11/27Biblioteka 计算机算法设计与分析8
图林机(Turing Machine)的构造
• 图林机(Turing Machine)是英国数学家Turing在 1936年提出的计算模型,被认为是当今计算机 的理论模型。下面是图林机(TM)原型的构造:
2020/11/27
计算机算法设计与分析
3
随机存取机RAM (Random Access Machine)的构造
… 只读输入带
指令 计数器
程序存储部件
r0 r1 r2
…
累加器
内存储器
… 只写输出带
2020/11/27
计算机算法设计与分析
4
随机存取机RAM的指令集
操作码 ⑴LOAD ⑵STORE ⑶ADD ⑷SUB ⑸MULT ⑹DIV ⑺READ ⑻WRITE ⑼JUMP ⑽JGTZ ⑾JZERO ⑿HALT
1. 改变有限状态控制器的状态 2. 清除读写头下方的原有符号,并写上新的
符号
3. 读写头向左或者向右移动一个方格,或不 动
2020/11/27
计算机算法设计与分析
10
TM的数学描述
M = (Q, T, I, δ, b, q0, qf ) 其中:
• Q是有限状态的集合; • T是有限个带符号的集合; • I T,是输入符号的集合; • δ:Q×Tk→Q×(T×{L,R,S})k为转移函数; • b是唯一的空白符,b∈T – I; • q0和qf分别为初始状态和终止状态。
…… 输入带
磁头
有限 控制器
输入带被视为右无穷,并被划分为一个个 单元用于存放符号(带符号)。 有限控制器由有限个状态构成。
磁头可左右移动,读写带符号。
2020/11/27
计算机算法设计与分析
9
图灵机的操作
• 根据有限状态控制器的当前状态及每 个读写头读到的带符号,图灵机的一 个计算步可实现下面三个操作之一或 全部。
• 如果对于某个长度为n的输入,图灵机不停机,T(n)对这个n值无 定义。
• 例:4整除问题:构造一个图灵机,判断输入的二进制串是否能 被4整除。
2020/11/27
计算机算法设计与分析
13
RAM与TM
• 由定理可知:
– 可用RAM来模拟TM – 也可用TM来模拟RAM
• 定理(补):在对数耗费标准下,对于同一个 算法,采用RAM模型和TM模型的时间复杂性 是多项式相关的。对空间复杂性亦如此。