||
无论P & NP 问题或者确定性与非确定性问题都是及其难于讨论的问题,也不是本人的能力所能深入分析的,在这里只是针对柳渝老师相关的博文给出的回应。
在柳渝老师的博文《NP理论(5):不确定性问题(NP)研究中的层次与中国传统逻辑》中讨论了一些P & NP 问题,并将这些问题与确定性及非确定性的问题进行关联,除此之外,柳老师更着重于将这些讨论上升到认知逻辑范畴,尤其是中国春秋时代白马非马的论题。在这篇博文下面我提出了自己解读的困惑,针对我的评论,柳老师专门开出一个博文作为正式的回复,也因此我觉得需要将我所理解的这些论题的内容再加以详细讨论。
首先我所谈论的这些内容基本都是教科书或者相关文章中的摘取片段,我并没有贡献新的思想,鉴于仅仅是博文,不一一指出引用的相关文章。
P&NP问题属于可计算理论方面非常重要的问题,甚至可以说是这个领域中仅有的几颗皇冠上的明珠。这个问题属于计算机科学和计算数学领域,也是数论领域的问题。
我们世界中,很多问题是能够通过设计具体的算法来解决的,这些算法与问题的规模相关。比如解一元二次方程,我们有直接的公式进行计算,无论解是什么,我们都能在相对恒定的时间得到计算结果,这个问题就是常数类型的问题,但是再比如排序问题,10个数与10万个数排序消耗的时间就跟数的规模相关,并且我们也知道不同的算法给出的优化水平相差是很大,这种算法与问题的规模相关的指标是可以进行比较的,我们将这种指标定义成复杂度。当然我这里不准备详细讨论复杂度问题,只是指出来所谓的P问题与NP 问题是与算法的复杂度相关的,并且还需要指出的,算法与计算机体系相关,当前讨论算法复杂度一律基于诺依曼体制,这是算法彼此可比较的大前提,如果我们面对量子计算机或者其它比如号称超越诺依曼体制的透明计算之流,那就不是目前所考虑的范围。
诺依曼的体制中,计算能力是受到限制的,我们认定一个问题随着规模的扩大,能够获得解决的前提就是提供的算法所消耗的空间与时间,或者与常数相关或者是呈现与问题规模的多项式增长相关,这两种情况都是属于多项式复杂度的算法。
所谓的P问题就是指能够在多项式复杂度算法中得到解决的问题,在计算机行当里,称这类问题为简单问题;需要注意的是,所谓NP问题并不是指不能用多项式复杂度算法解决的问题,它的其中一个定义是能够用多项式复杂度的算法验证问题结果的问题,所以能够知道P问题首先一定是NP问题,因为P算法本身就是对结果的验证,所以这两者不是对立关系,而是P属于NP。但是NP问题是否存在多项式复杂度算法来解题则是不确定的,我们不知道是否存在这样的算法,但是往往地已经找到的算法都是非多项式的,比如指数型或者阶乘型复杂度,这类的算法计算机只能限制在很小的规模下获得结果,因为随着问题规模扩大,资源将急速耗尽,因此我们认为这类问题当前提供的算法是不可计算的,超出了计算机的能力,也是属于难的问题。
P与NP的问题最大的猜想就是P是否能够等于NP,换句话来说,人们关心的是如果一个问题的结果能够用多项式复杂度的算法来验证,那么是否存在多项式算法来得出这个结果那?凭直觉人们就认为P<>NP,但是没人能够证明这一点。NP问题很著名的一个例子就是无向图的哈密顿回路查找问题,如果我们知道了一个回路,验证这个回路是哈密顿回路是一次方的复杂度,但是我们目前无法找到一个多项式复杂度的算法来发现这个回路。
NP问题中还有一类更奇妙的问题,已经证明了,所有的NP都能约化成一类特殊的NP问题,这类NP问题叫做NPC,或者NP完全问题。所谓约化,就是指一个问题可以通过多项式算法将这个问题转化为另一个问题。这样的情况下,意味着NPC问题是比普通的NP问题更复杂一点的问题,如果找到一个NPC的多项式复杂度算法,也就能够通过降阶的方式将这个算法改造成解决任意一个确定的NP问题的多项式复杂度算法。这个句子有点拗口,但是简单来说,就是意味着存在一个通用的万能算法,能够解决所有NP问题,这样只要找到一个NPC的多项式算法也就证明了P=NP。这个万能算法的存在性真的令人不可思议,也因此无论在直觉上还是在尚不完整的理论上,人们都倾向于认为P<>NP,也就是说,尽管P属于NP,但是NP中仍然有一些问题,不能用多项式复杂度来解决。但是这在目前为止仍然是个没有完成的证明。
NPC问题并不抽象,著名的寻找哈密顿回路就是这样的一个NPC问题,科学网杜立智博主贴出来一个算法,据说能够以多项式复杂度的情况下解决这个问题,如果确实得证,这是一个无论怎么高评都不过分的成果,因为这证明了P=NP,在计算机行当里,绝对属于图灵奖的成果。
当然还存在非P非NP的问题,还是那个哈密顿回路问题,假如问题换个问法:一个无向图中是否不存在哈密顿回路。验证这个问题其实就是寻找哈密顿回路的问题,这个问题就已经不是NP问题了。
此外还有一些有解但无算法的问题,比如问比如圆周率Pi的小数点后面是否有连续的100万个0,解决这个问题除了不断计算Pi,没有任何其它途径,但是这不是算法。
还有一类无解也无算法的问题,就是著名的停机问题,已经证明停机问题的算法不存在,这与P&NP问题一点关系都没有。
所以从上面的P&NP的描述中我们能够看到,所谓的P与确定性相关的无非是确定性地存在多项式复杂度的算法,使得问题具有可计算的能力,而NP与非确定的关联,并不是因为NP是非常困难的问题,毕竟P问题也在NP问题之中,而是其主要关注在一些特别的问题上,那些问题存在对结果多项式复杂度的验证算法,但是是否存在多项式复杂度的解决问题的算法是不确定的,是对算法存在与否的不确定性,与我们日常所理解的确定性与不确定性是完全无关的。柳老师的博文中将P与NP绝对对立,将物理数学领域里所谈论的确定性与不确定性与P&NP问题中的确定性与不确定性挂钩是不可以的,完全不是一样的涵义。其实在学校的课堂上,讲述这段理论的时候,授课老师就已经对中文翻译将P&NP与确定非确定关系挂钩表示无奈,特别强调这与通常意义所理解的字面含义不相关,需要加以区隔。
柳老师提出了观点:人们总是事先约定或隐含地约定了将不确定性问题转化为最优近似求解的问题。这种看法可能就是基于将通常意义上的不确定性混淆在NP问题上,其实NP问题基本上可以看做属于数论问题,是在整数意义上的操作,近似的结果可能与无结果是一样的,典型例子就是非对称秘钥RSA设计原理。RSA加密原理就是默认了P <> NP,一个大数分解成素数因子的算法相对于数的位数来说,目前是指数级别复杂度,但是验证素数属于大数的因子却是恒定的常数算法,不能说找到一个近似的素数就可以看做破解RSA密钥,要知道找到近似的结果其实也可以有常数级别的算法,但是要想破解密文,差一点都不可以。
认为柳老师存在误读的地方可以看前面博文中:“不确定性的消失和NP理论”一节,在那里,提到计算机强大的解决问题的能力给人们带来了一种观念上的错觉:(所有的)不确定性问题总是可以确定性地解决的,用术语来说,就是P=NP,或者称之为“NP完全性”(NP-completeness)。可以看出来这里面P/NP/NP-完全的定义与我所提到的完全不同,并且P=NP恰恰不为从事计算科学的人的直觉所认同。并且博文中还提到莫里斯·克莱因(Morris Kline)在“数学:确定性的丧失”一书中探讨了以确定性和精确性的内容为骄傲的数学发展过程中面临的自身的危机,伊利亚·普利高津(Llya Prigogine)的“确定性的终结——时间混沌与新自然法则”、费曼(RichardPhillips Feynman)的“科学的不确定性”等,恰恰在这里将物理学和数学意义上的确定性与非确定性与P &NP问题中的确定性与非确定性混淆在一起,这给绝大多数不了解计算科学领域的人很大的误解,可以从博文的讨论中看出来,基本都是围绕科学意义上的意涵来进行思考的,窃以为都走了岔路。
顺便提一嘴,如果杜博主有关哈密顿回路多项式算法成立,意味着RSA已经被破解了,无需等待量子计算机的时代到来。不仅仅是RSA被破解了,而且对称密钥DES类型的也被破解了,因为这两类算法目前都是属于NP类中没有多项式算法的类型,整个密钥体制也因此宣告终结。这是很可怕的情景,杜博主为了人类和平事业还是放弃图灵奖吧。
以上观点仅仅是自己一时的思考,可能在很多方面对柳老师的理论没有领悟,很感谢柳老师专门开出一个博文来回应我的疑问,这也是对两个博文的再讨论吧。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-21 23:40
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社