课程名:形式语言与自动机
作者:Lupinus_Linn
许可证:CC-BY-NC-SA 3.0 创作共用-署名-非商业性-相同方式共享
- 署名(英语:Attribution,BY):您(用户)可以复制、发行、展览、表演、放映、广播或通过信息网络传播本作品;您必须按照作者或者许可人指定的方式对作品进行署名。
- 非商业性使用(英语:Noncommercial,NC):您可以自由复制、散布、展示及演出本作品;您不得为商业目的而使用本作品。
- 相同方式共享(英语:Sharealike,SA):您可以自由复制、散布、展示及演出本作品;若您改变、转变或更改本作品,仅在遵守与本作品相同的许可条款下,您才能散布由本作品产生的派生作品。(参见copyleft。)
引用:
- 本文中部分文字与图片引用自北京邮电大学计算机学院王柏教授的《形式语言与自动机》课程课件。
- 绪论中的证明方法部分引自清华大学王生原老师课件。
- 部分题目插图引用自北京邮电大学出版社《形式语言与自动机 第二版》教材。
在此一并表示感谢,并不做商业用途。
本笔记所有内容的传送门
Part.1绪论, Part.2 语言与文法
Part 3.有限自动机
Part.4 正则语言,2DFA,Mealy&Moore机
Part.5 上下文无关语言与下推自动机(PDA)
Part.6 图灵机
Part.6 图灵机
6.1 基础
- 性质:
- 每个过程都是有穷可描述的。
- 过程是离散可执行的。
- 基本模型:
- 一个读写头配一个右端无限的纸带。读写头有状态,这些状态属于有限状态集.有一个开始状态,被接受的状态集合是.
- 纸带有单元格(cell),单元格上书写带符(tape symbol),这些带符属于有限带符号集.有一个特殊带符空白符.
- 读写头每次从纸带读取一个符号,这些符号属于有限输入符号集.输入符号的种类可能比纸带的符号种类少(),最起码空白符在纸带上而不在输入符号集里()。
- 图灵机可以根据状态和输入字符向左向右移动,并且在纸带上写字,这全由转移函数决定。其含义是
- 由于图灵机是上下文有关的,所以其格局为,描述图灵机(Turning Machine, TM)的瞬间工作终态。是从左端到右端空白符号为止的内容。(因为右端无限长)。
表示读写头正在扫描的最左字符。
表示读写头正在扫描空白字符。
当读写头在最左边还要求向左时,拒绝移动,仍然停留在最左端。 - 图灵机是状态接受的。起初有一个字符串在纸带上,读写头指向最左单元,其实状态是,只要能在工作过程中进入某个接受状态,则立即停机,认为接受。
- 无法判断图灵机在接受某个串后是否停机,因为很容易可以写出死循环。停机问题是不可判定的。被接受的字符串一定会停机,不被接受的就不知道了。
6.2 图灵机设计实例
6.2.1
- 思路:一一配对,从最左的a开始,每读取一个a置为无关字符x,然后到b串里读取最左一个b,再把b置为,在找最左的a,循环往复。凡是在配对中找不到另一个字符的,说明或者,就立即停机,不接受。
6.2.2
- 同理,消除一个0就把1和2置为无用字符。
6.2.3 整数函数计算
- 思路:转化为1进制,即把整数表示成(个0)。
- 如果一个函数有自变量,则开始时把整数挨个放置,并且中间用隔开:.
- 如果图灵机停止(不论状态是否接受),则带上的结果为的计算结果。
- 所有常用的整数算数函数都是全递归。
6.2.4 真减法:
- 思路:用作为带子,每读一个最左端的0就置为B,把最左端的0置为1(不能置空,因为在11100B中,如果变成了BBBBB,就不知道是否用完了0)。让再回去找的0.如果有在找0遇到B,说明 ,则将所有非B的符号全部换成0,这些0有个。