第10章NP完全问题(自己写的)
- 格式:ppt
- 大小:708.50 KB
- 文档页数:23
第十章 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难问题。
虽然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完全的问题一个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类问题就是所有复杂度为多项式时间的问题的集合。
通俗地称所有复杂度为多项式时间的问题为易解的问题类,否则为难解的问题。
有些问题很难找到多项式时间的算法(或许根本不存在),例如“找出无向图中哈米尔顿回路”问题。
但如果给了该问题的一个答案,可以在多项式时间内判断这个答案是否正确。
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)。
取其最⾼次,可以看出,这是⼀个时间复杂度为多项式的表⽰⽅式。
收稿日期:2015-08-17基金项目:湖北省自然科学基金项目(2014CFC1121)作者简介:杜立智(1964),男,湖北黄冈人,副教授,硕士.研究方向:计算机算法;计算数学;计算复杂性.文章编号:1674-2869(2015)10-0073-060引言对P 和NP 问题的研究,关键有两个方面,第一是对相关概念的正确理解和把握,第二是正确的研究方向与正确的研究方式方法.对于第一点,由于相关概念相当复杂抽象,存在着许多理解上的谬误.甚至一些翻译过来的教科书都存在这些谬误,从而影响了该专业的学生正确理解掌握相关概念.对于第二点,关键是倾向于以NP 等于P 为出发点还是相反.不同的出发点,对研究的成功与否,起着至关重要的作用.而在所有NP 相关问题中,NP 完全无疑是最重要的概念.事实上,对NP 完全及其相关概念的透彻理解,是深入研究NP 问题,尤其是研究NP 与P 的关系问题的关键.谈到NP 完全,又不能不涉及到多项式归约.本文的目的是,通过分析与NP 问题相关的核心概念,并通过对抽象定义的解析结合对认识谬误的剖析,揭示其实质.本文的关键点是,深入剖析NP 完全问题时间复杂度的逻辑内涵,同时通过对多个实际问题的分析,给出解决NP 完全问题的启发式思路,从而为该领域的研究者在概念和研究方向的正确把握上提供参考.1NP 和NP 完全问题的起源与基本思想及其影响和发展NP 问题是随着计算复杂性理论的产生而出现的.根据计算复杂性理论,所有科学问题按其解决时间可分为三大类:多项式类㊁指数类和不可解类.但要确定某个具体的问题到底属于哪一类,往往并非一件容易的事情,尤其是对少数难度大的问题[1-2].在理论计算机领域,对这三类问题的研究本来就浩瀚和深不可测,随着NP 问题的出现,事情就更复杂了.NP 问题是与确定性图灵机和非确定性图灵机的概念一起出现的[3].这两个概念相当抽象,极难透彻理解掌握,从而更加为NP 问题蒙上了一层神秘色彩.通俗地讲,NP 问题是 多项式验证 问题.也就是说,若是有了某个NP 问题的解,要判断这个解是否正确,这个判断可以在多项式时间内完成.至于求解这个问题到底需要多少时间,先撇开.自从NP 问题出现以后,学术界长时间对此进行了大量的投入及研究,尽管取得了不少研究成果,由于NP 问题的难度和深度,迄今为止,依然不NP 完全问题研究及前景剖析杜立智,陈和平,符海东武汉科技大学计算机科学与技术学院,湖北武汉430065摘要:P vs.NP 是理论计算机领域最重要的课题之一,而其中的核心是NP 完全问题.由于该问题所涉及的概念复杂抽象,对它们的理解存在不少谬误,许多已发表的研究论文都包含着这些谬误.主要是:NP㊁NP 完全概念理解谬误,确定性及非确定性图灵机的概念模糊不清,P 与NP 关系的误读,NP 问题研究方向的误导等.本文分析了这些谬误,并揭示了相关概念的实质.通过不同角度多方位分析,对NP 完全问题可能的解决途径和研究方向,提供了启发式思路.关键字:确定性图灵机;非确定性图灵机;NP 完全问题中图分类号:TP3-0文献标识码:Adoi :10.3969/j.issn.1674-2869.2015.10.014武汉工程大学学报第37卷能确定NP到底属于上述三类问题中的哪一类.可以确定两点,其一是NP问题空间复杂度是多项式,其二是,NP问题时间复杂度的上限是指数型.所以,任何NP问题要么是多项式,要么是指数型[4],而不可能是不可解的问题.不过,要确定NP到底是不是属于多项式,确定这一点本身倒可能是不可解问题.不少专家提出了这样的判断和疑问. 1937年,英国计算机科学家,同时也是计算复杂性理论开山鼻祖的图灵提出了一种自动机模型,后来被人们称作图灵机,并论证了图灵机的可计算功能.图灵机模型的提出不仅为现代计算机的设计奠定了理论基础,同时也成为引出和研究NP问题的工具.后进一步分为确定性图灵机(DTM)和非确定性图灵机(NDTM)两类.这两个概念在教科书中的定义高度抽象,难以把握.笔者在这里用通俗的语言加以剖析.确定性图灵机是现代计算机的理论模型,可以认为现代计算机是对图灵机理论模型的实现.其计算功能与现代计算机等价,但还是有根本的不同,前者更抽象.笔者曾经用确定性图灵机进行了编程练习,解决同样的问题,比当今流行的计算机语言编程要难得多.而非确定性图灵机则纯属理想的理论模型,现实中无法实现.P类问题也定义为在确定性图灵机上能在多项式时间内解决的问题;NP类问题则是在非确定性图灵机上能在多项式时间内解决的问题.非确定性图灵机的最大特点就是具有并行运算能力.但请注意正确理解它的关键是,这个并行并不是无限制的.它只能进行 分叉 式的并行,而不能按许多甚至无数平行线 平行 方式地并行.若是后者,那非确定性图灵机就不仅能解决NP问题,指数型问题也能一块解决了.用一颗n层的k叉树来描述确定性非确定性图灵机的区别无疑能说明问题,可以肯定所有NP问题都可以翻译成这个模型.对于这样一棵树,其节点数目是指数型,k的n次方.当然这些节点之间有统一的联系规律,这个规律信息是多项式.要寻找其中一个点,以及从顶点到这个点的一条路径,非确定图灵机从顶点开始向下,在每一个分叉处能并行地同时向所有分支走下去,从而,最多n步就能达到目的;而确定性图灵机无并行能力,它需要遍历整个树,才能保证找到目标.当然,也不排除有高超的算法使其能快速得到结果.显而易见,所有多项式问题,也就是P类问题,肯定属于NP.因为能在多项式时间内计算出结果的,必然也能在多项式时间内验证结果.但NP是否属于P成了该领域的最大难题,迄今无法确定.该问题的解决不仅能在该领域带来理论上的重大突破,并且也能对许多重要的问题的实际计算具有意义.1971年,NP问题的研究取得了里程碑的突破.加拿大著名计算机科学家史蒂文-库克证明了存在具有NP完全性质的NP问题[5],这就是可满足性问题(SAT),它也是人类发现的首个NP完全问题(NPC).所谓某问题具备NP完全性,也就是,任何NP问题的求解都可以多项式转化到对该问题的求解.库克构造了一般NP问题,也就是任意NP问题多项式转化为SAT问题的转化方法和公式,从而完成了NP完全的证明.其逻辑结果是:如果能得到可满足性问题的多项式时间算法,那就意味着所有NP问题都具有多项式时间算法,即NP等于P.请注意证明某NP问题具有NP完全性,通常是一道艰难的工作,普通的NP问题并不具备这一特性.而大量的NP问题其实就是非常简明的P问题.不少论文书刊中,经常使用这样的说法:某问题是NP,故无有效算法.这当然是一种谬误,是混淆了NP与NP完全的概念.NP和NP完全问题的出现,对计算机算法和计算复杂性领域,产生了重大而深远的影响.随着第一个NP完全问题的发现和证明,兴起了对这类问题之间的多项式转化研究.在教科书中通常将这种转化称为 归约 [6].注意理解多项式归约必须把握两个关键点:一是转化本身所需的时间是多项式,二是转化后对原问题计算规模的扩大,不超出多项式的范围.例如,若需要将具有n 个变量的3SAT问题按多项式规约转化为对另一NP问题的求解,那么,转化所需的时间不能超出n 的多项式函数,同时,设转化后后一问题的大小规模为m,m也不能超出n的多项式函数.若是m在n的基础上呈指数型放大,即使转化本身所花的时间很快,那当然也不能称作多项式归约.长期以来,多项式转化的研究一直经久不衰.它主要有两个方面的价值.从70年代初开始,前期的研究主要是为了发现NP完全问题.那时候每发现一个NP完全问题,就是一个较轰动的大成果.如今这个已经不那么重要了.但由于NP完全问题74第10期之间的多项式转化性质,若得到了一个问题的高效算法,则可以通过转化得到其他问题的高效算法.因而前一类目的的研究已经显著降温,后一类目的的研究则更有实用价值.这就是NP完全问题的意义和实质.关于NP完全问题,还有一个重要概念就是伪多项式时间算法.举例来讲,整数背包问题:给定一些整数C j,j=1,2, n,以及整数b,是否存在整数X1, X n>=0使得n j=1ðC j X j=b?该问题是经典的NP完全问题,但该问题存在针对参数n和b的多项式时间算法,称伪多项式时间算法.也就是说,必须限定b的大小为n的多项式,该问题才具有多项式时间算法.而当b很大,为n的指数幂时,按同样方法得到的算法的时间复杂度就不是多项式,而是指数型了.一些研究者不理解这一点,花了大量的时间和精力,找到了该问题的在限定了b的大小的前提下的多项式时间算法,就真的以为已经解决了NP是否等于P的问题.其实是大谬误. 2关于NP完全问题时间复杂度的争论首先讨论NP完全问题时间复杂度的一些特点.一般来说,对于所熟悉的许多多项式时间问题,其时间复杂度的曲线很光滑.也就是说,局部范围的输入数据,往往具有整体时间复杂度的特性.例如,对于著名的冒泡排序算法,其时间复杂度在最坏的情况下是n的平方,在最快的情况下为常数,平均时间为二分之n的平方,且其分布呈光滑的曲线,并且这样的曲线很容易通过算例描绘出来.在n等于任何值的时候,都具有这样的特点. NP完全问题,比如哈密尔顿环,就完全不是这样了.哈密尔顿环的特点是:对一个不大的n,其可能的算例数量极其庞大,且这些算例的难易程度分布相当复杂,没有规律,现在还没有人能掌握这些算例难易程度的分布规律.例如,国际某网站有关于最难算的哈密尔顿的算例,这些算例用笔者的程序可以非常轻松和快速地解决.因而,对于某个NP完全问题,一个计算程序所说在最坏情况下的计算时间,只能指的是在所算的例子中最慢的那一个,而不是指:该程序找到了这样的例子,它代表了此问题计算时间复杂度的上限.这样的例子是没有人能找得到的,而冒泡排序之类的多项式问题则非常容易找到这样的例子,且呈固定的概率分布.故而对NP完全问题算法的思维不能停留在对一些简单问题的思维层面上.就算真的能找到在最坏情况下的问题,也不能排除在客观世界存在有这样的NP完全问题,比如:它的时间复杂度上限是某个值,但在某个数据段,最坏的情况的复杂度是另一个值,在另一个数据段最坏的情况又是一个不同的值,等等.这就是为什么NP完全问题时间复杂度难以确定的根本原因.自从史蒂文库克论证了NP完全问题的存在, NP是否等于P随即开始困扰人类,考量着人类复杂的思路能力和计算能力.此问题也很快被公认为最具挑战性的世界难题.如果能证明某个NP完全问题存在多项式时间算法,即可判定所有NP问题都具有多项式时间算法.如前所述,迄今已发现4千多个NP完全问题,还没有人能论证完全问题学者具有多项式时间算法,也没有人能否定其具有多项式时间算法.相关领域的学者往往根据自己的感觉或倾向拥有自己的判断,这些判断不能说是科学的或有实际价值的.有人对一些数学家和计算机科学家做过统计,结果大多数倾向于认为NP不等于P,只有小部分认为两者相等.一些科学家在提出NP不等于P的判断时,所举的理由仅仅是泛泛的,而不具备严格的科学认证价值.举例如下:一个算法学家,在一本算法专著上写到:迄今已出现了大量NP完全问题,由于许多最优秀的算法专家和数学家在长期研究这些问题,却没有找到一个多项式算法,故倾向于判断NP不等于P[1]. ACM期刊主编是这样论证NP不等于P的:若谁证明了NP等于P,则他不仅只是解决了NP问题,所有7大世纪难题他都解决了,因为所有科学研究问题的解决都属NP[7].还有专家认为:由于非确定性图灵机的计算能力明显强于确定性图灵机,从而NP不等于P.当然,也有不少专家认为NP等于P.下面给出NP是否等于P的一些启发式思考. 3科研问题的解决与NP完全问题NP问题为何如此具有影响力?其原因一是问杜立智,等:NP完全问题研究及前景剖析75武汉工程大学学报第37卷题本身确实难解,极具挑战性,二是,它考量人类思维能力和计算能力的极限.人的思维是串行的而不具备并行思维能力,而所有科学问题的解决途径,其实都是NP.若是NP等于P,则理论上,只具有串行思维能力的人类,可以解决所有科学难题.而若是NP 不等于P,也就是大量的NP问题会是指数型的,则不幸得很,大量科学问题人类思维很难解决.因为指数型通常意味着2的n次方或更大,当n的规模达到小小的100时,解决问题所需的思维步骤将达100万亿亿亿步,这是人类思维能力所无法企及的,哪怕花上万万年的时间.从哲学上可以这么说,是否赞成NP等于P,是区分可知论和不可知论的分水岭.公认为20世纪最伟大的数学家的希尔伯特有句名言:我们必须知道,我们必能知道!可见,本质上,希尔伯特是赞成NP等于P的!而他在20世纪刚开始所提出的23个高不可攀的数学问题,也已经陆续得到了解决,仿佛是在证明他的 我们必能知道 的断言.人类历史上,一个个科学难题在不断被解决,难道不是在印证着NP等于P吗?笔者对此的质疑逻辑是:如前所述,所有科研难题的解决途径是NP,因而NP是否等于P这一难题的解决途径无疑也属NP.鉴于这是科学难题,许多科学家判断,该问题人类长时期很难解决,例如上述ACM的期刊主编就是这样判断的,因而有理由认为该问题属于NP难,并且其解决过程所包含的参量也就是n不可能很小.这意味着任何宣称证明了NP不等于P的人,其实是在用自己证明的结论,去否决自己证明的可能性和正确性,也就是说,是在循环否定.4围棋软件开发与NP完全问题曾有人提议,若能开发一个围棋软件,能打败所有围棋高手,也就是说其思路已达到最优,那不就一切都证明了吗?此提议非常好,但要做好还有诸多困难,而且就算做好了,也不意味NP问题的解决.下围棋属敌对搜索,是极大极小搜索加剪枝问题中的一种.问题在于,它的分支数非常大,也就是可选的点很多,因而计算深度就只能很浅了,否则计算量和储存量都会大得惊人.不仅如此,它的状态值量化非常困难,从而在进行优劣选择以及剪枝时,非常难以把握.因此,迄今最好的围棋软件只能达到业余二段的水平,与专业高段棋手比当然是相差甚远.人下围棋能达到专业强九段的水平,不妨假定此水平极高.由此就产生了如下问题:(1)围棋是NP吗?(2)围棋是NPC吗?(3)此问题能在多项式内解决吗?注意到强九段,显然,不能认为强九段的思维能力和记忆能力能满足指数型.不妨设想人类能出现这样顶级的围棋高手,他下棋就能达到最优,也就是说能在多项式时间内完成判断计算.这就意味着,一个明显的指数型搜索问题,有人却可在多项式内完成.这是如何办到的呢?回答只能是:在充分研究后,加上充分的知识积累以及复杂的关联信息的充分把握.从逻辑上可以判断,人能做到的,软件也应能做到,且不会增加计算量和储存量.对这个问题的分析,可以得到解决NP完全问题的某些启发.此外,近年来一些论文提到的一些研究技巧,亦对NP问题的研究有所助益[8-10].针对Hamilton环这一NP完全问题的多项式时间算法的研究尝试也一直在进行[11].多年来,笔者也坚持进行该问题的研究,已经有相当乐观的结果.5个体和群体及概率与NP完全问题同样,从启发思维的角度,如前所述,至今已发现了4000多个NP完全问题,且还会继续发现.由于任何一个NP完全问题,都可以多项式规约到另一个任意的NP完全问题,也就是说,所有NP 完全问题两两之间的距离是多项式,这件事实本身强烈地昭示着(strongly imply),NP问题具有统一的求解规律和难解度,并且也应具有多项式量级.客观世界的任何一个群体,其任意个体之间某个属性的差值,与个体属性的绝对值通常都处在同一个量级.举例说来:通常成人的体重是百斤量级,很肥壮和很瘦的人之间体重的差值也是百斤量级.同样,很肥大的蚂蚁与很瘦小的蚂蚁体重之差值也与通常单个成年蚂蚁的体重处在同一个数量级.再举一个例子:假使在某个太空中随机选n个点,n显著大于1,若其中任两个点之间的距离都不超过1010米,就有理由认为,该太空本身的最大尺76第10期度也在1010米量级.不难看出,这些问题之间具有相同的内在逻辑,从而也给人们在NP完全问题的认识上以启发. 6结语NP完全问题的相关概念十分的抽象,难以把握,无论学生或研究人员,常有相关问题的概念错误或理解模糊,本文用通俗的语言揭示了这些概念的本质.在NP完全问题的研究中,最为关键的是正确的研究方向,若是研究方向为并不成立的谬误所误导,则不仅会导致多走弯路,甚至可能是完全做无用功.其中一个最大的谬误就是,认为NP当然的不等于P.这就意味着所有NP完全问题不可能有多项式时间算法,因此从根本上限制了这方面的研究.许多学者包括一些专家都将其作为限制框框.这仅仅只是一些研究人员的一种个人倾向,而绝不是定论.有理由认为其有可能甚至极可能是错的.还有一种倾向就是将P vs.NP问题过分神秘化,要么宣称该问题不能在人类已有知识框架内解决,要么宣称今后很长时期人类不可能解决.所有这些宣称并无切实的依据.本文详细论述了NP完全问题的实质,并从多个角度,用启发式思维方式,分析了其时间复杂度及其特性,以及可行的研究前景和研究方向.可供相关领域的学者参考.致谢感谢湖北省自然科学基金对本研究的支持!参考文献:[1]ARORA S,BARAK plexity Theory:A Mod-ern Approach Cambridge University Press[M].Cam-bridge,2009[2]AARONSON S.Is P versus NP formally independent[J].Bulletin of the European Association for Theoreti-cal Computer Science,2003,81(10):109-136.[3]杜丁柱,葛可一,王洁.计算复杂性导引[M].北京:高等教育出版社,2002:35-57.DU ing-zhu,Ge Keyi,Wang Jie.Introduction to Com-puting Complexity[M].Peking:High Education Press,2002:35-57.(in Chinese)[4]SARTAJ Sahni,Data Structures,Algorithms,and Appli-cations in C++[M].McGraw-Hill,1998. [5]COOK S A.The complexity of theorem proving proce-dures[M].Proceedings of Third Annual ACM Sympo-sium,New York:on Theory of Computing,Associationfor Computing Machinery,1971:151-158. [6]KARP R M.Reducibility among combinatorial problems[M].Miller R E,Thatcher J W Plenum Press,Com-plexity of Computer Computations,New York:1972:85-104.[7]LANCE Fortnow.The Status of the P Versus NP Prob-lem[J].Communications of the ACM,2010,52(9):78-86.[8]朱丽君,陈金芳.大数据下中文期刊论文被引分析[J].武汉工程大学学报,2015,37(5):74-78.ZHU Li-jun,CHEN Jin-fang.Citation analysis on Chi-nese Periodicals Under big data[J].Journal of WuhanInstitute of Technology,2015,37(5):74-78.(in Chi-nese)[9]付敏,戴祖旭,王道蓬.压缩编码的上下文树构造算法[J].武汉工程大学学报,2015,37(4):51-55.Fu Min,Dai Zuxue,WANG Dao-peng.Context tree al-gorithm based on compression encoding[J].Journal ofWuhan Institute of Technology,2015,37(4):51-55.(inChinese)[10]殷秀叶.大数据环境下的相似重复记录检测方法[J].武汉工程大学学报,2014,36(9):66-69.YIN Xiu ye.Method for detecting approximately dupli-cate database records in big data environment[J].Journal of Wuhan Institute of Technology,2014(9):66-69.(in Chinese)[11]POSA L.Hamiltonian circuits in random graphs[J].Discrete Math,1976(14):359-364.杜立智,等:NP完全问题研究及前景剖析7778武汉工程大学学报第37卷NP-complete problem and its futureDU Li-zhi,CHEN He-ping,FU Hai-dOngCollege of Computer Science and Technology,Wuhan University of Science and Technology,Wuhan430065,ChinaAbstract:P versus NP is one of the most important problems in theoretical computer science.Because the concepts about it are very abstract and complicated,some scholars and students in computer science often misunderstand them.A lot of published papers contain these misunderstandings.The main problems are:the defaults in understanding the concepts of NP and NPC,unclearly understanding the concepts of deterministic turing machine and non-deterministic turing machine,misreading the relationship of P and NP and mislead-ing in the study direction of NP,etc.Of all these concepts,the core concept is the NP-complete problem.In this paper,we analyzed the misunderstandings.By deeply studying the definitions,we revealed their essence. Specially,by analyzing a lot of questions in different fields,we gave some heuristic strain of thoughts for the possible ways to solve the NP-complete problem and the possible directions to study it.Keywords:deterministic turing machine;nondeterministic turing machine;NP-complete problem本文编辑:陈小平NP完全问题研究及前景剖析作者:杜立智, 陈和平, 符海东, DU Li-zhi, CHEN He-ping, FU Hai-dong作者单位:武汉科技大学计算机科学与技术学院,湖北 武汉,430065刊名:武汉工程大学学报英文刊名:Journal of Wuhan Institute of Technology年,卷(期):2015,37(10)引用本文格式:杜立智.陈和平.符海东.DU Li-zhi.CHEN He-ping.FU Hai-dong NP完全问题研究及前景剖析[期刊论文]-武汉工程大学学报 2015(10)。