图灵机中的读写头除了能在带子上读,还可以在带子上写,而且这个读写头还能向左或向右运动。图灵机的计算从初始状态q0开始。这时,读写头在最左的非空白符号上。输入带子的左边和右边是无限长的,除输入符号串之外,其他所有的方格都记以空白符号#。
图灵机的指令是形式为(ai,qj,qk,al,x)的五元组,其中,ai和al是字母表符号(可能相同),qj与qk是状态(也可能相同),x的值可为L(表示向左运动)或R(表示向右运动)。这个指令可解释如下:如果读写头扫描ai,控制器处于状态qj,则把符号ai换成符号al,把状态qj变为qk。当x的值等于R时,读写头向右移动一个方格;当x的值等于L时,读写头向左移动一个方格,被读的符号有时也可以是空白,这样,控制器就可以超出输入符号串的范围而到达带子的任何一个部分。
当图灵机到达的指令中不能再继续有五元组时,图灵机就停止。如果图灵机在最后状态停止,它就接收了输入符号串,如果图灵机停止在非最后状态,则输入符号串被拒绝。由于图灵机不一定要在空白符号停止,它就可能会把某一计算没完没了地进行下去而停不下来。如果对于某一给定的输入符号串,图灵机的计算永不停止,那么,就认为这个输入符号串被拒绝。
例如,输入符号串在字母表{a,b}上,图灵机可读写空白符号#,状态为q0、q1和q2,初始状态为q1,最后状态为q0或q2,指令①~⑥如下:
①(a,q0,q1,a,R)
②(a,q1,q2,b,L)
③(a,q2,q0,b,R)
④(a,q0,q0,b,R)
⑤(#,q1,q1,a,R)
⑥(#,q0,q2, #,R)
计算1:
当执行指令⑥后,没有什么指令可以再执行了,图灵机停止。由于状态是最后状态,输入符号串被接收。
计算2:
执行指令①之后,没有指令能够再执行,图灵机停止。由于不是最后状态,因此,输入符号串被拒绝。
计算3:
不断地执行指令⑤,控制器不断地用代替右边的空白符号#,因此,输入符号串被拒绝。
由上可以看出,图灵机在运算时,限制比有限自动机宽得多:有限自动机的读数头只能读,而图灵机的读写头既能读又能写;有限自动机只能向一个方向运动,而图灵机则既能向左运动,又能向右运动;在与4种类型的形式语法相对应的4种自动机中,有限自动机是限制最严的,图灵机是限制最宽的。因此,有限自动机只能识别文法上限制最严的有限状态语言,图灵机则能识别文法上限制最宽的0型语言。以有限自动机和图灵机为两个极端,在它们中间是后进先出自动机和线性有界自动机。