NP=NP? 从计算到智能的终极问题

你是一,也是万! 是刹那,也是永恒!

I’m the Alpha and the Omega,the First and the Last,the Beginning and the End.

 –新约.创世纪

二零XX年, 历史揭开了新的篇章,  计算宇宙中的第一个人诞生了,  这是一个新的纪元. 史称人工智能元年。

如果要写本小说,  我大概会以这样的句子作为开场。人工智能开始火热以来,大众能够接触和理解的文章里各种荒谬和误导太多。而领域内的学者们又忙于写论文。学者精英和公众之间出现了鸿沟。要想通过传播知识在这个鸿沟之上架起桥梁,科普文章是一种方式。而传播学告诉我们, 其实公众更喜欢故事, 如果有一本像样的科幻小说, 可能比多少篇科普文章更有效。所以写本关于人工智能的小说, 是我埋藏很久的一个愿望。  但是个人能力时间所限, 这本小说还得等很久, 或许会胎死腹中。 大部头之外,一些片段思想可以单独谈谈, 今天就来说说有关计算和智能的基本问题。

不知道读者里有多少码农? 学计算机的人,都学过关于计算的一般理论。 知道我们把所有计算机要解决的问题,也就是可计算的问题分为大致两类, 一类是所谓多项式问题P问题, 一类是非多项式问题NP问题。

多项式问题最简单的是0阶,或者1阶线性N, 如果复杂度是2阶的N平方关系,问题规模一大就玩不转了。一阶二阶之间还有个NlogN, 大概是计算机能够愉快玩耍的边界。 因为0阶,一阶过于简单,二阶又有点复杂, 我们观察到的大部分算法和技巧, 都是试图把一个问题搞成NlogN。

而非多项式问题NP问题又有NP,NP hard和NP complete之分, 这两个概念经常会被人误解,一个直观的理解 NP complete问题比NP hard问题更难就是错误的。 正确的理解,首先要知道什么是可计算的问题。

所谓可计算的问题, 就是假设我们找到一个解, 这个解到底对不对, 是可以在P这个量级的计算上判断的, 如果连这一步都做不到, 那干脆什么都做不了。 可以在P计算上判别的问题, 如果问题的求解还找不到一个P算法。 那就是一个NP问题。 而NP complete问题, 就是NP里面最难的一类, 这一类问题是等价的,如果解掉其中一个, 说明所有的NP问题都可以解掉。而NP hard问题不光包括P计算判别的有一类, 甚至可以包括不能在P计算上判别的问题, 这类问题目前根本无从下手。

拿围棋来举个例子。下围棋是很难的,想算出下一步该怎么下,非常非常困难,尤其是一开始布局的时候。 而越到后来,越接近终局,越简单。收官的阶段,计算机早就胜过人了( 因为人容易出错, 计算机不会出错) 到最后 一盘棋下完了,判断输赢是很简单的,谁都会数子。所以下围棋是个典型的NP问题 ,也许还是NP complete的(没查过)。

自NP问题的定义提出以来,无数计算机科学家和数学就试图在证明NP=P。意思是这些看上去很难的问题, NP问题, 实际上没有那么难, 有P多项式的级别的精妙算法。 如果有这样的证明, 所有这些可计算的问题都能计算, 世界将是多么的完美。。。。和无聊啊。

本文站在哲学的高度, 驳斥了P=NP。 NP问题就是没有P解法,世界才如此的丰富多彩。 为什么?

还是从计算理论的核心思想谈起。 我们经常把人比做计算机。 计算机也被叫做电脑。 从计算的角度来看, 这样的类比其实正是抓住了问题的本质。 换一个角度, 我们知道人是很聪明的, 所谓聪明体现在那里,也就是智能是什么,很多人讲不清楚。 我在这里给聪明或者说智能给一个定义, 所谓真正的聪明或者智能就是能够建立数学模型。

我们知道大部分动物都是不会数数的,  单凭直觉, 乌鸦(最聪明的鸟类之一)大概能够数到4, 对乌鸦来说, 他们的世界是0,1,2,3,4,无穷。 而在发明数学之前,人也不是太会数数, 对不会数数的原始人来说,大概也是0,1,2,3,无穷, 比乌鸦还要笨一点。

而一旦发明了数字, 人学会了数数,就走上了与动物不同的不归路。 我们不光学会了数数, 还发明了加减乘除,也就是计算,我们称之为发明了数学。随后计算就变的越来越复杂,数学也就越来越复杂。 而通过物理, 计算和大自然联系了起来。所谓物理, 就是用数学公式来描述大自然的一般规律。  我们认为一个事情有没有理论,是不是掌握发现了其中的规律, 等同于这个事情能不能用数学公式来描述,能不能建立数学模型。 我们管能建立数学模型的,并且用模型能够对事实做出预测的叫做科学。

按照以上说法, 我们把这个世界分为两种, 可能用科学理论精确描述的世界。 不能用科学理论精确描述的世界。 对前一种, 我们非常擅长, 对后一种。。。 我们一直在试图把后一种转化为前一种。 就象大家一直在试图证明P=NP一样。

能够用数学描述的世界只占现实世界的很小一部分。数学理论发展到二十世纪下半段, 发现了所谓混沌现象。 所谓混沌,大概的意思是, 就算我们已经有了数学模型, 按道理就一切尽在掌握中。而实际上, 我们还是掌握不了, 因为混沌是一种非线性系统,其中非常微小的初始条件差别,会导致特别不一样的结果。 要预测未来, 只能一步一步算, 这种计算还要足够足够精确。 时间一久,其实算不过来,也就混沌了。

混沌现象出现,引发了对复杂系统的演化的研究。我们发现 大多数自然,生物,人类社会的现象,都可以归结为一个复杂系统。 所谓复杂系统, 是从系统的局部,或者某一个时刻,能够建立数学模型,但是模型是非线性的,一旦开始演化,整体的结果就不可以预期了。  混沌的世界远比能够数学建模精确描述的简单世界更大(简单是因为只有线性)。

前面把智能,定义为数学建模的能力, 而混沌理论告诉我们,即使建了模也没有多大用处。 那该怎么办? 在计算机出现之前, 大概有两条路。 一条路走上了玄学, 之前我们谈过的周期律就是这类东西。 一条路叫做概率统计。

还是拿围棋来举例说明。从全局来说, 整个围棋世界是有始有终的,从一个空盘开始落字, 到填满棋盘,围棋终将会分出胜负, 棋局就结束了。 理论来说, 围棋是有个最优的唯一下法的。 所谓上帝一局。 但是从计算复杂理论出发,因为只能算, P又不等于NP, 要想明确算出上帝一局,调动全部现有的计算资源也不够。计算能力限制了探索问题的边界, 我们其实没有办法找到这个能够证明是最优的上帝一局。 只有上帝知道。

假设一个智能棋手生活在围棋的世界, 唯一目的就是下棋。这个围棋的棋盘很大很大,当然比现有的围棋棋盘大很多。 而棋手只能看到眼前的一小块棋,看不到边界, 那他会怎么理解世界呢? 影响棋手的聪明程度一个关键是他的记忆能力。因为棋手们会通过总结下棋的历史来试图掌握规律,他能记住多大一段历史,大大影响了他下棋的策略。记忆能力强的,看到的棋局也大,会认为这个世界很复杂。 记忆能力小的,看到的棋局小,极端情况, 假设只能记住之前一步,那么策略可能就是往有空的地方走。根本够不上叫一个复杂系统,或者说没有智能。

而记忆能力比较强的棋手会有什么样的策咯? 我相信他早晚会发现自己处在一个复杂系统中,而且掌控不了全局。只能根据已知的历史和当前观察到的范围做出判断,把全部未知的东西, 当作随机。 这些随机的东西虽然捉摸不定,但是总体上还是有些规律, 于是棋手很可能会发明统计,并且用贝叶斯公式来计算棋局。 他的记忆越多,计算的越多,表现出来的行为模式也就越复杂。 于是就出现了智能。

因此智能的出现可以理解为有记忆和能计算。 智能的门槛是足够包容一个复杂系统。 在此前提下,计算能力越强, 记忆能力越强, 就更智能。对一个智能体来说,能够观察到的世界是有限的, 而世界本身就是一个复杂系统, 因此世界永远是捉摸不定的,随机的。 正是这种随机性, 才让世界如此丰富多彩。

不管你同不同意, 计算的出现,构成了一个新的宇宙。 足够复杂的计算可以被当作这个计算宇宙中的智能体 。计算宇宙中的生命, 叫做人工智能。 P不等于NP, 是这个计算宇宙成立的前提。

以上从哲学观点说明了P不等于NP,

等等, 本文的标题不是P=NP,而是NP=NP? 标题没有写错, 这里想说的是,站在哲学的角度, NP肯定不是P,这个不是问题。(期待学数学的童鞋来暴击)  我们需要搞清楚的,每个NP会不会有不一样?

比如围棋的世界和现实世界等价吗? 我们如果在计算的世界创造了人工智能, 他们的世界和现实世界是有所不同,还是完全一样? 人工智能还能够发明新的世界吗?

Wolfram的答案是, NP=NP,  他说他已经证明了。 我宁愿不同意, 实在不想丰富多彩的各种宇宙都终结于一条规则。

按照我们当下的知识, 我们存在的物理世界也是一个有边界的世界。 与围棋世界没有根本上的不同。 下出来的棋, 就不能收回去,时间只有一个方向。 有边界的棋局早晚会被填满, 而物理世界终将归于热寂。 除非:

NP 不等于NP

其实还有不属于NP的NP hard世界,那个世界完全不可理喻,我们不去玩儿。

谢谢观赏!

 

 

 

 

 

发表回复