1.Turing Machine
确定性图灵机
图灵机有很多不同的定义,这里选取其中一种,其它定义下的图灵机往往与下面这种定义的图灵机计算能力等价。
图灵机是一个在一条可双向无限延伸且被划分为若干格子的纸带上进行操作的机器,其有内部状态,还有一个可以在纸带上进行修改与移动的磁针。
图灵机从初始状态与纸带起点起,每次根据当前的内部状态和当前磁针指向的纸带上的单元格中的字符进行操作:若转移函数没有定义则停机,否则根据转移函数将内部状态和磁针指向的格子中的字符进行修改,根据L/R决定向左移动一格或向右移动一格。
图灵机与冯·诺依曼计算机解决问题的时间复杂度差别在多项式级别内,所以研究复杂度类时可以使用图灵机作为计算模型。
非确定性图灵机
非确定型图灵机是图灵机的一种,它与确定型图灵机的不同在于:确定型图灵机的每一步只能转移到一个状态,而非确定型图灵机可以「同时」转移到多个状态,从而在多个「分支」并行计算,一旦这些「分支」中有一个在接受状态停机,则此非确定性图灵机接受这个输入。
事实上,任何确定型图灵机都可以用类似于迭代加深搜索的方式在指数级时间内模拟一台非确定型图灵机多项式时间内的行为。
在现实生活中,确定型图灵机相当于单核处理器,只支持串行处理;而非确定型图灵机相当于理想的多核处理器,支持无限大小的并行处理。
图灵可识别当且仅当可用非确定性图灵机识别
多带图灵机
标准的图灵机只能在一条纸带上进行操作,但为了方便,本文中研究多带图灵机。对于一个k带图灵机,其中一条纸带是只读的输入带,而剩下的k-1条纸带可以进行读写,并且这条纸带中还有一条纸带用作输出。
多带图灵机的纸带数必须是有限的。
对于一个多带图灵机,它使用的空间是磁头在除输入带外的其它纸带上所访问过的单元格数目。
丘奇 - 图灵论题
丘奇 - 图灵论题称,若一类问题有一个有效的方法解决,则这类问题可以被某个图灵机解决。
其中,「有效的方法」需要满足:
- 包含有限条清晰的指令;
- 当用其解决这类问题的其中一个时,这个方法需要在有限步骤内结束,且得到正确的答案。
这个论题没有被证明,但其是计算理论的一条基本公理。
2.可判定性和可归约性
语言与可判定
可计算性
不可计算问题
对于一个判定问题,若存在一个总是在有限步内停机且能够正确进行判定的图灵机,则这个问题是一个 图灵可计算 的问题,否则这个问题是一个 图灵不可计算 的问题。
由于图灵机可以被自然数编码,所以图灵机的个数是可数无穷,而语言(即二进制串的集合)的个数是不可数无穷,而每个图灵机最多判定一个语言,所以一定存在图灵不可计算的问题。
停机问题
停机问题是一个经典的图灵不可计算问题:给定 和 ,判定 在输入为 时是否会在有限步内停机。
证明:
可判定问题
不可判定问题