NP完全性理论
第三章NP完全理论

§2 P和NP
在第一章图灵机的定义中,将“协调性 条件”取消,当某个格局存在多于一 个图灵机指令符合当前格局时,从中 任选一条执行。如此定义的图灵机称 为不确定型的图灵机。此后将满足 “协调性条件”的图灵机改称为确定 型图灵机。
华中科技大学计算机科学与技术学院 jrc@
华中科技大学计算机科学与技术学院 jrc@
§2 P和NP
例 A={0,1}, C={x∈A*|x是一个合数的二进制表示} 例如 001001∈C, 0101 ∉C 可构造如下一个接受语言C的不确定型算法: 输入:x∈A* 1. 设x表示的二进制数为n,任意挑选一个正整数m,1<m<n; 2. 若m整除n,则停机;否则执行3. 3. 死循环(比如while(x==x){;;;}) x∈C当且仅当此算法运行时存在一个最终停机的计算过程。 在每个最终停机的计算过程中,只需挑选一个不超过|x| 位的二进制数,然后做一次被除数为|x|位二进制数的除 法,判断余数是否为0即可,计算时间不超过一个关于 |x|的多项式。 据此,C∈NP 注意 :如果将“任意挑选一个”改为“遍历”,可以得到一 个指数(为什么?)计算时间的确定型算法。
华中科技大学计算机科学与技术学院 jrc@
§2 P和NP
定理2 若R ≤pQ , Q≤pL,则R≤pL 定理3 若Q、L ∈P, Q、L≠φ, Q、L≠A*,则 Q≤pL, L≤pQ
华中科技大学计算机科学与技术学院 jrc@
§2 P和NP
定义 语言L被称作为NP难度的(NP-hard) 是指对任一语言Q∈NP都有Q≤pL; 如果L为NP难度的且L∈NP,则称L是NP 完全的(NP-complete)。 若语言L为NP难度的,则:若L的判定问题, 即x∈?L问题易解,则对任何属于NP的语 言Q, Q的判定问题都易解。 在这个意义 上L具有了不不低于NP中所有语言的判定 难度。 语言L为NP完全的,其意义是指L是NP中 判定难度最高的语言。
NP完全的问题

NP完全的问题一个NP-完全的问题具有如下性质:它可以在多项式时间内求解,当且仅当所有的其他的NP-完全问题也可以在多项式时间内求解。
P是所有可在多项式时间内用确定算法求解的判定问题的集合。
NP 问题是所有可用多项式时间算法验证其猜测准确性的问题的集合。
令L1和L2是两个问题,如果有一确定的多项式时间算法求解L1,而这个算法使用了一个在多项式时间内求解L2的确定算法,则称L1约化为L2。
如果可满足性约化为一个问题L,则称L问题是NP-难度的。
如果L是NP难度的且L(-NP,则称L是NP-完全的。
NP并不是NON-POL YNOMIAL,把NP说成是NON-POL YNOMIAL,是望文生义,读书不求甚解。
事实上,如果你能够证明某个NP问题是个NON-POL YNOMIAL的问题,你就可以去领那七个百万美元数学大奖中间的一个了。
数学上著名的NP问题,完整的叫法是NP完全问题,也即“NP COMPLETE”问题,简单的写法,是NP=P?的问题。
问题就在这个问号上,到底是NP等于P,还是NP不等于P。
证明其中之一,便可以拿百万美元大奖。
这个奖还没有人拿到,也就是说,NP 问题到底是Polynomial,还是Non-Polynomial,尚无定论。
NP里面的N,不是Non-Polynomial的N,是Non- Deterministic,P代表Polynomial倒是对的。
NP就是Non-deterministic Polynomial的问题,也即是多项式复杂程度的非确定性问题。
如果一个判定性问题的复杂度是该问题的一个实例规模n的多项式函数,则这种可以在多项式时间内解决的判定性问题属于P类问题。
P类问题就是所有复杂度为多项式时间的问题的集合。
通俗地称所有复杂度为多项式时间的问题为易解的问题类,否则为难解的问题。
有些问题很难找到多项式时间的算法(或许根本不存在),例如“找出无向图中哈米尔顿回路”问题。
但如果给了该问题的一个答案,可以在多项式时间内判断这个答案是否正确。
NP完全问题(纯理论)

NP类问题举例—求真因子问题
国王: 顺序算法 宰相: 并行算法
是否所有的难解问题通过并行计算使其在多项式内可 解?
关于并行算法:当将一个问题分解到多个处理器上解 决时,由于算法中不可避免地存在必须串行执行的操 作,从而大大地限制了并行计算机系统的加速能力。
NP类问题举例—求真因子问题
阿达尔定律:串行执行操作仅占全部操作1%,解 题速度最多也只能提高一百倍。
以多项式作为分界函数?
原因有两个: 一、常见算法大致分为两类: 一类是多项式时间内可实现的 另一类需要指数时间(O(cn))
多项式时间算法的可实现性远大于指数时间算法。 (参见P8,表1.2)
以多项式作为分界函数?
二、多项式时间算法与计算模型无关 算法的研究依赖于计算模型。在不同类型计算模型 上实现算法,计算时间不同。
SATISFIABILITY∝p3-SATISFIABILITY
几个典型的NPC问题
图的着色问题(COLORING) 判定问题:COLORING 输入:无向图G=(V,E) 问题:是否可用k种颜色为图G的顶点着色,使 得相邻顶点不会有相同颜色。
3-SATISFIABILITY∝pCOLORING
定义12.3 令П 是一个判定问题,如果: (1) П ∈NP; (2) 对NP中的所有问题П ′∈NP,都有 П ′∝pП ; 则称判定问题П 是NP完全 (NPC)的。
P类、NP类、NPC类问题关系
根据定义,可用如下图表示三者之间的关系:
NP
P
NPC
P类、NP类、NPC类问题关系
对NPC问题,有个重要性质 对NPC类中的一个问题,如果能够证明用多项式 时间的确定性算法来进行求解或判定,那么, NP中的所有问题都可以通过多项式时间的确定性 算法来进行求解或判定。
第九章 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完全问题证明

均分∈ 8.5.5. 均分∈NPC 子集A :1≤ 子集A’ = {ai:1≤i≤k} 满足
a∈ A'
∑ s( a ) = B
当且仅当 M’ = {mi: ai∈A’}是M的匹配 } A的最后两个元素b1,b2 的最后两个元素b
s ( b1 ) = 2 ∑ s ( a i ) − B
i =1
k
s ( b2 ) = ∑ s ( a i ) + B
均分∈ 8.5.5. 均分∈NPC
构造A 构造A,|A| = k +2 对应于每个m 对应于每个mi = (wf(i),xg(i),yh(i)) 有ai. 为二进制数,分成3q 3q段 每段有p log(k+1) s(ai)为二进制数,分成3q段,每段有p = log(k+1)位,共计 3pq位 每段对应一个W 3pq位,每段对应一个W∪X∪Y中的元素. Wf(i),xg(i),yh(i) 所代 中的元素. 表的段的最右位为1 其它为0. 表的段的最右位为1,其它为0.
均分∈ 8.5.5. 均分∈NPC
实例:有穷集A s(a)∈ 实例:有穷集A,∀a∈A, s(a)∈Z+. 是否存在A ⊆ 问:是否存在A’⊆A,使得
a∈ A'
∑ s( a ) =
a∈ A− A均分是NP类问题。下面将3DM变换到均分问题 显然均分是NP类问题。下面将3DM NP类问题 3DM变换到均分问题 3DM的实例 的实例, 设W,X,Y,M ⊆ W×X×Y 是3DM的实例, 其中|W| q, 其中|W| = |X| = |Y| = q, W = {w1,w2,… ,wq} X = {x1,x2,… ,xq} Y = {y1,y2,… ,yq} M = {m1,m2,… ,mk}
NP完全理论

清华大学出版社
算法设计与分析
2.3.2 确定性算法与 类问题 确定性算法与P类问题
定义2.1 设A是求解问题 的一个算法,如果在算法 是求解问题Π的一个算法 定义 是求解问题 的一个算法, 的整个执行过程中,每一步只有一个确定的选择, 的整个执行过程中,每一步只有一个确定的选择, 则称算法A是确定性(Determinism)算法。 则称算法A是确定性(Determinism)算法。 定义2.2 如果对于某个判定问题Π,存在一个非负 如果对于某个判定问题Π 定义 整数k,对于输入规模为n的实例 能够以O(nk)的 的实例, 整数 ,对于输入规模为 的实例,能够以 的 时间运行一个确定性算法,得到yes或 的答案 的答案, 时间运行一个确定性算法,得到 或no的答案, 则该判定问题Π是一个 P 类(Polynomial)问题。 则该判定问题Π )问题。 所有易解问题都是P类问题 所有易解问题都是 类问题
清华大学出版社
算法设计与分析
定义2.4 如果对于某个判定问题Π,存在一个非 如果对于某个判定问题Π 定义 负整数k,对于输入规模为n的实例 能够以O(nk)的 的实例, 负整数 ,对于输入规模为 的实例,能够以 的 时间运行一个非确定性算法,得到yes或no的答案, 时间运行一个非确定性算法,得到 或 的答案, 的答案 则该判定问题Π 则该判定问题Π是一个 NP 类(Nondeterministic Polynomial)问题。 )问题。
清华大学出版社
算法设计与分析
第2章 NP完全理论 章 完全理论
2.1 2.2 2.3 2.4 2.5 下界 算法的极限 P类问题和 类问题 类问题和NP类问题 类问题和 NP完全问题 完全问题 实验项目——SAT问题 实验项目 问题
第 4 章 第2节 算法复杂性问题 NP完全问题

第1.1章算法复杂性问题-----NP完全问题§1 NP问题与NP完全问题在第一章中我们初步讨论了算法复杂性的概念。
从第三章到第七章,我们讨论了不少问题和它们的算法。
这些问题基本上都是P问题,即它们都有多项式算法。
但在第一章中我们就已经指出,有不少问题至今没有找到多项式算法。
一个问题很自然地摆到我们面前:一个组合最优化问题,如果没有找到它的多项式算法,原因究竟是什么?是因为它本质上就不存在多项式算法呢?还是由于我们研究得不透彻或者我们的能力不够?后一种可能性是可能存在的。
线性规划问题,从三十年代开始提出,一直延续到七十年代,几十年没有找到一个多项式算法,已经有不少人认为线性规划可能没有多项式算法。
但在1979年,年轻的苏联数学工作者XиЧиЯН找到了第一个解线性规划的多项式算法——椭球算法,以后又出现了Karmaka算法。
在科学史上,经过几百年甚至上千年才被攻克的难题不胜枚举。
因此,如果能够根据问题的难度对问题进行分类,将会给算法研究带来巨大的好处。
首先,我们知道我们研究的问题难度很大,不可能找到或者很难找到有效算法,我们将会把精力集中于寻找问题的近似算法,避免了可能无效的研究。
第二,如果我们知道两个问题有相同的难度,那末它们之间必然存在某种内在联系,解决第一问题的方法经过适当的修改很可能就能解决第二个问题,这就对我们寻找一个解决第二个问题的方法带来帮助。
但是,对问题进行分类和判定一个问题属于哪一类,这两件工作都十分困难。
两个看上去很相似的问题,例如第一章中介绍的中国邮递员问题和旅行售货员问题。
但前者提出不久就被判定为P问题,而对后者研究了四十多年却没有结果。
在第一章中我们提到“理想计算机”模式。
目前绝大多数算法理论讨论都在一种“图灵机”的理想数学模型上进行,“图灵机”是为纪念英国科学家图灵而得名,因为他最早提出了这个模型。
图灵机是对目前使用的实际计算机的一个很好的简化和抽象。
凡是用图灵机描述的用多项式时间运行的算法,都可以在实际计算机上用多项式时间运行;反过来,实际计算机上的多项式算法,也都可在图灵机上被描述并按多项式时间运行。
第8章_NP完全性理论

13
8.2 P类问题和NP类问题
P类语言与NP类语言:
❖ P={L|L是一个能在多项式时间内被一台DTM所接受的语言} ❖ NP={L|L是一个能在多项式时间内被一台NDTM所接受的语言}
21
8.3 NP完全问题
NP完全问题:
令P1是一个判定问题,如果问题P1属于NP类问题,并 且对NP类问题中的每一个问题P2,在P2∝pP1,则称判 定问题P1是一个NP完全(NP Complete, NPC)问题。
NP类问题
NP完全(NPC) 问题
22
8.3 NP完全问题
对于“NPC问题”的论述:
12
8.2 P类问题和NP类问题
NP(Non-deterministic Polynomial)类问题:
➢ 如对于某个判定问题,存在一个非负整数k,对于输入规模为n的实 例,能以O(nk)的时间运行一个非确定性算法得到是或否的答案。 • 能用非确定算法在多项式时间内求解的判定问题。如哈密尔顿回 路问题。 • NP类问题是难解问题的一个子类。 • NP类问题并不要求给出一个算法来求解问题本身,而只要求给 出一个确定性算法在多项式时间验证它。
➢ 求解配对问题,需要进行三次变换: • 将配对问题的输入X,Y变成排序问题的两个输入I1′, I2′; • 应用算法A对I1′, I2′分别排序,得到两个排序输出O1′, O2′; • 将两个排序输出O1′, O2′转换成配对问题的输出O。 • 以上操作可在多项式时间内完成,因此该变换为多项式时间变换
• STEP3:确定性地检查V’的团性质。若V’是一个团则接受输入,
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2018/10/13 计算机算法设计与分析 11
TM模型与RAM模型的关系
定理8-5:在对数耗费标准下,对于同一个算法, 采用RAM模型和TM模型的时间复杂性是多项 式相关的。对空间复杂性亦如此。 注意在均匀耗费标准下这个关系不成立。TM 模拟RAM的时间复杂性可能是指数的关系。 因为TM模型比较原始,所以在大多数情况下 采用RAM模型。 若算法在RAM模型下的复杂性为多项式,则也 就认为其在TM模型下的复杂性为多项式。
计算机算法设计与分析 6
2018/10/13
TM的数学描述
其中: Q是有限状态的集合; T是有限个带符号的集合; I T,是输入符号的集合; δ:Q×T→Q×T×{L, R}为转移函数; b是唯一的空白符,b∈T – I; q0和qf分别为初始状态和终止状态。
2018/10/13 计算机算法设计与分析 7
图林机(Turing Machine)是英国数学家Turing在 1936年提出的计算模型,被认为是当今计算机 的理论模型。下面是图林机(TM)原型的构造:
…… 输入带
磁头
有限 控制器
输入带被视为右无穷,并被划分为一个个 单元用于存放符号(带符号)。 有限控制器由有限个状态构成。 磁头可左右移动,读写带符号。
2018/10/13 计算机算法设计与分析 12
2018/10/13 计算机算法设计与分析 10
用TM模拟RAM
定理8-4:设算法A,对于任何长度为n的输入, 按对数耗费标准在RAM下的时间复杂性为T(n), 则A在TM下的时间复杂性为O(T2(n))。 证明:用一个五带TM模拟RAM的工作, TM 其中: 模拟RAM除乘/除法外的指令的时间为常数, 查找寄存器的时间为 带1用<地址, 内容 n> ,整个时间为 的形式存放寄存器; O(T2(n))。 带2的乘除法, 存放累加器内容;带 3作为暂存工作带; 对RAM TM用加减法模拟的耗费不 带4和带5作为输入带和输出带; 会超过乘除法耗费的平方。 用TM的状态对应RAM的一步程序。
带上;工作带上初始时为初始状态q0;然后依 据状态及现行扫描的符号选择并执行编码。
2018/10/13 计算机算法设计与分析 9
i
用RAM模拟TM
定理8-3:设算法A,对于任何长度为n的输入, 在图林机TM下的时间复杂性为T(n),则A在 RAM下的时间复杂性为O(T2(n))。 证明:每个寄存器放输入带一个单元的内容, 这样RAM就可以模拟TM的工作。 均匀耗费标准下,模拟TM一个动作,RAM需 常数时间。A在RAM下时间复杂性为O(T(n))。 对数耗费标准下,RAM模拟TM的时间复杂性 为O(T(n)logT(n)) =O(T2(n))。 。
2
RAM机的复杂性标准
均匀耗费标准 每条RAM指令需要一个单位时间,每个寄存器 占用一个单位空间。 对数耗费标准 RAM指令的执行时间与操作数的长度的对数成 比例,一个寄存器可放一个任意大小的整数。
若每个操作数不超过一个机器字,则用均匀耗 费标准是合理的,否则适用对数耗费标准。
计算机算法设计与分析 3
取操作数入累加器
将累加器中数存入内存 加法运算 减法运算 乘法运算 除法运算
⑺READ
⑻WRITE ⑼JUMP
i / *i
=i / i / *i 标号
读入
输出 无条件转移到标号语句
⑽JGTZ
⑾JZERO ⑿HALT
2018/10/13
标号
标号
计算机算法设计与分析
正转移到标号语句
零转移到标号语句 停机
随机存取机RAM的构造
…
指令 计数器
只读输入带 r0 r1 r2 累加器
程序存储部件
…
内存储器
…
2018/10/13
只写输出带
1
计算机算法设计与分析
随机存取机RAM的指令集
操作码 操作数 指令含义
⑴LOAD
⑵STORE ⑶ADD ⑷SUB ⑸MULT ⑹DIV
=i / i / *i
i / *i =i / i / *i =i / i / *i =i / i / *i =i / i / *i
计算机算法设计与分析 8
2018/10/13
通用图林机
输入带 不失一般性,任何图林机的T = {0, 1}; δ:Q×T→Q×T×{L, R}的每个动作由五个部 有限 code #code 1 2#…#coden 编码带 分构成 ( 五字诀 ) , δ 含有有限个五字诀。 控制器 于是,任一图林机都可写成一个二进制编码。 qi 工作带 所以任一图林机可用一个三带图林机来模拟。 通用图林机将某个图林机 这个三带图林机就被称为通用图林机。 M 的编码存储在编码
M = (Q, T, I, δ, b, q0, qf )
图林机的变形
多道图林机(输入带上有多个道)。 双向图林机 (输入带被视为左右均是无穷的)。 多带图林机(具有多条输入带)。 多头图林机 (具有多个磁头)。 多维图林机(输入带是多维的)。 不确定的图林机(有限控制器是不确定的)。 不确定的图林机类似于不确定的自动机,即 将图林机是原型称为确定的,记为DTM;而 已经证明各类变形图林机在可计算的能力上等 δ:Q×T→ρ(Q× T×{L, 将不确定的图林机记为 NDTM , R}) 价于原型图林机。但是在复杂性是有区别的。
2018/10/13 计算机算法设计与分析 4
RAM的变形与简化
(1)实随机存取机RRAM; (2)直线式程序; (3)位式计算; (4)位向量计算; (5)判定数; (6)代数计算树ACT; (7)代数判定树。
2018/10/13 计算机算法设计与分析 5
图林机的构造
2018/10/13
随机存取存储程序机RASP
RASP与RAM的区别在于(1)RASP的程序存储 在内存并且可以修改自身;(2)RASP不允许间 接寻址,它通过修改指令模拟间接寻址。 RASP的指令集见P-238的表8-6。 RASP更加接近冯· 诺伊曼体系结构。 无论是采用均匀耗费标准还是对数耗费标准, 在相差一个常数因子的意义下,RAM与RASP 是等价的。