P-NP问题

2000年初美国克雷数学研究所的科学顾问委员会选定了七个“千年大奖问题”,克雷数学研究所的董事会决定建立七百万美元的大奖基金,每个“千年大奖问题”的解决都可获得百万美元的奖励。

“千禧难题”之一:P(多项式算法)问题对NP(非多项式算法)问题

在一个周六的晚上,你参加了一个盛大的晚会。由于感到局促不安,你想知道这一大厅中是否有你已经认识的人。你的主人向你提议说,你一定认识那位正在甜点盘附近角落的女士罗丝。不费一秒钟,你就能向那里扫视,并且发现你的主人是正确的。然而,如果没有这样的暗示,你就必须环顾整个大厅,一个个地审视每一个人,看是否有你认识的人。生成问题的一个解通常比验证一个给定的解时间花费要多得多。这是这种一般现象的一个例子。与此类似的是,如果某人告诉你,数13717421可以写成两个较小的数的乘积,你可能不知道是否应该相信他,但是如果他告诉你它可以因子分解为3607乘上3803,那么你就可以用一个袖珍计算器容易验证这是对的。不管我们编写程序是否灵巧,判定一个答案是可以很快利用内部知识来验证,还是没有这样的提示而需要花费大量时间来求解,被看作逻辑和计算机科学中最突出的问题之一。它是斯蒂文·考克于1971年陈述的。  

---------------------------------

P对NP问题是克雷数学研究所高额悬赏的七个千禧年难题之一,同时也是计算机科学领域的最大难题,关系到计算机完成一项任务的速度到底有多快。有些问题计算起来很容易,利用多项式算法很快能解决,比如求若干个数的乘积,这类问题被称作P问题;另一类问题计算过程比较繁琐,但验证答案却很容易,比如把整数44427进行因数分解,求解过程可能会很费时,但如果告诉你答案是177×251,简单计算即可验证答案是对的,这类问题就被归为NP问题。

    因此,如果P=NP,那么每个答案很容易得到验证的问题也同样可以轻松求解。这将对计算机安全构成巨大威胁,目前加密系统的破解就相当于要将一个整数分解为几个因数的乘积,正是其求解过程的繁琐,才能杜绝黑客的入侵。

    而现在,迪奥拉里卡围绕一个众所周知的NP问题进行论证,给出了P≠NP的答案。这就是布尔可满足性问题(Boolean Satisfiability Problem),即询问一组逻辑陈述是否能同时成立或者互相矛盾。迪奥拉里卡声称,他已经证明,任何程序都无法迅速解答这个问题,因此,它不是一个P问题。

    如果迪奥拉里卡的答案成立,说明P问题和NP问题是不同的两类问题,这也意味着计算机处理问题的能力有限,很多任务的复杂性从根本上来说也许是无法简化的。

    对于有些NP问题,包括因数分解,P≠NP的结果并没有明确表示它们是不能被快速解答的;但对于其子集NP完全问题,却注定了其无法很快得到解决。其中一个著名的例子就是旅行商问题(Travelling Salesman Problem),即寻找从一个城市到另一个城市的最短路线,答案非常容易验证,不过,如果P≠NP,就没有计算机程序可以迅速给出这个答案。

posted on 2011-01-06 13:51  前端风云志  阅读(373)  评论(0)    收藏  举报

导航

关注我

前端风云志