第10章 NP完全问题(自己写的)
第十章 NP完全问题
第十章 NP 完全问题10.1 引言首先说明一下问题的复杂性和算法的复杂性的区别,下面只考虑时间复杂性。
算法的复杂性是指解决问题的一个具体的算法的执行时 间,这是算法的性质;问题的复杂性是指这个问题本身的复杂程度,是问题的性质。
比如对于排序问题,如果我们只能通过元素间的相互比较来确定元素间的相互位置,而没有其他的附加可用信息,则排序问题的复杂性是O(nlgn),但是排序算法有很多,冒泡法是O(n^2),快速排序平均情况下是O(nlgn)等等,排序问题的复杂性是指在所有的解决该问题的算法中最好算法的复杂性。
问题的复杂性不可能通过枚举各种可能算法来得到,一般都是预先估计一个值,然后从理论上证明。
如果∏是任意一个问题,对∏存在着一个算法,他的时间复杂度是)(k n O ,其中n 是输入规模,k 是非负整数,则认为存在一个解问题∏的多项式时间算法。
多项式时间算法是一个有效算法。
把存在多项式时间算法的问题,称为易解决问题;把时间复杂度是以指数函数或排列时间算法的问题,称为难解问题。
为什么用多项式作为划分的标准呢?1) 对于使用的多项式算法来说,多项式的次数很少大于三;2) 多项式时间可解问题类具有很好的封闭性。
即加、减、组合等运算封闭;3) 对很多合理的计算模型来说,在一个模型上用多项式时间可解的问题,在另一个模型上也可以在多项式时间内获得解决。
有两类问题:一类是判定问题,另一类是优化问题。
判定问题的只牵涉到两种情况:yes 或no。
优化问题则牵涉到极值问题(最大化或最小化)。
判定问题很容易转换为优化问题。
为了研究问题的复杂性,我们必须将问题抽象,为了简化问题,我们只考虑一类简单的问题,判定性问题,即提出一个问题,只需要回答yes或者no的问题。
任何一般的最优化问题都可以转化为一系列判定性问题,比如求图中从A到B的最短路径,可以转化成:从A到B是否有长度为1的路径?从A到B是否有长度为2的路径?…从A 到B是否有长度为k的路径?如果问到了k的时候回答了yes,则停止发问,我们可以说从A到B的最短路径就是k。
如何用整数规划求解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完全问题
兰州城市学院数学学院
算 法 设 计 技 巧 与 分 析 · Algorithms Design Techniques and Analysis
第十章
NP完全问题
如果对任意问题类C,问题∏的补也在C中,我们说问 题类∏∈C在补运算下是封闭的。 例如,2着色问题的补可以陈述如下:给出一个图G, 它是不2可着色的吗?我们称这个问题是NOT-2-COLOR问题。 可以证明, NOT-2-COLOR问题是属于P类的。即2着色 问题在补运算下是封闭的。
zhaotingg@
兰州城市学院数学学院
算 法 设 计 技 巧 与 分 析 · Algorithms Design Techniques and Analysis
第十章
NP完全问题
定义10.5 一个判断问题Π称为是NP困难的,如果 对NP中每一个问题Π’, Π’ ∝polyΠ表示。
算 法 设 计 技 巧 与 分 析 · Algorithms Design Techniques and Analysis
第十章
NP完全问题
10.4 NP完全问题
术语“NP完全”表示NP中判定问题的一个子类,它们在下述意义 下是最难的,即如果它们中的一个被证明用多项式时间确定性算法可解, 那么NP中的所有问题用多项式时间确定算法可解,即P=NP。
颜色,所需的最少颜色数,称为G的色数,记为χ(G).
zhaotingg@
兰州城市学院数学学院
算 法 设 计 技 巧 与 分 析 · Algorithms Design Techniques and Analysis
第十章
NP完全问题
例10.3 给出一个无向图G=(V,E),对于某个正整数k,G
第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完全的问题
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完全问题证明
均分∈ 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}
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是非负整数。对于许多问 题,这一阶段可以在线性时间内完成。
10 NP-完全问题
多项式界与P类问题
一、多项式(时间)界 区分难解问题与易解问题的界限就是多项式(时间)界。 计算复杂性理论的两个基本论题: Church-Turing 论题 Cook-Karp 论题 Church-Turing论题利用Turing机指出了那些问题是可计算的, 这个“可计算的”问题类非常大,几乎所有的问题都是可计算的, 反例不多。 Cook-Karp论题则是:在可计算的问题(函数)中,只有在多 项式阶时间内可计算的问题才是实际可计算的,称为该计算是可行 的或该问题是易解的。这个易解问题类就称为P类,是可计算问题 类的一个很小的子集。
合取范式的可满足性问题:是否有一组对所有命题变量的赋值 (F或T),使得整个CNF取值为真(T)。
一些难解问题
(6)图的团集问题
图G=<V,E>的团集,是指G的一个完全子图,即该子图中任意两 个互异的顶点都有一条边相连。 无向图G=<V,E>的团集问题:求G的最大子团。
v2 v3
v1
v4
v5
一些难解问题
带罚款的作业调度问题:求一种调度方案,即求{1,2,…,n} 的一种排列,使得按这种顺序完成n项作业所付出的罚款数最小。
一些难解问题
(5)可满足性问题
这个问题也称合取范式的可满足问题。 一个合取范式形如:A1∧A2∧…∧An(即若干子句的逻辑乘) 子句Ai形如:a1∨a2∨…∨ak,其中aj(1<=j<=k)为某一布尔变 量或是该变量的非。
T4(n)=2n 0.001秒 4×1016年
多项式界与P类问题
(4)从理论上来说,多项式具有两个性质: “闭包”性质:许多实际问题是一些子问题的组合或重叠。 而多项式函数通过算术运算的组合或重叠(即多项式函数的多项式 函数),得到的仍然是多项式界的。 不同计算模型的“独立”性或不依赖性:即某一问题在一种 计算模型(如Turing机)下有多项式算法,那么它一定也在其它几 种模型下有多项式算法。
算法10_NP完全问题
if(a[j]==x) { cout<<j;
Success();
执行时间都为O(1) //不确定算法成功终止
}
cout<<-1; Failure(); }
若算法执行中需作出一系列的Choice函 数//不选确择定,算当法且失仅败当终C止hoice的任何一组选
择都不会导致成功信号时,算法在O(1)
时间不成功终止。
ch10.6
不确定机的执行方式,可理解为不受限制的并行计算:
➢不确定机执行不确定算法时,每当Choice函数进行 选择时,就好像复制了多个程序副本,每一种可能的 选择产生一个副本,所有副本同时执行。一旦一个副 本成功完成,将立即终止所有其他副本的计算。
➢如果存在至少一种成功完成的选择,一台不确定机 总能做出最佳选择,以最短的程序步数完成计算,并 成功终止。
在不不确确定定搜机索上算执法行:的算法称为不确定算法(non
dveotiedrSmeianricsht(iicntaal[g],oTrxit)hm如)果。一个判定问题实例的解为真,
{
Choice函数每一次总能在O(1)时
int j=Choice(0,n-1); 间//从内{做0,1出,.导..,n致-1成}中功任的意正选确取选一择个。值
算法设计与分析
第10章 NP完全问题
学习要点: 确定算法和不确定算法 判定问题和最优化问题的关系 可满足性问题 P类问题和NP类问题 NP难度(NP hard)和NP完全(NP complete)问题 Cook定理 典型的NP完全(或NP难度)问题的证明
ch10.2
章节内容:
10.1 基本概念 10.2.1 Cook定理 10.3 一些典型的NP完全问题
NP-完全问题(NP
不确定的算法:伪代码
Void nondetA(String input) String s=genCertif(); boolean checkOK=verifyA(input,s) if (checkOK) Output “yes“ return checOK为false时不作反应.
类NP:几点说明
1 2 3 4 5
P=NP?
类NP:由不确定的多项式界算法的判定问题 构成的类称为类NP。 P=NP?是计算机科学中最大的问题之一
输入尺寸(the size of input)(1)
是否存在j, k>1使得n= jk?即n 是否为一合数? factor=0; for (j=2;j<n;j++) if ((n mod j)==0) factor=j; break; return factor (n mod j)计算时间为Θ(log2n)(bit级运算). 算法的复杂度为Θ(nlog2n).但n是输入长度m=log2n 的指数函数.所 以它是指数复杂度算法. Manindra Agrawal 等证明了: ”n是否为一素数?” 属于P
它是NP问题, 同时它还是NP-难度问题. 所有NP-完全问题,相对于多项式约化关系,是自反, 对称,传递的,即构成一个闭类. 如果能找到一个NP完全问题的多项式算法则P=NP 有NP-难度问题但不知它是否在NP类内(第kth重子 集问题)
NP-完全问题的性质
Problems-unknown in NP
宫秀军
天津大学计算机科学与技术学院 gongxj@
主要内容
NP-完全问题:一些典型的例子 NP-完全问题:相关定义 近似算法 两种新的计算模型
算法----NP-难度和NP-完全的问题
算法----NP-难度和NP-完全的问题1、确定的算法算法运算的结果都是唯⼀确定的, 这样的算法叫做确定的算法(deterministic algorithm) 。
如加减乘除2、不确定的算法允许算法每种运算的结果不是唯⼀确定的, ⽽是受限于某个特定的可能性集合。
执⾏这些运算的机器可以根据终⽌条件选择可能性集合中的⼀个作为结果。
这就引出了所谓不确定的算法( nondeterministic algorithm)。
如求下⼀个⼤质数3、不确定机式执⾏不确定算法的机器称为不确定机(nondeterministic machine ) 。
然⽽, 这⾥所定义的不确定机实际上是不存在的, 因此通过直觉可以感到这类问题不可能⽤“快速的”确定算法求解。
4、P问题(Polynomial多项式问题)P 是所有可在多项式时间内⽤确定算法求解的判定问题的集合。
5、NP问题(Non-Deterministic Polynomial, ⾮确定多项式)NP是所有可在多项式时间内⽤不确定算法求解的判定问题的集合。
有些问题很难找到多项式时间的算法(或许根本不存在),例如“找出⽆向图中”问题。
但如果给了该问题的⼀个答案,可以在多项式时间内判断这个答案是否正确。
例如说对于哈密顿回路问题,给⼀个任意的回路,很容易判断它是否是哈密顿回路(只要看是不是所有的顶点都在回路中就可以了)。
这⾥给出NP问题的另⼀个定义,这种可以在多项式时间内验证⼀个解是否正确的问题称为NP问题,亦称为验证问题类(布尔判断问题)。
6、约化令 L1 和L2 是两个问题, 如果有⼀确定的多项式时间算法求解L1 , ⽽这个算法使⽤了⼀个在多项式时间内求解L2 的确定算法,则称L1 约化为L2 ( 也可以写作L1 ∝L2 )。
7、NP-完全问题如果可满⾜性约化为⼀个问题L,则称此问题L是NP-难度的。
如果L是NP难度的且L∈NP, 则称问题L是NP-完全的。
⼀切NP-完全的问题都是NP-难度的问题, 但⼀切NP-难度的问题并不都是NP-完全的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1971 年 S. Cook 发表了“ The Complexity of Theorem
Proving Procedures”这篇著名论文,1972年R. Karp发表了
“Reducibilty Among Combinatorial Prob1ems”,从此奠 定了 NP完全理论的基础。 NP完全理论指出在 NP类中有一些问
第10章 NP总试图寻求实现它的最优算法。然而 对有些问题,这个工作难度很大,目前还不能做到这点。
1、P类问题:问题的时间复杂性是多项式阶的,这只须设 计一个实现它的时间复杂性是多项式阶的算法即可,例如分类 (又称排序)问题。 2、顽型问题:人们已经设计出实现它的时间复杂性为指数阶 的算法,并且已证明该问题不存在多项式阶的算法,例如梵塔 问题;但是有这样一类问题, 3、NP问题:人们目前已设计的实现它的算法其时间复杂性 为指数阶的,但还不能肯定它有或没有多项式阶的算法。
5、问题转化举例: 10.1设s是一个实数序列,EU问题是:是否S 中的所有的数都不相同。 判定问题: 输入:一个整数序列S; 问题:在S中存在两个数据相等吗。 10.2 给出一个无向图G=(V,E),用k种颜色对G 着色.......,使得图中没有两个邻接点有相同的 颜色。
• 判定问题: 输入:一个无向图G=(V,E)和一个正整数k>=1; 问题:G可以k着色吗?即G最多可以用k种颜 色着色吗? 最优化问题:求出G的着色数。 输入:一个无向图G=(V,E) 输出:G的色数。 研究NP难问题,将精力更多的投入到研 究判定问题的求解方面。
二、P类 定义10.1:设A是求解问题II的一个算法, 如果在展示问题II的一个实例时,在整个执行 过程中每一步都只有一个解,则成算法A是确 定性算法。因此,如果对于同样的输入,实 例多次执行,其输出不会改变。 例如:求解ax2+bx+c=0; 定义10.2: 判定问题的P类由这样的判定 问题组成,他们的yes/no解可以用确定性算法 在运行多项式步数内得到。(例如:O(nk))
题具有以下性质: 若其中一个问题获得多项式算法,则这一类
问题就全部获得了多项式算法;反之,若能证明其中一个问题 是多项式时间内不可解的,则这-类问题就全部是多项式时间内 不可解的。这类问题将称之为NP完全问题。NP完全理论不打算 找出这一类问题的算法,仅仅着眼于证明这一类问题的等价性 ,即证明它们的难度相当。 NP 完全理论还很年轻,有许多问题等待人们研究。例如, “ NP = P ”还是相反“ P 是 NP 的真子集 ”。这个问题是当代计算 机科学中的一大难题。
如果对于任意的问题C,II的补也在C中, 我们就说问题II属于C在补运算下是封闭的。 例如: 2着色问题的补可以陈述如下: 给出一个图G,它是不2着色的吗? 上述问题属于P类证明: 存在一个确定算法A,当对于2可着色时, 它停机说:yes;在计算not-2着色时,它停机 说no。 对算法A进行简单的交换yes或no,可以得 出no-2算法是一个确定性算法。
• 3、这一类问题的相通性: 数百个著名的问题。 有趣的是,如果其中一个能够找到多项式 可解,那其他的问题都可以找到多项式解。 其中很多是来自于现实生活中的问题: 网络路由选择、送餐车辆指派问题、车 间调度问题等。 见表1.1,现存的求解方法,中等输入也 需要几百年时间才能求解成功。
4、NP问题的描述转换 转换为判定问题。 两种答案:yes或no。 最优化问题:关心的是某个量的最大化或 最小化问题。
三、NP类 非形式化概念: NP类问题由这样的问题II组成,对于这 些问题存在一个确定性算法A,该算法在对II 的一个实例展示一个断言解时,它能在多项 式时间内验证解的正确性。 如果断言解导致答案是yes,就存在一种 方法可以在多项式时间内验证这个解。
• 非确定性算法: (1)猜测阶段:产生一个任意字符解串, 可能对应一个实例解,也可能不是。但是要 求在多项式步数内产生。 (2)验证阶段: 首先检查该字符解串,是不是合适的形 式,如果不是,停机回答no;如果是合适的 形式,则继续检查它是不是问题的实例x的解。 如果是,则停机回答yes,如果不是则停 机回答no。 (上述是以图灵机计算模型实现的。)
• 一、序言 1、 观察:前面提到的各种排序算法、图遍历算法 等,动态规划解背包等。 上述各种算法的复杂度都是在低阶多项式级别下 完成的。 2、有另外一类问题:m-图着色问题(m>2)、生 产车间调度问题、最短路径(路由)、神经网络参数 优化问题等。 这些问题,目前根本没有找到有效解方式。(在 可以容忍的时间内解决问题。) 这些问题目前被认为是难解的。(没有确定解公 式),以后也不可能找到确定解公式。 这些难解问题,目前的求解规模在2n或n!。
• 定义10.3 NP类问题由下面的判定问题组成,对 于它们存在着多项式时间内运行的不确定性 算法。 例子10.4 coloring问题: (1)设I是coloring的一个实例,s宣称是I的 解。容易建立一个确定性算法验证s是否确 实是I的解。 可以得出结论该问题属于NP类。
(2)建立不确定算法 对图G进行编码表示,建立并运行下面的算法A。 a、首先对于顶点集合产生一个任意颜色的指派, 猜测一个解。 b、验证该解是否合适的有效指派。 c、该解有效,停机回答yes;否则,停机回答no。 NP类与P类的区别: (1)P是一个判定问题类,这些问题可以用一个确 定性算法在多项式时间内判定或解出; (2)NP是一个判定类,这些问题可以用一个确定 性算法在多项式时间内检查或验证他们的解。
• 下面问题的解都是P类问题: 1、排序问题:给出一个n个整数的表,他们 能否按非降序排列; 2、不相交集问题:给出两个整数集合,他们 的交集是否为空? 3、最短路径:在一个有向图G=(V,E)中,两 个特异的顶点s,t和一个整数k,在s和t之间 是否存在一条路径,它的长度最多是k。 4、2着色问题:给出一个无向图G,问它是 否可以用两种颜色着色。