NP完全问题分析
算法设计与分析-05NP完全问题-一些重要的概念..复习课程
2020/7/2
算法设计与分析演示稿 纪玉波制
8
作(C)
迄今为止我们已经知道的所有可证的难解问题 分成刚才叙述的两种类型,它们或者是“不可判定 的”,或者是“非确定型”难解的。但是,大多数在 实际中遇到的在表面上看来难解的问题是可判定的, 并且可以用非确定型计算机在多项式时间内求解。因 此,要证明这些问题的表面上的难解性,至今所研究 过的证明方法都还不够有力。
2020/7/2
算法设计与分析演示稿 纪玉波制
2020/7/2
算法设计与分析演示稿 纪玉波制
6
作()
2、可证的难解问题
• 最早证出的难解性问题结果是经典的图灵不可判定性。 四十多年前,图灵证明某些问题困难到“不可判定的” 程度,即根本不可能给出解这些问题的算法。例如, 他证明不可能给出一个算法,当任意给定一个计算机 程序和这个程序的输入时,该算法可以判定当把这个 程序应用于这个输入时最终是否停机[Turing,1936]。 现在已经知道还有各种其它问题也是不可判定的,这 些问题包括有限表示群的平凡问题[Rabin,1958],希 尔伯特第十问题(整数多项式的可解性) [Matijasevic,1970]等。因为不可能用任何算法, 当然更不可能用多项式时间算法解这些不可判定问题, 所以它们的确是在特别强的意义下难解的。
2020/7/2
算法设计与分析演示稿 纪玉波制
4
作(C)
关于计算机模型的选择可以作类似的注释。至今 研究过的所有实际的计算机模型,例如单带图灵机, 多带图灵机以及随机存取机(RAM)都是相对于多项式 时间复杂性等价的,人们可以指望任何其它“合理的” 模型都享有这种等价性。这里所说的“合理的”概念 在本质上是指在单位时间内可以完成的工作量有一个 多项式界限。例如,不能认为具有完成任意多道并行 运算能力的模型是“合理的“,而且也确实不存在一 合计算机具有这种能力。无论如何,只要我们规定只 采用实际的计算机标准模型,难解的问题类就不受使 用的具体模型的影响。因而我们可以根据方便与否来 选择计算机模型,而不会妨碍结果的使用。 “合理的” 计算机模型也称为是“确定型”(deterministic)的 计算机模型。
算法设计与分析 NP完全问题
NP 完全问题研究P=NP 的问题有两条基本思路:1.证明NP 类中的某些问题是难解的,从而得到NP ≠P 。
但是要证明这一点几乎同证明P=NP 一样困难。
2.考察NP 类中问题之间的关系,从中找到一些具有特殊性质的、与P 类问题显著不同的问题。
沿着这一路线人们已经证明了在NP 类中存在被称为NP 完全的子类,简称NPC 问题,并由此发展了一套著名的NP 完全理论。
本节简要先介绍NP 完全性理论。
为此,首先给出各语言之间的多项式变换的概念。
定义 1 所谓从一个语言*11∑⊆L 到另一个语言*22∑⊆L 的多项式变换是指满足下面两个条件的函数*2*1:∑→∑f ,(1) 存在计算f 的一个多项式时间DTM 程序;(2) 对于所有的*1∑∈x 有:1L x ∈当且仅当2)(L x f ∈。
用21L L ∝表示存在一个从语言1L 到语言2L 的多项式变换。
相应地,对于判定问题21,∏∏,设e 1和e 2是相应的编码策略。
若],[],[2211e L e L ∏∝∏,则记为21∏∝∏。
也可以从问题的层次来叙述:由判定问题1∏到判定问题2∏的多项式变换是满足下列条件的函数21:∏∏→D D f ,(1) f 可由一个多项式时间的确定性算法来计算;(2) 对于所有的1∏∈I D 有:1∏∈I D 当且仅当2)(∏∈I Y f 。
定义2 称一个语言L (判定问题∏)为NP 完全的(NPC ),如果)(NP NP L ∈∏∈,且对于所有别的语言NP L ∈'(判定问题NP ∈∏')均有)'('∏∝∏∝L L 。
按照定义2,要证明问题∏是NP 完全的,需要证明所有的NP 问题均能够经多项式变换变成∏。
这几乎是很难做到的。
如果NP 完全问题比较多,我们也不能对每一个这样的问题都这样验证。
为此我们讨论一些NPC 问题的有用的性质。
性质1 如果L L ∝',则P L ∈意味着P L ∈'。
如何用整数规划求解NP完全问题
如何⽤整数规划求解NP完全问题如何⽤整数规划求解NP完全问题⼀、NP完全问题NP完全问题是⼀类具有⾮常⾼难度的组合最优化问题,所有NP完全问题都是NP难问题。
虽然P问题是⽐较容易的问题,NP问题却不⼀定是困难问题,必须看见NP完全或者NP难这样的字才能说这个问题求解起来很困难。
经常听砖家说,NP完全/NP难问题不能⽤整数规划求解。
实际情况怎样?实事证明砖家的话只能信⼀半:)。
这⾥咱就看看⽤整数规划求解⼀个NP完全问题⾏也不⾏。
这⾥有⼀个货真价实的整数规划问题——划分问题(The partition problem)。
问题是:给定⼀个⼤⼩不等的整数集合,问是否可以把这些整数划分成两个集合,任何⼀个整数或者在集合S1中或者在S2中,但不能同时在两个集合中;对任意给的⼀个整数集合,请设计算法,解决是否存在⼀个划分,使得S1种整数之和恰好等于S2集合的整数之和。
⼆、建⽴整数规划模型对每个整数定义⼀个0-1变量xi, xi=1 表⽰第i个整数位于集合S1中, xi=0表⽰第i个整数位于S2中。
⽤s1表⽰第⼀集合的整数之和,⽤s2表⽰第⼆个集合⾥的整数之和。
即:设d是s1和s2之间差的绝对值。
于是:我们只要极⼩化d就可以了,即:完整模型:三、上⾯的模型的⽂本表达上⾯的模型不只是⽤来摆摆看的,还可以真的被求解哈。
我们需要把模型写成⽂本格式(Leapms建模语⾔格式),让计算机理解。
⽬标函数就写成min d加上其余约束部分(注意西格玛符合的写法)subject tos1=sum{i=1,...,n}x[i]S[i]s2=sum{i=1,...,n}((1-x[i])S[i])d>=s1-s2d>=s2-s1加上符号说明(符号必须说明,不然计算机不知道哪些是常数,哪些是变量)wheren is an integerS is a sets1,s2,d are variables of numberx[i] is a variable of binary|i=1,...,n加上数据(注意整数个数是从集合S上⾃⼰数出来的)data_relationn=_$(S)dataS={11,47,159,137,85,47,142,35,119,61,88,175,13,96,-11,176,126,15,98,46,163}四、求解把如下完整模型贴到记事本上,保存为 partition.leap⽂件。
NP完全性证明(2)
3.4 NP完全性的证明一、六个基本的NPC问题三元可满足性问题(3SAT)三维匹配问题(3DM)顶点覆盖问题(VC)团的问题哈密顿回路(HC)均分问题二、基本NP完全问题的证明三、NP完全问题的证明方法一、六个基本NP完全问题3SAT实例: 有穷布尔变量集U 和U上的子句集C={c1,c2,...,cm},其中|ci|=3, 1≤i≤m.问: 对于U是否存在满足C中所有子句的真值赋值?3DM实例: 集合M ⊆W×X×Y, 其中W,X,Y互不相交, 且|W|=|X|=|Y|=q.问: M是否包含一个匹配, 即是否存在子集M’⊆M使得|M’|= q且M’中任意两个元素的三个坐标都不相同?肯定实例:W={a1,a2,a3,a4},X={b1,b2,b3,b4},Y={c1,c2,c3,c4}M={(a1,b2,c1),(a1,b1,c1),(a2,b1,c2),(a2,b2,c1), (a3,b3,c3),(a4,b4,c4),(a4,b2,c1)}VC实例: 图G=(V,E), 正整数k≤|V|.问: G中是否存在大小不超过k的顶点覆盖, 即是否存在子集V’⊆V,使得|V’|=k, 且对每条边{u,v}∈E都有u∈V’或v∈V’?团实例: 图G=(V,E), 正整数J≤|V|.问: G是否包含大小不小于J的团, 即是否存在子集V’⊆V,使得|V’|≥J, 且V’中每两个顶点都由E中的一条边连接?独立集实例:图G=(V,E),正整数J≤|V|问:G中是否包含大小不小于J的独立集,即是否存在V’⊆V, 使得|V’|≥J,且∀u,v∈V’,{u,v}∉E?HC实例: 图G=(V,E),|V|=n.问: G 中是否包含一条哈密顿回路, 即是否有G 的顶点排列><n j j j v v v ,...,,21?},{,1,},{11E v v n i E v v j j j i j n i ∈<≤∈+∑=∑-∈∈'')()(A A a A a a S a S 使得均分实例: 有穷集合A, ∀a ∈A 有”大小”S(a)∈Z +问: 是否存在子集A ’⊆ A 使得证明顺序均分HC 团(独立集)1.3SAT∈NPC证明思路证3SAT∈NP将SAT的实例变换成3SAT的实例:根据子句中的文字个数k 分别处理1个子句转变成多个子句保证每个子句含有3个文字转变前与转变后的真值不变证显然3SAT属于NP.设U={u1,u2,...,un}, C={c1,c2,...,cm}是SAT的任何实例.对于C中任意子句c j ={z1,z2,...,zk},构造新增的变量集Uj ’和子句集Cj’.}},,}{,,{},,,{},,,{{'},{'21121121121121j j j j j j j j j j j j y y z y y z y y z y y z C y y U ==C j ’被满足⇔c j 被满足.若k=2, c j ={z 1,z 2}, 则}},,{},,,{{'}{'1211211j j j j j y z z y z z C y U ==C j ’被满足⇔z 1+z 2为真⇔c j 被满足.若k=3, 则U j ’= ∅C j ’= {c j }若k=1, c j ={z 1}, 则},,{},,,{},,,{{'},{'54223112121z z y y z y y z z C y y U j j j j j j j j ==c j 可满足⇔z 1+z 2+...+z 5为真⇒C j ’可满足如z 1+z 2为真, 则y j 1= y j 2 = F ;如z 3为真, 则y j 1= T,y j 2 = F ;如z 4+z 5为真, 则y j 1= T,y j 2 = T .反之, 若C j ’可满足而c j 不满足, 则z 1+z 2+...+z 5为假, 即z 1,z 2,...,z 5全为假, 必须y j 1=T,y j 2 =T, 最后的子句不满足.若k>3, 例如c j = {z 1,z 2,...,z 5}, 则一般若c j ={z 1,z 2,...,z k }, k>3}},,{{}41:},,{{}},,{{'}31:{'1312121k k k ji ji i j j j i j j z z y k i y z y y z z C k i y U --++⋃-≤≤⋃=-≤≤=令U ’= U ⋃U 1’⋃U 2’⋃...⋃U m ’C ’= C 1’⋃C 2’⋃...⋃C m ’下面证明f是多项式变换.易见若t满足C’, 则t满足C. 假若t不满足cj,则z 1,z2,…,zk全为假,只能有Tyyy k jjj====-321...C’的最后一个字句不满足.反之,设t:U→{T,F}是满足C的真值赋值, 将U’-U的变量分成U1’, U2’, ..., Um’, 且Uj’的变量只出现于子句Cj ’中。
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完全理论_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)用不确定算法求解,则可在多项式时间内给出判
定。
一些问题是无法直接计算得到的,只能通过间接的“猜算”来得到结果。这也 就是非确定性问题。 而这些问题的通常有个算法,它不能直接告诉你答案是什么,但可以告诉 你,某个可能的结果是正确的答案还是错误的。这就是非确定算法。
10第十章 NP完全问题
2可满足问题:给出一个合取范式(CNF)形 式的布尔表达式f,这里每个字句恰好由两 个文字组成,问f是可满足的吗?
如果对于任意问题c,Π的补也在c中,我 们说问题类Π∈c在补运算下是封闭的。例如, 2着色问题的补可以陈述如下:给出一个图G, 它是2不可着色的吗?我们称这个问题为NOT2-COLOR问题。
还有很多计算模型,此处略。
量子计算模型是什么样子呢? 本章的讲解是初步入门,不讨论建立在相应计算模型上的 算法讨论。
10.1 引 言 前面所有的算法的运行时间可以用低次 多项式表示。现在有这样一类问题,这些问 题至今还没有找到有效的算法,而且在将来 也不大可能发现它们的有效算法。
设Π是任意问题,如果对问题Π存在 一个算法,它的时间复杂性是O(nk),其中n 是输入大小,k是非负整数,我们说存在求 解问题Π的多项式时间算法。
下面证明它是属于P类的。 由于2着色问题在P中,存在一个确定性 算法A,当展示一个2可着色图时,它停机 并回答yes,在展示一个图不是2可着色图 时,它停机并回答no。通过在算法A中简单 的交换yes和no,能够得出问题NOT-2COLOR的一个确定性算法。这样有如下定 理。
定理 10.1 P类问题在补运算下是封闭的
10.3 NP类(Nondeterministic Polynomial) NP类由这样的问题Π组成,对于这些问题 存在一个确定性算法A,该算法在对Π的一个 实例展示一个断言解时,它能在多项式时间 内验证解的正确性。即如果断言解导致答案 是yes,就存在一种方法可以在多项式时间内 验证这个解。
为了较形式地定义这个类,必须首先定义不 确定性算法的概念。对于输入x,一个不确 定性算法由下列两个阶段组成。 (a) 猜测阶段 在这个阶段产生一个任意字 符串y,它可能对应于输入实例的一个解, 也可以不对应解。事实上,它甚至可能不 是所求解的合适形式,它可能在不确定性 算法的不同次运行中不同。它仅仅要求在 多项式步数内产生这个串,即在O(ni)时间 内,这里n=|x|, i是非负整数。对于许多问 题,这一阶段可以在线性时间内完成。
P问题、NP问题、NP完全问题和NP难问题
P问题、NP问题、NP完全问题和NP难问题在讲P类问题之前先介绍两个个概念:多项式,时间复杂度。
(知道这两概念的可以⾃动跳过这部分)1、多项式:axn-bxn-1+c恩....就是长这个样⼦的,叫x最⾼次为n的多项式....咳咳,别嫌我啰嗦。
有些⼈说不定还真忘了啥是多项式了。
例如第⼀次看到的鄙⼈→_→2、时间复杂度我们知道在计算机算法求解问题当中,经常⽤时间复杂度和空间复杂度来表⽰⼀个算法的运⾏效率。
空间复杂度表⽰⼀个算法在计算过程当中要占⽤的内存空间⼤⼩,这⾥暂不讨论。
时间复杂度则表⽰这个算法运⾏得到想要的解所需的计算⼯作量,他探讨的是当输⼊值接近⽆穷时,算法所需⼯作量的变化快慢程度。
举个例⼦:冒泡排序。
在计算机当中,排序问题是最基础的,将输⼊按照⼤⼩或其他规则排好序,有利于后期运⽤数据进⾏其他运算。
冒泡排序就是其中的⼀种排序算法。
假设⼿上现在有n个⽆序的数,利⽤冒泡排序对其进⾏排序,①⾸先⽐较第1个数和第2个数,如果后者>前者,就对调他们的位置,否则不变②接着⽐较第2个数和第3个数,如果后者>前者,就对调他们的位置,否则不变③⼀直向下⽐较直到第n-1和第n个数⽐较完,第⼀轮结束。
(这时候最⼤的数移动到了第n个数的位置)④重复前三步,但是只⽐较到第n-1个数(将第⼆⼤的数移动到第n-1个数位置)⑤持续每次对越来越少的元素重复上⾯的步骤,直到没有任何⼀对数字需要⽐较。
举个实例:5,4,3,2,1,对其进⾏排序,先是⽐较5跟4变成4,5,3,2,1,第⼀轮结束后变成43215,可以计算,当对其排序完正好要经过4+3+2+1=10次⽐较,当然这是最复杂的情况,即完全反序。
可以知道对于n个数,⾄多要经过1+2+...+n-1即(n^2-n)/2次⽐较才能排好序。
这个式⼦⾥n的最⾼次阶是2,可知道当n→∞时,⼀次性对其⽐较次数影响很⼩,所以我们把这个算法的时间复杂度⽐作:o(n^2)。
取其最⾼次,可以看出,这是⼀个时间复杂度为多项式的表⽰⽅式。
第1章NP完全问题
设∏、∏'和∏"是三个判定问题,有∏∝poly∏'和∏'∝poly∏",那 么∏∝poly∏"。
推论10.1(Page 179)
如果∏和∏'是NP中的二个问题,若有∏'∝poly∏,并且∏'是完
全的,则∏是完全的。
13
如果一个NP问题的所有可能答案,都可以在多项式时间内进行
使用非确定性算法,先猜测一个城市序列,然后验证这个序列
是一个游程。如果是,只要判断游程的长度是否超过界k即可。
㈡证明:哈密顿回路问题在多项式时间内归约到旅行商问题
设G是哈密顿回路的任意实例。我们构建一个含权图G'和一个界
k,使得当且仅当G'有一个总长不超过k的游程时,G有一条哈密
顿回路。
设G=(V,E),G'=(V,E')是结点V集合上的完全图,即
本章将研究难解问题的一个子类,通常称为NP完全问 题(NPC问题)。这一类问题目前约有3000多个,其中还 包括数百个著名问题。它们有一个共同特性,如果它们 中的一个是多项式可解的话,那么所有其它问题也是多 项式可解的。现存的求解这些问题算法的运行时间,对 于中等大小的输入也要用几百或几千年的时间。
如果给出一个回路,我们很容易判断它是否是哈密顿 回路。只要检查所有的结点是否都在这个回路中,并且 只出现一次。检查仅需O(n2)时间。
我们一般认为NPC问题是难解问题。因为到目前为止, 它们还不存在一个多项式时间的算法,甚至将来也很难 找到,即P≠NP。实际上,对于某些结点数不到100的无 向图,使用现有速度最快的计算机也需要比较荒唐的时 间,例如耗费几百年才能够确定它是否存在一条哈密顿 回路。
算法设计与分析课件--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完全问题详解(共53张PPT)
几个典型的NP完全问题
可满足性问题(SATISFIABILITY) 三元可满足性问题(3_SATISFIABILITY) 图的着色问题(COLORING) 集团问题(CLIQUE)
顶点覆盖问题(VERTEX COVER)
可满足性问题(SATISFIABILITY)
一、可满足性问题 1、合取范式:由若干个析取子句的合取构成的布尔表达式 f 。 例: f ( x2 x3 x5 ) ( x1 x3 x4 x5 ) (x2 x3 x4 ) 2、合取范式的可满足性: 对合取范式 f 的相应布尔变量赋值,使 f 的真值为真,就说布尔表达式 f 是可满足的。 例:上式中,只要使 x1、x4和 x5为真,则表达式 f 为真。因此,这个式子是可满足的。 3、可满足性问题: 判定问题:SATISFIABILITY 输入:CNF 布尔表达式 f 问题:对布尔表达式 f 中的布尔变量赋值,是否可使 f 的真值为真
类问题
例 解货郎担判定问题 TRAVELING SALESMAN 的算法 A是 NP类判定问题: A可在推测阶段用多项式时间推测出一条回路,并假定它是问题的解; 在验证阶段用多项式时间的确定性算法, 检查所推测的回路是否恰好每个城市经过一次, 如果是,再进一步判断这条回路的长度是否小于或等于l , 如果是,答案为 yes,否则,答案为no。 存在多项式时间的确定性算法,对推测阶段所作出的推测进行检查和验证。 因此,货郎担判定问题是 NP类判定问题。
否不存在”的判定问题。 例:可排序判定问题的补 NOT_SORT: 给定 n 个元素的数组,是否不可以按非降顺序排序。 最短路径判定问题的补 NOT SHORTEST PATH: 给定有向赋权图G (V , E )(权为正整数)、正整数k 、及两个顶点s,t V , 是否不存在一条由s到t 、长度至多为k 的路径。 2、封闭的定义 定义 12.3 令C 是一类问题,如果对C 中的任何问题C,的补也在C 中,则
算法设计技巧与分析:第九讲 NP完全问题
• 最优化问题: MAX-CLIQUE.
输入:一个无向图G=(V,E). 输出:一个正整数k,它是G中最大团集的大小
Algorithms Design Techniques and Analysis
• 如果我们有一个求解判定问题的有效算法,那么很容易把 它变成求解与它相对应的最优化问题的算法。 • 例如,我们有一个求解图着色判定问题的算法A,则可以 用二分搜索并且把算法A作为子程序来找出图G的色数。 很清楚,1<=x (G)<=n,这里n是G中顶点数,因此仅用 O(1og n)次调用算法A就可以找到G的色数。由于我们正处 理多项式时间的算法, log n因子是不重要的。
• 定理 10.1
• P类问题在补运算下是封闭的。
Algorithms Design Techniques and Analysis
Algorithms Design Techniques and Analysis
例子 10.3
给出一个无向图G=(V,E),对于某个正整数k, G中大 小为k的团集,是指G中有k个顶点的一个完全子图。 团集问题是问一个无向图是否包含一个预定大小的 团集。 • 判定问题: CLIQUE.
输入:一个无向图G=(V,E)和一个正整数k。 问题: G有大小为k的团集吗?
Algorithms Design Techniques and Analysis
P类的问题
• 2着色问题: • 给出一个无向图G ,它是否是2可着色的?即它的顶点是否可仅用 两种颜色着色,使两个邻接顶点不会分配相同的颜色?注意,当且 仅当G是二分图,即当且仅当它不包含奇数长的回路时,它是2可 着色的。
2.47×1041 1024
观察结论:n≤100时,(不自然的)多项式函数值大于指数 函数值,但n充分大时,指数函数仍然超过多项式函数。
NP问题NP完全问题(NP-completeproblem)如何判断是否是NP完全问题
NP问题NP完全问题(NP-completeproblem)如何判断是否是NP完全问题在算法复杂度分析的过程中,⼈们常常⽤特定的函数来描述⽬标算法,随着变量n的增长,时间或者空间消耗的增长曲线,近⽽进⼀步分析算法的可⾏性(有效性)。
引⼊了Big-O,Big-Ω,来描述⽬标算法的上限、下限复杂度函数。
⽤Big-Θ描述和⽬标函数同序的复杂度函数,即由Big-Θ既是上限也是下限。
常常⽤到如下时间复杂度函数标度1, log n, n, n log n, n^2, 2^n, n!通常将具有n^x,x为正整数形式的时间复杂度函数称为多项式复杂度。
通常认为具有多项式时间复杂度的算法是容易求解的。
超过多项式时间复杂度,算法增长迅速,不易求解。
下图将展⽰NP和NP完全问题在所有问题中的位置。
通常问题分为可解决(Solvable)和不可解决(Unsolvable)。
可解决问题⼜可以分为易解决(Tractable)、不易解决(Intractable)和不确定是否容易解决(NP)可解决(Solvable)是指存在算法能够解决的问题不可解决(Unsolvable)是指不存在解决该问题的算法,如The Halting Problem。
易解决(Tractable),即P问题,是指具有最坏时间复杂度为多项式时间的算法能够解决的问题不易解决(Intractable)是指不存在最坏时间复杂度为多项式时间的算法能够解决的问题不确定是否容易解决(NP),还未被证明是否存在多项式算法能够解决这些问题,⽽其中NP完全问题⼜是最有可能不是P问题的问题类型。
判断是否是NP完全问题1.元素较少时算法的运⾏速度⾮常快,但随着元素数量的增加,速度会变的⾮常慢。
2.涉及所有组合问题通常是NP完全问题3.不能将问题分成⼩问题,必须考虑各种情况,这可能是NP问题4.如果问题涉及序列(如旅⾏商问题中的城市序列)且难以解决,它可能是NP问题5.如果问题涉及集合(如⼴播电台集合)且难以解决,它可能是NP完全问题6.如果问题可转化为集合覆盖问题或商旅问题,那它肯定是NP问题。
第八章 NP完全问题
第八章 NP-完全问题§1 关于问题及算法的描述为了应用算法复杂性理论,首先要对问题、问题的一般描述、计算模型、算法、算法的复杂性给出严格的定义。
但在给出精确定义之前,我们先回顾一下有关概念的粗略解释。
所谓一个问题(problem)是指一个有待回答、通常含有几个取值还未确定的自由变量的一个一般性提问(question)。
它由两部分构成:一是对其关于参数的一般性描述;二是对该问题的答案所应满足的某些特性的说明。
而一个问题的某个实例则可通过指定问题中所有参数的具体取值来得到。
以下用∏表示某个问题,用I 表示其实例。
旅行商问题的参数是由所需访问城市的一个有限集合},,,{11m C C C C =和C 中每对城市j i C C ,之间的距离),(j i C C d 所组成。
它的一个解是对所给城市的一个排序(1)(2)(),,,m C C C πππ使得该排序极小化下面表达式(目标函数)的值),(),()1()()1(11)(ππππC C d C C d m i m i i ++-=∑旅行商问题的一个实例是通过指定城市的数目,并指定每两个城市之间的具体距离而得到的。
例如:{}4321,,,C C C C C =,3),(,9),(,6),(,9),(,5),(,10),(434232413121======C C d C C d C C d C C d C C d C C d就是旅行商问题的一个实例,这个实例的一个最优解是排序1342,,,C C C C ,因为四个城市的这个排序所对应旅行路线是所有可能环游路线中长度最小的,其长度为27。
目前广泛采用的描述问题的方法主要有两种:一是将任一问题转化为所谓的可行性检验问题(feasibility problem);二是把问题转化为判定问题(decision problem)。
实际中几乎所有问题都可直接或间接地转述为判定问题。
判定问题是答案只有“是”与“非”两种可能的问题。
第10章 NP完全问题(自己写的)
如果对于任意的问题C,II的补也在C中, 我们就说问题II属于C在补运算下是封闭的。 例如: 2着色问题的补可以陈述如下: 给出一个图G,它是不2着色的吗? 上述问题属于P类证明: 存在一个确定算法A,当对于2可着色时, 它停机说:yes;在计算not-2着色时,它停机 说no。 对算法A进行简单的交换yes或no,可以得 出no-2算法是一个确定性算法。
• 推论10.1: 如果II和II'是NP中的两个问题,若存在II' 可以规约到II,并且II'是NP完全的,则II是NP 完全的。 证明:因为II'是NP完全的,NP中的每一 个问题在多项式时间内可以规约到II'。因为II' 可以规约到II,所有由上述定理知道: NP中的每一个问题在多项式时间可以规约 到II,就可以知道II是NP完全的。
二、P类 定义10.1:设A是求解问题II的一个算法, 如果在展示问题II的一个实例时,在整个执行 过程中每一步都只有一个解,则成算法A是确 定性算法。因此,如果对于同样的输入,实 例多次执行,其输出不会改变。 例如:求解ax2+bx+c=0; 定义10.2: 判定问题的P类由这样的判定 问题组成,ห้องสมุดไป่ตู้们的yes/no解可以用确定性算法 在运行多项式步数内得到。(例如:O(nk))
• 证明NP问题的思路: (1)II在NP中; (2)存在一个NP完全问题II',使得II'可以规 约到II。 例子:哈密顿回路问题和旅行商问题。 (1)哈密顿回路:给出一个无向图G=(V,E), 它有哈密顿回路吗?即:一条恰好访问每一个 顶点一次的回路。 (2)旅行商问题:给出一个n个城市集合, 且给出城市间的距离。对于一个整数k,是否存 在最长的为k的游程?这里一条游程就是一个 回路,他恰好访问每一个城市一次。
第08章 NP完全问题
问题列表 哈密尔顿回路 旅行商问题 背包问题 划分问题 装箱问题 图的着色问题 整数线性划分问题
判定问题:可以回答是与否的问题。 不可判定问题:不能用任何算法求解的 判定问题,如停机问题。 目前,对于左侧问题没有找到多项式时 间的算法,也无法证明此类算法不存在。 共同点:
◦ 存在指数增长的候选项,且为输入规模的函 数 ◦ 在计算求解上比较困难,但是对于待定解的 验证比较简单(多项式时间)
11
2015-1-5
不确定算法:是一个两阶段的过程,它把一个判 定问题的实例l作为他的输入,并进行以下操作:
◦ 非确定(猜测)阶段:生成一个任意串S,把它当作给 定实例l的一个候选解 ◦ 确定(验证)阶段:确定算法把l和S都作为它的输入, 如果S的确是l的一个解的话,就输出“是”
当且仅当对于问题的每一个真实例,不确定算法 都会在某次执行中返回“是”的时候,则它可以 求解这个判定问题 如果不确定算法在验证阶段的时间效率是多项式 级的,则称它为不确定多项式类型的。
5
2015-1-5
线性规划:存在多项式时间算法 整数线性规划:保持线性目标函数和约束条件不变 的情况下,求解的数值都必须是整数。
A hypergraph G is a pair (V,E), where V is a set E is a subset of P(V)\{} . The elements in V are called vertices. The elements in E are called hyperedges or links.
说明:TSP的优化问题和搜索问题时归约关系
给定一个图,寻找一条恰 好包含每条边一次的路径 复杂度:多项式时间
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Cook-Karp论题:一个问题是实际可计算的当且仅当它 在图灵机上经过多项式时间(步数)计算得到正确的结果。 Cook-Karp论题将可计算问题类进一步划分成两类:一类 是实际可计算的,另一类是实际不可计算的
1.2 问题分类
有两类问题,一类是判定问题,另一类是优化问题 判定问题的解只涉及两种情况:yes或no;优化问题 则涉及极值问题 判定问题举例:给定一个带整数权的有向图G和一 个正整数k,是否存在着一条长度小于k的哈密尔顿回 路? 优化问题举例:给定一个带整数权的有向图G,其 最短路径长度的哈密尔顿长度是多少?
2.1.6 判定问题规约的定理
2.1.7 判定问题规约定理示例
2.1.1 确定性算法
定义:假设A是问题的一个算法。如果 算法在处理实例的执行过程中每一个步骤 都有一个确定的选择,则称算法A是确定性 算法 对于问题的确定性算法A,每一个实例 执行多次的结果是严格一致的
2.1.2 P类判定问题
return no; //修改为yes
}
2.1.5 判定问题规约的定义
定义:令和是两个判定问题,如果存在一个 具有如下性能的算法A,可以用多项式的时间,把 问题的实例I转换为问题的实例I,使得I与I的 答案一致,就称以多项式时间规约于,记为 p
举例:问题是:给定一个长度为n整数数组D 和一个整数k判断是否存在D中的一个元素和k相等。 问题是:给定一个长度为m整数数组E和一个整 数k判断是否存在E中的两个元素,其和与k相等。 用于的实例I向的实例I转换的多项式算法A
第12章 NP完全问题
1. NP完全问题概述 2. P类和NP类问题
3. NP完全问题
4. co_NP类和NPI类问题
1. NP完全问题概述
1.1 Church-Turing论题和Cook-Karp论题 1.2 问题分类 1.3 优化问题向判定问题的转换
1.1 Church-Turing论题和CookKarp论题
1.3 优化问题向判定问题的转换
判定问题举例:给定一个带整数权的有向图G和一个正整数k, 是否存在着一条长度小于k的哈密尔顿回路? 优化问题举例:给定一个带整数权的有向图G,其最短路径 长度的哈密尔顿长度是多少?
如果上述判定问题用下面函数解决: boolean Hamilton(Graph g, int k); 则上述优化问题可以用二分的方式在下面的函数中解 决:
证明:对于P类问题中的任意问题,只要修 改相应的多项式级别算法A的代码,把返回yes的 改为返回no,把返回no的改为返回yes即可
boolean judgeEqual(int n, Elem[] a, Elem[] b){ for (int i=0; i<n; i++) for (int j=0; j<n; j++) if (a[i] == a[j]) return yes; //修改为no
函数transfer输出一个数组{6, 1, 3, 10, 12, 7},规模是n的多项式 级别。它含有3,因此原问题结果是yes,否则原问题结果为no
可以把前述判定问题的提法改变:给定两个大 小均为n的集合A和B,判断这两个集合中是否不 存在着相同的元素? 这个问题是前述问题的补 定义:令C是一类问题,如果对C中的任何问 题C,如果的补也在C中,则称C类问题在 补集下封闭
2.1.4 P类问题在不集下封闭定 理
定理:P类问题在补集下是封闭的
2.1.6 判定问题规约的定理
定理:令和是两个判定问题,如果P,并 且 p ,那么P
证明:根据和 的规约特性,存在着多项式 算法A,把的实例I转换为的实例I,并且二者 运算结果一致。由于A是多项式的,因此,其输出 也是多项式的。A的运算结果(就是I)是一个多 项式规模的结果。而的实例可以用多项式规模的 时间运算得到结果。处理的实例I所需时间是: I向I转换所需时间 + 处理I所需时间,这两个时间 都是多项式级别的,因此处理的实例I是多项式 级别的
2.1.7 判定问题规约定理示例
问题是:给定一个长度为n整数数组D和一个整数k判断是否存 在D中的一个元素和k相等。 问题是:给定一个长度为m整数 数组E和一个整数k判断是否存在E中的两个元素,其和与k相等 假设问题的输入实例I是一个长度为n=4的数组{2, 4, -1, 8}, 和一个整数3,转换算法A如下: int[] transfer(int n, int[] inst_ba){ int[] inst = new int [n*(n-1)/2]; int count = 0; for (int i=0; i<n; i++) for (int j=0; j<i; j++){ inst[count] = inst_bar[i] + inst_bar[j]; count++; } }
定义:如果对某个判定问题,存在着一个非 负整数k,对输入规模为n的实例,能够以O(nk) 的时间运行一个确定的算法,得到yes或no的答 案,则称该判定问题是一个P(Polynomial)类 判定问题 举例:给定两个大小均为n的集合A和B,判断 这两个集合中是否存在着相同的元素?
2.1.3 在补集下封闭的定义
int minHamilton(Graph); //二分查找中调用Hamilton函数
2. P类和NP类问题
2.1 P类问题 2.2 NP类问题
2.1 P类问题
2.1.1 确定性算法 2.1.2 P类判定问题
2.1.3 在补集下封闭的定义
2.1.4 P类问题在不集下封闭定理
2.1.5 判定问题规约的定义
计算复杂性理论有两个基本论题:Church-Turing论题和 Cook-Karp论题 Church-Turing论题:一个问题时可计算的当且仅当它在 图灵机上经过有限次计算得到正确的结果。这个论题把人 类所面临的问题分为两类:一类是可计算的,另一类是不 可计算的。但“有限次计算”是一个宽松的条件