NP完全理论
第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)。
第八章NP完全性理论

NP完全性理论
2019/8/11
计算机算法设计与分析
1
随机存取机RAM的构造
指令 计数器
2019/8/11
… 只读输入带
程序存储部件
r0 r1 r2
…
累加器
内存储器
… 只写输出带
计算机算法设计与分析
2
随机存取机RAM的指令集
操作码 ⑴LOAD ⑵STORE ⑶ADD ⑷SUB ⑸MULT ⑹DIV ⑺READ ⑻WRITE ⑼JUMP ⑽JGTZ ⑾JZERO ⑿HALT
16
P类与NP类语言/问题
P = {L | L在多项式时间被DTM接受}
NP = {L | L在多项式时间被NDTM接受}
这 若里 Q∈也N可P用,R则A可M以等用其一它个的D机T器M来模模型拟来接定受义Q。的但 它 ND们T都M,是所等需价要的时。间复杂性为O(CT(n))。
这使人们认为NP类问题要比P类问题更难。
证明:每个寄存器放输入带一个单元的内容, 这样RAM就可以模拟TM的工作。
均匀耗费标准下,模拟TM一个动作,RAM需 常数时间。A在RAM下时间复杂性为O(T(n))。
对数耗费标准下,RAM模拟TM的时间复杂性 为O(T(n)logT(n)) =O(T2(n))。 。
2019/8/11
计算机算法设计与分析
表 可 是 列这 憾达 满 一 转一 的式 足 个 换事 是A的 构 为实 ,i都。 造 一, 这为证个增个真S明强猜A,了测T问则即人迄题称将们今。布接对仍尔受然P≠表L还N的达P只的N式是D猜AT个测1M,猜…。的测,但瞬A。遗象m是序
2019/8/11
计算机算法设计与分析
22
NP完全性理论

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的一步程序。
NP完全问题证明

定只包含每个Ti中的一个顶点和每个Ej’中的两个顶点.
如下得到赋值 uiV’ t(ui)=T
ūiV’ t(ui)=F
Ej’’中的三条边有两条被Vj’V’中的顶点覆盖, 第三条必被 V’Vi中的顶点覆盖. 这表示在Vi中的这个顶点对应的文字取真.
12
8.5.4 顶点覆盖问题 (VERTEX-COVER)
问题描述:给定一个无向图G=(V,E)和一个正整数k,判 定是否存在V’V,|V’|=k,使得对于任意(u,v)∈E有u∈V’或 v∈V’。如果存在这样的V’,就称V’为图G的一个大小为k顶点覆 盖。 证明思路: 首先,VERTEX-COVER∈NP。因为对于给定的图G和正整数k 以及一个“证书”V’,验证|V’|=k,然后对每条边(u,v)∈E, 检查是否有u∈V’或v∈V’,显然可在多项式时间内完成。 其次,通过CLIQUE∝pVERTEX-COVER来证明顶点覆盖问题 是NP难的。
几个NP完全问题
什么是NP完全问题
NP完全问题,是世界七大数学难题之一。 NP 的英文全称是Non-deterministic Polynomial的 问题,即多项式复杂程度的非确定性问题。简 单的写法是 NP=P?,问题就在这个问号上, 到底是NP等于P,还是NP不等于P
七大数学难题
表的段的最右位为1,其它为0.
s(ai ) 2 p( 3q f ( i )) 2 p( 2q g( i )) 2 p(qh( i ))
w1 w2 … wq x 1 x2 … xq y1 y2 … yq 注:plog(k+1),2p k+1,k 2p1 , 当 k个1相加时不会产生段之间的进位 令
第10章NP完全问题(自己写的)

主讲:王培崇
对一个已确定是可计算的问题,人们总试图寻求实现它的最优算法。然而 对有些问题,这个工作难度很大,目前还不能做到这点。
1、P类问题:问题的时间复杂性是多项式阶的,这只须设 计一个实现它的时间复杂性是多项式阶的算法即可,例如分类 (又称排序)问题。 2、顽型问题:人们已经设计出实现它的时间复杂性为指数阶 的算法,并且已证明该问题不存在多项式阶的算法,例如梵塔 问题;但是有这样一类问题, 3、NP问题:人们目前已设计的实现它的算法其时间复杂性 为指数阶的,但还不能肯定它有或没有多项式阶的算法。
如果是,则停机回答yes,如果不是则停 机回答no。
(上述是以图灵机计算模型实现的。)
• 定义10.3
NP类问题由下面的判定问题组成,对 于它们存在着多项式时间内运行的不确定性 算法。
例子10.4
coloring问题:
(1)设I是coloring的一个实例,s宣称是I的 解。容易建立一个确定性算法验证s选择、送餐车辆指派问题、车 间调度问题等。
见表1.1,现存的求解方法,中等输入也 需要几百年时间才能求解成功。
4、NP问题的描述转换 转换为判定问题。
两种答案:yes或no。 最优化问题:关心的是某个量的最大化或 最小化问题。
5、问题转化举例: 10.1设s是一个实数序列,EU问题是:是否S 中的所有的数都不相同。
判定问题:
输入:一个整数序列S; 问题:在S中存在两个数据相等吗。 10.2 给出一个无向图G=(V,E),用k种颜色对G 着色.......,使得图中没有两个邻接点有相同的 颜色。
• 判定问题: 输入:一个无向图G=(V,E)和一个正整数k>=1; 问题:G可以k着色吗?即G最多可以用k种颜 色着色吗?
第三章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完全性理论与近似算法PPT课件

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接开受始这,个经输过入一符系号列串计。算步后,最终 • 所有这台图灵机能接受的输入符号串的集合就是这台图灵机识别
第八章NP完全性理论

2019/4/9
通用图林机
输入带 不失一般性,任何图林机的T = {0, 1}; δ:Q×T→Q×T×{L, R}的每个动作由五个部 有限 code #code 1 2#…#coden 编码带 分构成 ( 五字诀 ) , δ 含有有限个五字诀。 控制器 于是,任一图林机都可写成一个二进制编码。 qi 工作带 所以任一图林机可用一个三带图林机来模拟。 通用图林机将某个图林机 这个三带图林机就被称为通用图林机。 M 的编码存储在编码
2019/4/9 计算机算法设计与分析 11
用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的一步程序。
…… 输入带
磁头
有限 控制器
输入带被视为右无穷,并被划分为一个个 单元用于存放符号(带符号)。 有限控制器由有限个状态构成。 磁头可左右移动,读写带符号。
计算机算法设计与分析 7
2019/4/9
TM的数学描述
其中: Q是有限状态的集合; T是有限个带符号的集合; I T,是输入符号的集合; δ:Q×T→Q×T×{L, R}为转移函数; b是唯一的空白符,b∈T – I; q0和qf分别为初始状态和终止状态。
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中的所有问题都可以通过多项式时间的确定性 算法来进行求解或判定。
第9章NP完全理论

P类问题和NP类问题的关系
• (1)P类问题可以用多项式时间的确定性 算法来进行判定或求解。
• (2)NP类问题可以用多项式时间的不确定 性算法来进行判定或求解,关键是存在一个 确定算法,能够以多项式的时间来验证在猜 测阶段所产生的答案。
• 大多数研究者相信NP类是比P类要大得多的 集合
NP完全问题
也就是说,在图灵机计算模型下,这类问题 的计算复杂性至今未知。为了研究这类问题,人 们提出了另一个能力更强的计算模型——非确定 性图灵机计算模型,简记NDTM。在这个计算模 型下,许多问题就可以在多项式时间内求解。
P类问题
• ★定义2 如果对于某个判定问题 ‘,存在一个非负整数k,
对于输入规模为n的实例,能够以O(nk)的时间运行一个确定 性算法,得到是或否的答案,则该判定问题 ’是一个P类问 题。 • 从定义2可以看出,P类问题是一类能够用确定性算法在多项 式时间内求解的判断问题。事实上,所有易解问题都属于P 类问题。例如最短路径判定问题(SHORTEST PATH)就属于 P类问题。
通常,用来衡量精度的标准有近似比和相对误差。
近似算法
迄今为止,所有的NP完全问题都还没有多 项式时间算法。对于这类问题,通常可采取以 下几种解题策略。
(1)只对问题的特殊实例求解 (2)用动态规划法或分支限界法求解 (3)用概率算法求解 (4)只求近似解 (5)用启发式方法求解 本章主要讨论解NP完全问题的近似算法。
• NP完全问题是NP类问题的一个子类,是 更为复杂的问题。
• 该类问题有一种奇特的性质:如果一个NP 完全问题能在多项式时间内得到解决,那 么NP类中的每个问题都可以在多项式时间 内得到解决,即P=NP成立!。
• 这是因为,任何一个NP问题均可以在多项 式时间内变换成NP完全问题。
第9章 NP完全理论

9.3.2 典型的NP完全问题
几个典型的NP完全问题: P280
(1)图着色问题COLORING (2)路径问题LONG-PATH (3)顶点覆盖问题VERTEX-COVER (4)子集和问题SUBSET-SUM (5)哈密尔顿回路问题HAM-CYCLE (6)旅行商问题TSP (7)装箱问题BIN-PACKING 能否用k个箱子来装n个物品;
9.2 P类问题和 NP类问题
9.2.1 P类问题
P类问题定义:如果对于某个判定问题,存在一个非负整数k, 对于输入规模为n的实例,能够以O(nk)的时间运行一个确定 性算法,得到是或否的答案,则该判定问题就是一个P类问 题。 从定义可以看出, P类问题:是一类能够用确定性算法在多项式时间内求解的 判断问题。事实上,所有易解问题都属于P类问题。 如:最短路径判定问题就属于P类问题。
第9章 NP完全理论
学习NP完全理论的意义:
NP-complete(NP-完全)一词是20世纪70年代初才开始 出现的一个新术语。 今天, NP-complete一词已经成为算法设计者在求解规模大 而又复杂困难的问题时所面临的某种难以逾越的深渊的象征。 在科学和很多工程技术领域里,常常遇到的许多有重要意义 而又没有得到很好解决的难题是NP完全问题。 2000年初,美国克雷数学研究所的科学顾问委员会选定了七 个“千年大奖问题”,该研究所的董事会决定建立七百万美 元的大奖基金,每个“千年大奖问题”的解决都可获得百万 美元的奖励。克雷数学研究所“千年大奖问题”的选定,其 目的不是为了形成新世纪数学发展的新方向,而是集中在数 学家们梦寐以求而期待解决的重大难题上。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

归约举例
VC X1 =(G,k)
5 1 1
IS X2 =(G,n-k)
3
5
3
4 2 4
2
1
3
2
VC 归约为子集和数问题
1、描述顶点覆盖问题:
对于n个顶点,m条边的图,用n*m的矩阵G表 示。G[i,j]=1表示vi是ej的一个顶点。 1)第j列不会超过两个1,即ej只有两个端点。 2)任意取k行,则得到k个顶点的子集。 3)如果这k个顶点是一个顶点覆盖(覆盖了所有 的边),则这k行的各列至少有一个1。 4)如果k行各列相加,结果形如kx1,x2,…,xm ,xi≤2。
当选择的k个顶点构成点覆盖为真, 对应的子集的和数=M也为真;当选择的k 个顶点构成点覆盖为假,对应的子集的和 数=M也为假。
NP中的任一问题Q都可归约为可满足性问 题 SAT。 如果SAT可在多项式时间内可解,NP的所 有问题都可在多项式时间内可解。
CNF(合取范式)-可满足问题SAT是NP完全问 题。
判定问题:是否存在变量的真假赋值使得该 CNF为真
如果一个布尔表达式是一些因子和之积,则称之为合取范 式,简称CNF(Conjunctive Normal Form)。这里的因子是变量 或 。例如:( x1 x2 )(x2 x3 )(x1 x 2 x3 ) 就是一个合取范 式,而 x1 x2 x3 就不是合取范式。
3、NP完全问题的特征
1)decision问题,对于一个实例,需回答 “Yes”或“No” 2) 在现有的计算机上用确定性算法求解,还 不能做到多项式时间; 3)用不确定算法求解,则可在多项式时间内给出判
定。
一些问题是无法直接计算得到的,只能通过间接的“猜算”来得到结果。这也 就是非确定性问题。 而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉 你,某个可能的结果是正确的答案还是错误的。这就是非确定算法。
第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’是一个团则接受输入,
算法设计与分析课件--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完全问题
多项式时间变换示例:
11 NP完全理论

习题参考答案习题 11.1算法运行时间为)(nW Ο。
这似乎是在多项式时间内解决了0/1背包问题,但是该算法并非严格意义上的多项式时间算法。
它的运行时间依赖背包载重量的大小。
一个多项式时间算法应该仅仅依赖于物品的数目,而不是他们本身重量或价值的大小。
因此,DPKnapsack ),(W I 算法是一个伪多项式时间算法。
11.2最优化问题LongPathLenght 可以在多项式时间内解决,显然可以在多项式时间内判定LongestPath 。
反过来,如果LongestPath 能够在多项式时间内判定,假设答案是“是”则我们可以逐步减少k 的值,然后再调用判定算法。
否则,我们可以增加k 的值,然后再调用判定算法,由于||0V k <<,调用判定算法的次数是有限次,因此,可以在多项式时间里解决最优化问题LongPathLenght 。
11.3注意这里TSP 是判定问题,可以类似书上图着色问题及上题类似求解,略。
11.4简单,略。
11.5考虑如下算法: RunSlow(n) 1 s ←a2 for i ←1 to n do3 s ←Concatenate(s, s) 调用O(n)个子程序,每个花线性时间。
第一次调用Concatenate(s, s),连接两个a ,花时间O(2n),第2次调用连接大小各为2的字符串,花时间O(22n),总共n 次调用,所用的时间为O(2n)+ O(22n)+…+ O(2nn)=n nk k ∑=12,时间复杂度显然不是多项式时间复杂度。
如果常数次调用,则仍然是多项式时间。
11.6只要找到该问题的一个多项式时间验证算法即可。
主要理解同构的概念。
设),(111E V G =,),(222E V G =表示两个图,若存在双射函数21:V V f →,使得1),(E v u ∈当且仅当2))(),((E v f u f∈,则两图同构。
设输入为:),(111E V G =和),(222E V G =,证书为函数f ,只需验证是否有1),(E v u ∈当且仅当2))(),((E v f u f∈。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
清华大学出版社
算法设计与分析
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问题 实验项目 问题
清华大学出版社
算法设计与分析
2.1 下界
对于任何待求解的问题, 对于任何待求解的问题,如果能找到一个尽可能 大的函数g(n)(n为问题规模),使得求解该问题的 为问题规模), 大的函数 ( 为问题规模),使得求解该问题的 的时间内完成, 所有算法都可以在 (g(n))的时间内完成,则函数 的时间内完成 则函数g(n) 称为该问题计算复杂性的下界( 称为该问题计算复杂性的下界(Lower Bound)。 )。 如果已经知道一个和下界的效率类型相同的算法, 如果已经知道一个和下界的效率类型相同的算法, 则称该下界是紧密( 则称该下界是紧密(Close)的。 ) 意义:评价算法;改进算法。 意义:评价算法;改进算法。
清华大学出版社
算法设计与分析
例:对三个数进行排序的判定树
是 a1<a2 否
是 a1<a2<a3
a2<a3
否 a1<a
3
是 a2<a1<a3
a1<a3
否
是 a1<a3<a2
否 a3<a1<a2
是 a2<a3<a1
a2<a
3
否 a3<a2<a1
清华大学出版社
算法设计与分析
2.1.3 最优算法
所谓最优算法( 所谓最优算法(Optimality Algorithm)是 ) 指在某一种度量标准下, 指在某一种度量标准下 , 优于该问题的所有 可能的)算法。 (可能的)算法。
假设问题Π'存在一个算法 存在一个算法A,对于问题Π' 定义 2.5 假设问题 存在一个算法 ,对于问题 的输入实例I',算法A求解问题 得到一个输出O', 求解问题Π'得到一个输出 的输入实例 ,算法 求解问题 得到一个输出 ,另外 一个问题Π的输入实例是 对应于输入I,问题Π有一个 的输入实例是I, 一个问题 的输入实例是 ,对应于输入 ,问题 有一个 输出O,则问题Π变换到问题 是一个三步的过程: 变换到问题Π'是一个三步的过程 输出 ,则问题 变换到问题 是一个三步的过程: 1. 输入转换:把问题 的输入 转换为问题 的适当输 输入转换:把问题Π的输入 转换为问题Π'的适当输 的输入I转换为问题 入I'; ; 2. 问题求解:对问题 应用算法 产生一个输出 '; 问题求解:对问题Π'应用算法 产生一个输出O ; 应用算法A产生一个输出 3.输出转换:把问题Π'的输出 转换为问题Π对应于 .输出转换:把问题Π 的输出 转换为问题Π 的输出O'转换为问题 输入I的正确输出 的正确输出。 输入 的正确输出。
清华大学出版社
算法设计与分析
2.3 P类问题和 类问题 类问题和NP类问题 类问题和
2.3.1 判定问题 2.3.2 确定性算法与 类问题 确定性算法与P类问题 2.3.3 非确定性算法与 类问题 非确定性算法与NP类问题
清华大学出版社
算法设计与分析
2.3.1 判定问题
一个判定问题( 一个判定问题(Decision Problem)是仅 ) 仅要求回答“ 的问题。 仅要求回答“yes”或“no”的问题。 或 的问题
清华大学出版社
算法设计与分析
P类问题和 类问题的主要差别: 类问题和NP类问题的主要差别 类问题和 类问题的主要差别: P类问题可以用 多项式时间 的 确定性 算法来 类问题可以用多项式时间 确定性算法来 类问题可以用 多项式时间的 进行判定或求解; 进行判定或求解; NP类问题可以用多项式时间的非确定性算法 类问题可以用多项式时间的非确定性算法 类问题可以用多项式时间 来进行判定或求解。 来进行判定或求解。
例:易解问题——排序问题、查找问题、欧拉回路 易解问题 排序问题、查找问题、 排序问题 难解问题——TSP问题、 Hanio问题、Hamilton回路 TSP问题、 Hanio问题 Hamilton回路 问题、 难解问题 TSP问题
清华大学出版社
算法设计与分析
为什么把多项式时间复杂性作为易解问题和 难解问题的分界线? 难解问题的分界线?
算法设计与分析
2.2.3 不可解问题
不能用计算机求解( 不论耗费多少时间) 的问题 不能用计算机求解 ( 不论耗费多少时间 ) 称为不可解问题 不可解问题( Problem) 称为不可解问题(Unsoluble Problem)。
停机问题、 例:不可解问题——停机问题、病毒检测 不可解问题 停机问题 作业:证明停机问题是不可解问题。 作业:证明停机问题是不可解问题。
1.多项式函数与指数函数的增长率有本质的差别 . 2.计算机性能的提高对多项式时间算法和指数时间 . 算法的影响不同 3.多项式时间复杂性忽略了系数 , 但不影响易解问 . 多项式时间复杂性忽略了系数, 题和难解问题的划分 4.多项式时间复杂性的闭包性 . 5.多项式时间复杂性的独立性 .
清华大学出版社
清华大学出版社
算法设计与分析
2.1.1 平凡下界
对问题的输入中必须要处理的元素进行计 同时,对必须要输出的元素进行计数。 数,同时,对必须要输出的元素进行计数。这 种计数方法产生的是一个平凡下界( 种计数方法产生的是一个平凡下界(Ordinary Lower Bound). )
例 :生成 n 个元素的所有排列对象的算法属于 (n!)
如果能够证明求解问题Π的任何算法的运行时 如果能够证明求解问题 的任何算法的运行时 间下界是 (g(n)), 那么 , 对以时间 , 那么, 对以时间O(g(n))来求解 来求解 问题Π的任何算法 都认为是最优算法。 的任何算法, 问题 的任何算法,都认为是最优算法。
清华大学出版社
算法设计与分析Βιβλιοθήκη 2.2 算法的极限清华大学出版社
算法设计与分析
问题变换的一般过程
问题Π 问题 问题Π' 问题
I
输入转换
I '
算法A 算法
O '
输出转换
O
问题变换的主要目的不是给出解决一个问题的 算法,而是给出通过另一个问题理解 理解一个问题的 算法,而是给出通过另一个问题理解一个问题的 计算时间上下限的一种方式 的一种方式。 计算时间上下限的一种方式。
2.2.1 易解问题与难解问题 2.2.2 实际问题难以求解的原因 2.2.3 不可解问题
清华大学出版社
算法设计与分析
2.2.1 易解问题与难解问题
通常将存在多项式时间算法的问题看作是易解问题 通常将存在多项式时间算法的问题看作是易解问题 ),将需要指数时间算法解决的问题 (Easy Problem),将需要指数时间算法解决的问题 ), 看作是难解问题 难解问题( 看作是难解问题(Hard Problem)。 )。
清华大学出版社
算法设计与分析
2.4 NP完全问题 完全问题
2.4.1 问题变换与计算复杂性归约 2.4.2 NP完全问题的定义 完全问题的定义 2.4.3 基本的 完全问题 基本的NP完全问题 2.4.4 NP完全问题的计算机处理 完全问题的计算机处理
清华大学出版社
算法设计与分析
2.4.1 问题变换与计算复杂性归约
清华大学出版社
算法设计与分析
例:配对问题到排序问题的变换
排序问题——输入 是一组整数 输入I'是一组整数 排序问题 输入 是一组整数X=(x1, x2, …, xn), , 输出O'是这组整数的一个排列 是这组整数的一个排列x 输出 是这组整数的一个排列 i1≤xi2≤…≤xin。 ≤ 配对问题——输入 是两组整数 输入I是两组整数 配对问题 输入 是两组整数X=(x1, x2, …, xn)和 和 Y=(y1, y2, …, yn),输出 是两组整数的元素配对, 是两组整数的元素配对, ,输出O是两组整数的元素配对 中的最小值与Y中的最小值配对 即X中的最小值与 中的最小值配对,X中的次小 中的最小值与 中的最小值配对, 中的次小 值与Y中的次小值配对 依此类推。 中的次小值配对, 值与 中的次小值配对,依此类推。