1936年,Alan Turing提出一种抽象计算模型——Turing Machine,基本思想是用机器模拟人们用纸笔进行数学运算的过程,但比数值计算更为简单。

1. 图灵机Turing Machine基本概念

  • 在纸上 写上擦除 某个 符号
  • 注意力 从纸的一个位置转向另一个位置;
  • 在每个阶段,要决定下一步动作依赖于:
    (a)此人当前所关注的纸上某个位置的符号和
    (b)此人当前思维的状态。
    图灵机Turing Machine

2. 图灵机Turing Machine基本定义

图灵机由以下几部分构成:

  • 一条无限长的分格纸带,每格可以记录一个符号。
  • 一个读写头,可在纸带上左右移动,能读出和擦写格子的字符。
  • 一个状态寄存器,记录有限状态中的一个状态。
  • 一系列有限的控制规则:
    1.某个状态,读入某个字符时:
    2.要改写成什么字符
    3.要如何移动读写头
    4.要变为什么状态

3. 图灵机Turing Machine例子

判定 {ambm | m>=0}:左半部分全是a,右半部分全是b,且ab数量相等的字符串。

  • 如:ab、aabb、aaaabbbb,进入“接受”状态;
  • 如:b、ba、abb,进入“拒绝”状态。

规则思路:读写头来回移动,将a和b一一对消,如果最后剩下空白B则接受,否则拒绝。

  • 初始状态s0是读写头停在第一个字符处。
  • s1状态是读写头正在右移。
  • s2状态是读写头到字符串最右边。
  • s3状态是读写头正在往回左移。

判定ambm 模式图灵机规则:
<s0, a, B, s1, R> :初始碰到a消去,s1,右移
<s1, a, a, s1, R> :消去一个a的状态,继续右移,找最后一个b
<s1, b, b, s1, R> :遇到b,继续右移
<s1, B, B, s2, L> :右移到尾,状态s2,回移
<s2, b, B, s3, L> :如果有b,消去,进入左移状态s3
<s3, b, b, s3, L> :左移遇到b,继续左移
<s3, a, a, s3, L> :左移遇到a,继续左移
<s3, B, B, s0, R> :左移到头回初始状态s0,右移检查下个字符
<s0, B, B, sY, N> :a,b都能一一消完,则进入接受状态,停机
<s0, b, b, sN, R> :b多了,或者b在a前,进入拒绝状态,停机
<s2, a, a, sN, R> :s2是末尾状态,如果碰到a,表示a多了,或者a在b后,进入拒绝状态,停机
<s2, B, B, sN, R> :s2是末尾状态,如果没碰到b,表示a多了,进入拒绝状态,停机

相关文章: