图灵机和NP难度问题

这学期选了NP难度这门课,挺感兴趣。但是在和同学讨论问题的时候,发现大家对NP难度的认识非常模糊,什么是P!=NP?什么是NP完全?什么是NP难度?都有自己的一套说法。于是自己去查阅了一些资料,可能存在理解不正确的地方,但尽量要把这些问题讲清楚。

关于NP方面的知识涉及到很多哲学和数学的内容,有非常多的定理,很难理解,这里只介绍一些基本概念。下面就从最最基本的图灵机开始说起。

1 图灵机

图灵机是计算机的数学模型,从可计算性的角度讲,图灵机是世上一切计算机中功能最强的。图灵机只存在于思维中,指的是一类机器,而不是具体的一台机器。可以将其想象成在物质上由一条被划分为空白方格的左右无穷的条带和一根指针,还包括了一张字母表、一张内部状态表和一张满足协调条件的操作表。字母表由有穷个字母构成,内部状态表包含了图灵机有限个内部状态,操作表定义了图灵机的行为。

在初始时刻,条带上的有穷个方格分别被写上了字母,其余空格都是空白,指针指向最左非空白方格处,并给机器一个初始状态,往后图灵机的行为动作完全靠操作表来指挥。我们将图灵机内部状态、指针位置一起称为格局,操作表其实就是一个映射,将图灵机当前的格局映射到下一个格局(指针原地不动或向左右移动一格,状态发生变迁),所谓协调条件就是指操作表不存在模棱两可的情况,这和数学中函数的定义是一致的。

因此我们可以发现,对于一台图灵机,只要初始的格局是一样的,往后的发展是完全确定的,如果遇到没有在操作表中定义映射的格局就停机,输出当前所指条带上的结果,也可能进入死循环永远不会停机。目前世界上所有的计算机都仍然属于图灵机的范畴,这也是计算机只能生成伪随机数的原因。

通常称上面所说的图灵机是确定型图灵机,既然有确定型图灵机,人们就又想出来了非确定性图灵机。非确定性图灵机与确定性图灵机的区别是去掉了协调条件,就是说给定一个内部状态和外部状态,操作表中可以有多个映射记录,因此前一个格局没有唯一确定下一个格局。确定型图灵机是非确定型图灵机的特殊情况。

图灵机停机问题:是否存在如此强大功能的图灵机G,对任意给定的图灵机P和P的输入x可以判定P进行计算是否永不停机。

2 多项式时间

在研究算法时,经常使用大O符号表示算法的时间复杂度。多项式时间算法指的是算法在最坏的情况下的运行时间是O(n^k),其中k为某个常数,n为输入的规模。一个重要的问题就是是否所有的问题都能在多项式时间内解决呢?答案是否定的。上文提到的图灵机停机问题,计算机不论耗费多少时间都不能解决;还有一类情况是虽然存在解决的方法,但是不存在一个常数k,使得问题能在O(n^k)的时间内得到解答。

3 NP、P、NP-complete、co-NP和NP-hard

图1 NP、P和NP-complete

NP是所有判定问题的集合,所谓判定问题就是回答yes或者no,如果可以给出可供证明的证据就回答yes,不能找出可供证明的证据就回答no,这里的证据必须可以用确定型图灵机在多项式时间进行验证。

比如{-1,1,2}集合是否存在子集的合为0的问题,因为子集{-1,1}的合是0所以回答是yes,并且验证-1+1=0可以在多项式时间内完成,所以这个问题是NP问题。由此可以看到NP问题并不一定很难,NP只是一类问题的集合。

NP还有另外一种形式的定义:NP是所有决策问题的集合,问题可以用非确定型图灵机在多项式时间内解决。请注意这里解决和验证的区别,对“{-1,0,1}集合是否存在子集合为0”的回答是解决,而对于{-1,1}这一具体子集的证明是验证。

P的定义是:问题可以用确定型图灵机在多项式时间内解决。因为确定型图灵机是非确定型图灵机的特例,所以根据NP的第二种定义,P是NP的子集。但是P是不是NP的真子集呢?即P!=NP吗?证明P=NP就等于证明了所有的NP问题都能用确定型图灵机在多项式时间内解决。目前研究人员比较相信P是NP的真子集,但是还没有严格的证明。

研究人员将NP问题中最难的一类问题称为NP完全问题,到目前为止,这类问题都没有找到能在确定型图灵机下多项式时间内解决的算法,也没有谁能证明这种算法不存在。如果有人能发现这类问题的解决办法,那么NP中每一个问题就都可以在多项式时间内解决,即P=NP。

co-NP是和NP紧密相关的问题集合,NP类问题对于no的回答并不要求找到一个易于验证的证据,当一类问题能够为no的回答找到易于验证的证据,就称为co-NP问题;还有一种解释,当且仅当^L属于NP时,L属于co-NP。NP=co-NP目前仍是个悬而未决的问题,即对于任何NP问题,对于no回答是否存在易于验证的证据,或者说如果问题L属于NP,是否一定^L属于NP。NP和co-NP有点像数学里“存在”和“所有”。

图2 NP-hard和NP、NP-complete

NP难度问题指的是至少和NP完全问题一样难的问题,那么NP完全问题就一定是NP难度问题了,实际上NP完全问题是NP难度问题的真子集,现实中有很多问题不属于NP问题,但人们用NP完全问题来作为评价问题难度的标准。

4 一点思考

我们前面提到只要给定一个初始格局,确定型图灵机的运行轨迹就是固定的,那么假如真的P=NP,会得到一个什么样的结论呢?好吧,既然一切问题都可以用图灵机解决,那么这个宇宙就是一个有着固定运行轨迹的宇宙,我们过去的状态决定了我们此刻的状态,而我们此刻的状态也就决定了我们未来的状态。在这种假设下,其实10年以后的你是什么样子今天就已经决定了,这就有点像决定论了。实际上我觉得决定论还是有道理的,但是决定论可能导致消极的思想,既然一切冥冥中自有天意,现在的一切努力也是白费力气罢了!但是努力是成功的必要条件,我们所处的环境决定了我们今天会不会努力,因此天意在冥冥中安排你今天开始努力,将来才会收获成功!

参考文献

[1] 黄文奇,许如初。近世计算理论导引——NP难度问题的背景、前景极其求解算法研究。科学出版社。

[2] Thomas H. Cormen等。算法导论。机械工业出版社。

[3] 维基百科

posted on 2011-11-19 19:57  OpenNaive  阅读(682)  评论(0编辑  收藏  举报

导航