图灵机Turing Machine
1936年,Alan Turing提出一种抽象计算模型——Turing Machine,基本思想是用机器模拟人们用纸笔进行数学运算的过程,但比数值计算更为简单。
1. 图灵机Turing Machine基本概念
- 在纸上 写上 或 擦除 某个 符号 ;
- 把 注意力 从纸的一个位置转向另一个位置;
- 在每个阶段,要决定下一步动作依赖于:
(a)此人当前所关注的纸上某个位置的符号和
(b)此人当前思维的状态。
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多了,进入拒绝状态,停机