NP问题浅述

这个问题,作为理论计算机科学的核心问题,其声名早已经超越了这个领域。它是Clay研究所的七个百万美元大奖问题之一,在2006国际数学家大会上,它是某个1小时讲座主题

要说起PNP是什么东西,得先从算法的多项式时间复杂度谈起,注意,这里面的两个P都是指Polynomial

一个问题的规模指的是输入的总位数,比如一个n个数的排序问题,输入规模就是n。注意,在某些时候,输入规模是要值得注意的,比如判定一个数n是否是一个质数这个问题,它的输入规模并不是n,而是log(n),因为一个数n用大约log(n)位就能表示出来了,这也是为何枚举因子判定素数的算法并不是多项式时间算法的原因。

如果一个算法,它能在以输入规模为参变量的某个多项式的时间内给出答案,则称它为多项式时间算法。注意:这里的多项式时间是指算法运行的步数。一个算法是否是多项式算法,与计算模型的具体的物理实现没有关系,虽然大多数假想的计算模型不可能有任何物理的实现。

P指确定型图灵机上的具有多项式算法的问题集合,NP指非确定型图灵机上具有多项式算法的问题集合,这里NNon-Deterministic的意思

脱离图灵机的概念,就在普通的计算机上看,P问题是指能够在多项式时间求解的判定问题(判定问题指只需要回答是和不是的问题),而NP问题则是指那些其肯定解能够在给定正确信息下在多项式时间内验证的判定问题。比如,要判定一个数是合数,如果给我一个约数,我们就很快判定它就是合数。所以判定一个数是合数的问题属于NP。 下面是一些NP问题的例子:

零子集和问题

n个整数,判断是否可以从中找到若干个数,其和为0

旅行商问题

n个城市,一个推销员要从其中某一个城市出发,不重复地走遍所有的城市,再回到他出发的城市。问这个推销员的最短路程(是否小于指定的K)

从上面的定义知道,NP包含PP vs NP问题指P是否完全等于NP,即确定型图灵机和非确定图灵机的性能是否一样。人们为何要提出NP问题?因为,大多数遇到的自然的难解问题,最后都发现它们是NP问题。如果我们能证明NPP的关系,则解决了无数问题的算法复杂度问题。

NP里面有无数个不同的问题,我们是否要一个一个地判定它们是否属于P呢?P vs NP问题的美妙和简洁之处便在于在NP中,有一个子类,NP完全(NP Complete,简记为NPC)问题,指的是那些NP中最难的那些问题:所有其它的NP问题都可以归约到这些NP完全问题。也就是说,只要这些NP完全问题的某一个得到解决,无论是证明其存在多项式算法,还是不存在,都意味着P vs NP问题的解决。

而几乎所有NP里面无法确定是否属于P的问题最后都被证明为NP完全。正因为如此,多数理论计算机学家都猜测P≠NP。目前已知的NP完全问题数以千计,上面引用中的例子都是完全问题。

一个很自然的想法是如果NP≠P,则NP-P里面的问题都是完全问题。至少有两个自然的问题,一个是大数分解(给出一个数的质因数分解式),另一个是图同构问题(给出两个图,它们是否同构),它们既没有被证明是P的,也没有被证明是NP-完全。但是更惊人的是还有这个定理:

如果NP≠P,那么NP-P中存在非NP完全问题。

当然,这种问题具体是什么样子,是无法用直观的语言表示出来,它纯粹是一个数学上的构造性证明。

附:NP问题的历史

人们在七十年代开始对NP完全问题的研究主要是横向发展,也就是以许多不同的计算模型来分析难解问题的本质。这些新的计算模型包括了平行计算模型、概率计算模型、布尔线路、判断树、平均复杂性、交互证明系统以及程式长度复杂性等等。对这些新的计算模型的研究一方面使我们对难解问题有了更深一层的认识,一方面也产生了一些预想不到的应用。最显著的一个例子就是计算密码学的革命性突破:基于NP问题的公钥密码体系。另一个有名的例子是线性规划的多项式时间解的发现。

到了八十年代中,对NP完全问题的研究有了纵向的突破,在许多表面看来并不相关的计算模型之间发现了深刻的刻划关系。这些刻划关系不但解决了几个令人困扰多年的未解问题,同时也刺激了其它相关领域的发展。其中之一是对线路复杂性的研究发现了一些问题在某种有限制的线路模型中必有指数下界。这些结果使用了组合数学与概率方法等新的数学工具,并且解决了一个有名的有关多项式分层的未解问题。另一个更重大的结果是以概率可验证明对NP类的刻划。这个结果来自于对交互证明系统这个概念的扩展,并且使用了线性代数与编码理论等数学证明技巧。

但是,明显的,目前还没有一个看上去有希望的方向。

数学里最伟大的定理之一费马大定理,用了数学家纷纷发表了300多年时光。NP问题,作为理论计算机领域最困难的问题,40年时间似乎太短了。

对于NP是否等于P,大家看法不一。在2002年对于100个研究者的调查中,61人相信答案是否定的,9个相信答案是肯定的,22个不确定,而8个相信该问题可能和现在所接受的公理独立,所以不可能证明或证否。

在这份调查报告中,国际上著名的计算机学家对这个问题的看法。

Avi Wigderson:(美国普林斯顿高等研究院教授)我想这个项目还没有成熟,因为关于这个项目的相关知识我们了解的太少了。我唯一可以确定的事情就是,人类所有提出的问题中最重要和最有趣的问题之一,是越来越多的人和资源应该参与其中,才能得到更好的猜想结果。

姚期智:(清华大学教授)很难说何时能够解决这个问题。我的猜想还没有得到学术界的验证,结果很可能是P问题并不等于NP问题,我认为使用数学技术会非常完美的。

可能的结果

从实际应用来说,人们都希望NP=P,因为这意味着很多问题都能有有效的算法,但有些极为诡异的结果也是可能的,人们从这个结果中什么都得不到。

比如某一天人们最终使用某种数学上的技巧证明了NP问题的多项式时间算法的存在性,但并不知道如何找到它——这在数学上是极为可能的,那最终会怎么样呢?

这种情况不会发生,事实上,在NP=P的假设下,人们已经找到了NP完全问题的多项法解法,但这并没有好太多,如果NP=P,很多算法便是一个NP完全问题的多项式时间算法。可是它一点价值都没有,更不用说来解决实际问题了。

经典计算中存在着一大类NP 问题。这类问题在经典计算机上是不能计算的,但是量子计算可以把其中的一部分NP问题变成 P问题,即问题的复杂度随着比特位数的增长以多项式数量级上升。这类问题原则上是可以计算的。

一个具体的例子就是大因数分解,按经典计算复杂性理论,这个问题不存在有效算法。但是如果用量子计算机结合Shor量子算法,这个问题就变成了P问题。

现状

PNP是理论计算机科学的核心问题。从数学的角度来说,它和其他历史上有名的数学问题一样,给与人们一个智力上重大的挑战。而更为重要的是,在无数与计算有关的的学术领域中,NP完全问题以各种不同形式层出不穷。因此,这并不是一个纯粹的与世独立的智力游戏,而是对计算机科学有全面影响力的问题。

计算机与社会科学、自然科学和思维科学等许多学科相互渗透和交叉,形成了许多新的边缘学科和新学科群,正在改变许多传统学科。分子与量子计算机的深入研究和技术难关的攻克,并最终投入运算,必将在政治、经济、军事、文化乃至人类生活的各个方面产生深刻的影响。

最近美国南加州大学Adleman博士应用基于DNA分子计算技术的生物实验方法有效地求解了哈密顿路径问题”——目前计算机无法解决的NP完备问题。生物分子计算机的研制是基于生物分子的信息处理技术,即生物材料的信息处理功能与生物分子的计算技术。

能以叠加方式存贮信息的量子计算可生成一些真正的随机数,这是传统计算机无能为力的。数学上已证明量子计算可大大加快因式分解的速度。这一证据也吸引人们将注意力集中在根据量子力学原理制造量子计算机上。

计算能力超越图灵机、突破现有的体系结构是计算业界的梦想,不断有报道在DNA计算模型上找到了某NP问题的多项式算法,这应该意味着基于DNA计算模型的P类和NP类的划分会和经典模型有所不同。但是我们仍然希望量子计算能够突破图灵模式,给计算机科学带来一个崭新的世界。

哈密顿路径问题

天文学家哈密顿(William Rowan Hamilton) 提出,在图中找出一条包含所有结点的闭路,并且,出来起点和重点重合外,这条闭路所含结点是互不相同的,可以在多项式时间类判断一个回路是否是哈密顿回路,但目前没有算法直接解出哈密顿回路。

量子计算

量子计算(quantum computation)是对于一个或多个量子位元(qubit)或量子三元(qutrit)以上进行操作,以达到具有量子特性的演算功能。

算法的多项式时间复杂度

算法的时间复杂度是指算法需要消耗的时间资源。而算法的多项式时间复杂度是指时间开销能约束在nk阶多项式数量范围内。

 

你可能感兴趣的:(NP问题浅述)