716 字
4 分钟
[形式语言与自动机] 图灵机
图灵机
定义是一个七元组:
- 是一个有限的状态集合
- 是一个有限的输入符号集合
- 是一个有限的带符号集合,且
- 是一个状态转移函数,定义为
- 是初始状态
- 是空白符号,且
- 是接受状态集合
图灵机有一条无穷长的纸带,上面一个格子能存一个字符,可以当做内存来用了
绘制图灵机
使用形如来表示一次状态转移,如果读头当前所在的格子为则读入,并写入符号,然后使读头向左移动一格
图灵机的三种运行结果
- 接受并停机:到达//Acc,则判断输入字符串被接受,图灵机停机
- 拒绝并停机:到达//Rej,则判断输入字符串被拒绝,图灵机停机
- 循环:永远运行,不到达任何停机状态,表示不接受输入字符串
技巧
同样可用自定义符号表示结构化信息
示例:解决问题
题里会告诉读头的初始位置,此题假设读头初始位置在最左边的第一个字符上
- 几种情况:
- 此处为,替换为,并向右移动,进入步骤2
- 此处为,说明所有的都已经被替换,进入步骤8
- 此处为或,判断输入字符串被拒绝,图灵机停机
- 此处为字符串边界或空白符,判断输入字符串被接受,图灵机停机
- 看到或就继续向右
- 直到:
- 遇到一个,将其替换为,并向右移动,进入步骤4
- 遇到一个,判断输入字符串被拒绝,图灵机停机
- 遇到字符串边界或空白符,判断输入字符串被拒绝,图灵机停机
- 看到或就继续向右
- 直到:
- 遇到一个,将其替换为,并向左移动,进入步骤6
- 遇到一个,判断输入字符串被拒绝,图灵机停机
- 遇到字符串边界或空白符,判断输入字符串被拒绝,图灵机停机
- 看到就继续向左
- 直到:
- 遇到一个,不修改,向右移动,进入步骤1
- 遇到字符串边界或空白符,说明所有的都已经被替换,进入步骤8
- 一直向右移动,直到:
- 若遇不到任何或而是到达字符串边界或空白符,则判断输入字符串被接受,图灵机停机
- 若遇到或,则判断输入字符串被拒绝,图灵机停机
[形式语言与自动机] 图灵机
https://alkaid114.github.io/posts/automata/tm/