停机问题[1]
可判定性
检测一个特定的确定型有穷自动机是否接受一个事先给定的串,此问题可以表示为语言
问题“
只要证明
有了上述热身,我们来看下面这个语言:
当
INFO
这也说明了图灵可识别性的范围要比可判定性要广。书里还有一段关于对角线方法的讲解也很精彩。利用对角线方法可以证明语言是不可数的,而图灵机却是可数的。由于一台图灵机只能识别一个语言,故存在图灵机不可识别的语言。
停机问题
归约即将一个问题转化为另一个问题的过程。既然已经证明了
假设
INFO
其实这些证明的重点都在于处理无限循环。判定器需要能终止,但机器不能检测自身是否进入了无限循环,然而我们可以用一台图灵机来模拟(编码运行)其他状态规模更小的机器,当输入串结束时,通过查看被模拟的机器是否进入接受状态来决定自己是接受还是拒绝。这样我们只需要保证被模拟的机器能读完输入串,不会在中途进入无限循环,也就是“空转”却不读取输入的情况发生。对于正则文法,由于与NFA等价,而任意的NFA都可以转化成DFA,因此一定可以读到输入串的末尾处。对于PDA或图灵机,由于它们确实允许只进行栈操作(读写头操作)而不读取输入,所以没法保证。这也是上面正则文法的例子没有强调无限循环,而停机问题的例子中却没有直接让
也许有人会质疑这里”机器不能检测自身是否无限循环“的前提,实际当机器进入无限循环时,如果要检测这个情况我们需要添加上一些代码,一些不会因无限循环而无法执行的模块,从而改变了这台机器的范畴,现在要检测的机器已经不仅仅是原来的机器了,于是为了检测新的机器是否进入无限循环又需要添加新的代码,又扩大了机器的内涵……来自哥德尔的凝视……
罗素悖论[2]
用状态规模来表述上面“无限循环”的动态过程,机器正不断地试图往自己的纸带(存储单元)中添加一个能够表示当下自己的编码,而一旦添加了这个编码,机器的范畴就发生了改变需要扩充编码来容纳这个崭新的自己,这个过程是机器无限趋近自包含的过程。可以想见,最终纸带的长度将趋于无限。
集合论中存在一个危险的概括性公理,断言每一个性质都对应一个集合:对任意的对象
对于可判定性问题来说,“包含自身”对应的就是一台图灵机能模拟并判定自己。令性质
这里概括公理的问题在于太过宽泛,从而允许了
INFO
分类公理:设
用图灵机判定问题类比,“