NP完全问题证明1
- 格式:ppt
- 大小:3.67 MB
- 文档页数:34
第十章 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问题的字面解释非确定型多项式完全问题一、背景介绍1. NP问题的概念NP问题是计算机科学和数学领域中一个重要的概念,即“非确定性多项式时间”(Non-deterministic Polynomial time),它代表了一类能在多项式时间内被验证的问题。
这类问题的解决方案虽然不能在多项式时间内被找到,但一旦有了一个解,却能够在多项式时间内被验证。
简而言之,如果一个问题可以在多项式时间内被验证,则它是一个NP问题。
2. 多项式完全问题的概念多项式完全问题是一类特殊的NP问题,它具有以下两个性质:它是一个NP问题;任何一个NP问题都可以在多项式时间内规约到它。
也就是说,如果有一个多项式时间算法能够解决任何一个多项式完全问题,那么就能够解决所有的NP问题。
3. 非确定型多项式完全问题非确定型多项式完全问题是NP问题中最困难的一类问题,它要求在多项式时间内验证一个解的存在,并且这个验证需要非确定性算法。
换言之,虽然这类问题的解可以在多项式时间内被验证,但却无法在多项式时间内被求解。
非确定型多项式完全问题是计算理论中一个极具挑战性的问题。
二、定义和性质1. 非确定型多项式完全问题的定义非确定型多项式完全问题是指一个问题,如果它是一个NP问题,并且任何一个NP问题都可以在多项式时间内归约到它,那么它就是一个非确定型多项式完全问题。
每一个非确定型多项式完全问题都是NP 问题,但不是所有的NP问题都是非确定型多项式完全问题。
2. 非确定型多项式完全问题的性质非确定型多项式完全问题具有以下一些重要性质:(1)困难性:非确定型多项式完全问题是计算上的一类最困难问题,它们无法在多项式时间内被求解。
(2)通用性:任何一个NP问题都可以在多项式时间内归约到非确定型多项式完全问题,因此解决了一个非确定型多项式完全问题就意味着可以解决所有的NP问题。
(3)实际意义:非确定型多项式完全问题在实际生活中具有广泛的应用,例如在计划问题、调度问题、网络设计等方面都有重要的地位。
如何⽤整数规划求解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 完全证明和顶点覆盖优化问题的近似算法顶点覆盖(VERTEX COVER )给定一个无向图),(E V G =和一个正整数k ,若存在V V ⊆',k V =',使得对任意的E v u ∈),(,都有'V u ∈或'V v ∈,则称'V 为图G 的一个大小为k 的顶点覆盖。
顶点覆盖问题的描述判定问题:VERTEX COVER输 入:无向图),(E V G =,正整数k问 题:G 中是否存在一个大小为k 的顶点覆盖,这是一个NP 完全问题 顶点覆盖的NP 完全性证明NP 性的证明:对给定的无向图),(E V G =,若顶点V V ⊆'是图G 的一个大小为k 顶点的覆盖,则可以构造一个确定性的算法,以多项式的时间验证k V =',及对所有的E v u ∈),(,是否有'V u ∈或'V v ∈。
因此顶点覆盖问题是一个NP 问题。
完全性的证明:我们已知团集(CLIQUE )问题是一个NP 完全问题,若团集问题归约于顶点覆盖问题,即VERTEX CLIQUE poly αCOVER ,则顶点覆盖问题就是一个NP 完全问题。
我们可以利用无向图的补图来说明这个问题。
若向图),(E V G =,则G 的补图--=),(E V G ,其中}),(|),{(E v u v u E ∉=-。
例如,图1(b)是图1(a)的补图。
在图1(a)中有一个大小为3的团集},,{y v u ,在图1(b)中,则有一个大小为2的顶点覆盖},{w v 。
显然可以在多项式时间里构造图G 的补图-G 。
因此,只要证明图),(E V G =有一个大小为k V -||的团集,当且仅当它的补图-G 有一个大小为k 的顶点覆盖。
(a) (b)图1无向图及补图必要性:如果G 中有一个大小为k V -||的团集,则它具有一个大小为k V -||个顶点的完全子图,令这k V -||个顶点集合为'V 。
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的英文全称是Non-deterministic Polynomial 的问题,即多项式复杂程度的非确定性问题。
简单的写法是NP=P?,问题就在这个问号上,到底是NP等于P,还是NP不等于P。
概述NP完全问题是不确定性图灵机在P时间内能解决的问题,是世界七大数学难题之一。
NP完全问题排在百万美元大奖的首位,足见他的显赫地位和无穷魅力。
数学上著名的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的问题,也即是多项式复杂程度的非确定性问题。
非确定性问题详解什么是非确定性问题呢?有些计算问题是确定性的,比如加减乘除之类,你只要按照公式推导,按部就班一步步来,就可以得到结果。
但是,有些问题是无法按部就班直接地计算出来。
比如,找大质数的问题。
有没有一个公式,你一套公式,就可以一步步推算出来,下一个质数应该是多少呢?这样的公式是没有的。
再比如,大的合数分解质因数的问题,有没有一个公式,把合数代进去,就直接可以算出,它的因子各自是多少?也没有这样的公式。
这种问题的答案,是无法直接计算得到的,只能通过间接的“猜算”来得到结果。
这也就是非确定性问题。
而这些问题通常有个算法,它不能直接告诉你答案是什么,但可以告诉你,某个可能的结果是正确的答案还是错误的。
这个可以告诉你“猜算”的答案正确与否的算法,假如可以在多项式时间内算出来,就叫做多项式非确定性问题。
世界七大数学难题之NP问题的证明(NP≠P)和一些相关知识摘要:本文提出算法公理:公理目标集合不存在非约化约简;判断某类公理待被判断集合问题所需的计算复杂度类最少操作次数,一定大于或等于相应公理目标集合被最简约化后的操作类二级元素的数量。
基于算法公理和本文提出的单点连入问题,本文证明了NPC问题都不存在多项式算法,因此NPC∉P,NP≠P。
关键词:算法公理;单点连入问题;NPC问题;多项式算法;NP≠P第一章定义定义1:“对于一条以A1点为起点、A n点为终点的路、处在该路之外的B点和该路中的两个以上非路上相邻点与B点之间的边来讲,是否存在一种连接方式使该路和该点能够被合并成一条新的以A1点为起点、A n点为终点的路”这一问题又被称为单点连入问题,其中A1点与A n点不同时与B点相连。
上述“路上相邻”指在仅考虑路上的点和边时的相邻;非路上相邻点(边)指除路上相邻点(边)之外的点(边)。
上述路又被称为待连路;上述点又被称为待连点。
上述“被合并成一条新的以A1点为起点、A n点为终点的路”又被称为被连入。
上述“存在一种连接方式使该路和该点能够被合并成一条新的以A1点为起点、A n点为终点的路”又被称为能使待连点被连入;反之则又被称为不能使待连点被连入。
由单点连入问题的所有点和所有边所构成的图又被称为该单点连入问题图。
定义2:待连路的起点又被称为待连路的左固定点或左端点;待连路的终点又被称为待连路的右固定点或右端点;两者又被合称为待连路的固定点和端点。
待连路中除固定点之外的点又被称为待连路的非固定点。
待连路中路上相邻两点之间的边又被称为待连路的内边;待连路中非路上相邻两点之间的边又被称为待连路的外边;待连点被连入后的新路中相应地也有内边和外边。
待连点与待连路中的点之间的边又被称为待连边。
定义3:待连路的起点又被称为该待连路的第1个点;待连路的起点之后的第1个点又被称为该待连路的第2个点;相应地有该待连路的第3个点等。
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问题。
司徒达的世界七大数学难题1、NP完全问题例:在一个周六的晚上,参加了一个盛大的晚会。
由于感到局促不安想知道这一大厅中是否有你已经认识的人。
宴会的主人提议说,你一定认识那位正在甜点盘附近角落的女士罗丝。
不费一秒钟你就能向那里扫视,并且发现宴会的主人是正确的。
如果没有这样的暗示你就必须环顾整个大厅,一个个地审视每一个人,看是否有你认识的人。
生成问题的一个解通常比验证一个给定的解时间花费要多得多。
2、霍奇猜想二十世纪的数学家们发现了,研究复杂对象的形状的强有力的办法。
基本想法是问在怎样的程度上,可以把给定对象的形状通过把维数,不断增加简单几何营造块粘合在一起来形成。
这种技巧是变得如此有用,使得它可以用许多不同的方式来推广。
最终导致一些强有力的工具,使数学家在对他们研究中所遇到的形形色色的对象进行分类时取得巨大的进展。
不幸的是在这一推广中,程序的几何出发点变得模糊起来。
在某种意义下必须加上某些没有任何几何解释的部件。
霍奇猜想断言,对于所谓射影代数簇这种特别完好的空间类型来说,称作霍奇闭链的部件实际上是称作代数闭链的几何部件的(有理线性)组合。
3、庞加莱猜想如果我们伸缩围绕一个苹果表面的橡皮带,那么我们可以既不扯断它,也不让它离开表面,使它慢慢移动收缩为一个点。
另一方面如果想象同样的橡皮带,以适当的方向被伸缩在一个轮胎面上,那么不扯断橡皮带或者轮胎面,是没有办法把它收缩到一点的。
苹果表面是“单连通的”而轮胎面不是。
大约在一百年以前庞加莱已经知道,二维球面本质上可由单连通性来刻画,他提出三维球面(四维空间中与原点有单位距离的点的全体)的对应问题。
这个问题立即变得无比困难,从那时起数学家们就在为此奋斗。
4、黎曼假设有些数具有不能表示为两个更小的数的乘积的特殊性质,例如,2、3、5、7等等。
这样的数称为素数;它们在纯数学及其应用中都起着重要作用。
在所有自然数中这种素数的分布并不遵循任何有规则的模式;然而德国数学家黎曼(1826~1866)观察到。