理论计算机初步:P vs NP - 问题概述

P = NP?

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

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

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

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

P指确定型图灵机上的具有多项式算法的问题集合,NP指非确定型图灵机上具有多项式算法的问题集合,这里N是Non-Deterministic的意思(图灵机的概念见理论计算机初步:算法和计算模型)。

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

零子集和问题

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

旅行商问题

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

从上面的定义知道,NP包含P。P vs NP问题指P是否完全等于NP,即确定型图灵机和非确定图灵机的性能是否一样。

人们为何要提出NP问题?因为,大多数遇到的自然的难解问题,最后都发现它们是NP问题。如果我们能证明NP跟P的关系,则解决了无数问题的算法复杂度问题。

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

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

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

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

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

参阅

备注:中国大陆可以通过http://browseatwork1.com 访问wikipedia.

  • 理论计算机初步:P vs NP - 历史,现状和未来 上篇文章已经提到,P vs NP是理论计算机科学的核心问题。从数学的角度来说,它和其他历史上有名的数学问题一样,给与人们一个智力上重大的挑战。...
  • What if P = NP? Princeton的Sanjeev Arora和Boaz Barak最近写了一本计算复杂性方面的书:Complexity Theory: A Modern Approach,其初稿提供下载,并承诺出版后也会继续保留——要是...
  • TCS:NP-hard 好久没有写我的理论计算机初步系列了,其实复杂性这一块,虽然平时经常遇到,但由于问题都过于本质和困难,想这方面问题的时间反而不多。Ko教...
  • 时间机器上的计算 - Quantum Computing Since Democritus 19th 来源:Scott Aaronson的Quantum Computing Since Democritus的第19次课程。Aaronson是MIT的年青教授,也是理论计算机届的Terry Tao。美国大学课程的开放性和创造性由...
  • 理论计算机初步:前言 这段时间Blog的更新频率大大降低,因为发现没啥好写的,也没有写文章的欲望。前段时间提到了我加入中国赛客联盟,而且给的说明语是"算机|数学|算...
  • 正当志愿填报时-复旦大三本科生解决世界级几何猜想? 最近很热的一条新闻,关键词:复旦大学,大三本科生,世界级猜想,内地数学家已经阔别了整整十八年的最高级别的会议…   论文信息: Minimum...
  • 理论计算机初步:概率算法和近似算法 前面已经提到了显示中大多数难解问题问题最后都被证明是NP-完全问题。这意味着,除非NP=P,它们是不可能有多项式时间算法的(而且,在这篇文章提...
  • 理论计算机初步:从hash函数到王小云的MD5破解 密码学是理论计算机的一个很大的方向。之前准备先写密码学概论再提在hash函数破解上做出重大贡献的王小云教授的工作,不过前两天王小云获得求是...
  • 测不准原理还是不确定性原理 - 谈量子物理史话一 我前方是一个美丽的背影。 此刻,在我观测之前,她是50%的MV,50%的KL。是两者量子态的迭加。 我摒住呼吸,轻轻的踏上一步,头微微一扭--- ...
9条留言 -> 跳到留言表格
  • At 2006.08.24 00:38, 不懂TCS said:

    目前的最好结果是什么?有给出P和NP集合的关系的工作么.

    • At 2006.08.24 13:11, zig said:

      P \in NP...

      • At 2006.08.24 16:54, YuJian said:

        这个非常明显,几乎不需要证明。不过,这些文章写得不错,我很有兴趣和你交换链接:http://algo.byethost14.com

        • At 2006.12.10 13:24, Liong said:

          有兴趣,交换链接:
          http://windherd.spaces.live.com/

          • At 2007.02.08 12:55, http://zhendpan.spaces.live.com/ said:

            我觉得排序问题的输入是sum{i=1}{n}(log(x_{i}))。 因为n与输入同阶,所以有些人写成n.这是我的理解,请大家指正。

            • At 2008.03.15 00:06, ychael said:

              P in NP ma?

              • At 2010.08.09 16:12, P 不等于 NP……么? - Apple4.us said:

                [...] 简单的说,在这里 P 指的是「能够很快被解出的问题的集合」(这里「很快」的严格定义是所谓多项式时间内),NP 指的是「能够很快判定一个解是否正确的问题的集合」。P/NP 问题一般表述为 P 是否等于 NP,即「是不是一个问题只要能够很快判定一个解是否正确,它就能很快被解出」。关于这个问题的更详尽的解释,可以参看这篇文章。 [...]

                • At 2010.08.10 03:19, P 不等于 NP……么? « lei said:

                  [...] 简单的说,在这里 P 指的是「能够很快被解出的问题的集合」(这里「很快」的严格定义是所谓多项式时间内),NP 指的是「能够很快判定一个解是否正确的问题的集合」。P/NP 问题一般表述为 P 是否等于 NP,即「是不是一个问题只要能够很快判定一个解是否正确,它就能很快被解出」。关于这个问题的更详尽的解释,可以参看这篇文章。 [...]

                  • At 2010.08.12 16:48, Taobao said:

                    太牛了!专业就是专业!

                    (Required)
                    (Required, not published)

                      B | I | U | D | 添加链接 | 插入引用 | 插入代码 | 插入表情 | | + | ?
                    guest | 注册 | 管理 | English | 繁體 | https

                    阅微堂

                    zhiqiang's personal blog
                    Loading...
                    Loading...
                    Loading...