课程名:形式语言与自动机
作者: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 3.有限自动机
-
- 3.1 五要素
- 3.2 一个DFA的定义
- 3.3 状态转移图
- 3.4 状态转移表
- 3.5 字符串转移函数 δ ′ \delta' δ′
- 3.6 DFA接受的语言
- 3.7 格局
- 3.8 有限自动机的设计
- 3.9 NFA的五要素
- 3.10 NFA的字符串转移函数 δ ′ \delta ' δ′
- 3.11 NFA接受的语言
- 3.12 NFA与DFA的等价性
- 3.13 子集构造法
- 3.14 ϵ − N F A \epsilon-NFA ϵ−NFA的五要素
- 3.15 ϵ − C L O S U R E \epsilon-CLOSURE ϵ−CLOSURE
- 3.16 ϵ − N F A \epsilon-NFA ϵ−NFA的字符串转移函数 δ ′ \delta' δ′
- 3.17 ϵ − N F A \epsilon-NFA ϵ−NFA与 N F A NFA NFA的等价性
- 3.18 ϵ − N F A \epsilon-NFA ϵ−NFA的消空
- 3.19 自动机的求补
Part 3.有限自动机
- 具有离散输入输出系统的一种数学模型 (可以没有输出,比较特殊的也可以没有输入).
- 有限的状态
- 状态+输入→状态转移
- 每次转换的后继状态都唯一 → DFA,每次转换的后继状态不唯一→NFA
3.1 五要素
- 有限状态集 Q Q Q
- 有限输入符号集 T T T
- 转移函数 δ : Q × T → Q \delta:Q×T \rarr Q δ:Q×T→Q:
- 一个开始状态 q 0 , q 0 ∈ Q q_0,q_0\in Q q0,q0∈Q
- 一个终态集合 F , F ⊆ Q F,F\subseteq Q F,F⊆Q
3.2 一个DFA的定义
- M = ( Q , T , δ , q 0 , F ) M= (Q, T, δ, q0 , F) M=(Q,T,δ,q0,F)
- Q = { q 0 , q 1 , q 2 , q 3 } Q = \{q0 , q1 , q2 , q3 \} Q={ q0,q1,q2,q3}
- T = { 0 , 1 } T = \{0, 1 \} T={ 0,1}
- δ ( q 0 , 0 ) = q 2 , δ ( q 0 , 1 ) = q 1 \delta(q0 ,0) = q2 , \delta(q0 ,1) = q1 δ(q0,0)=q2,δ(q0,1)=q1
δ ( q 1 , 0 ) = q 3 , δ ( q 1 , 1 ) = q 0 \delta(q1 ,0) = q3 , \delta(q1 ,1) = q0 δ(q1,0)=q3,δ(q1,1)=q0
δ ( q 2 , 0 ) = q 0 , δ ( q 2 , 1 ) = q 3 \delta(q2 ,0) = q0 , \delta(q2 ,1) = q3 δ(q2,0)=q0,δ(q2,1)=q3
δ ( q 3 , 0 ) = q 1 , δ ( q 3 , 1 ) = q 2 \delta(q3 ,0) = q1 , \delta(q3 ,1) = q2 δ(q3,0)=q1,δ(q3,1)=q2 - q 0 q0 q0
- F = { q 0 , q 3 } F = \{q0 , q3 \} F={ q0,q3}
3.3 状态转移图
3.4 状态转移表
3.5 字符串转移函数 δ ′ \delta' δ′
δ ′ : Q × T ∗ → Q \delta' :Q\times T^*\rarr Q δ′:Q×T∗→Q
对于任何 q ∈ Q q\in Q q∈Q,定义
- δ ′ ( q , ϵ ) = q \delta'(q,\epsilon)=q δ′(q,ϵ)=q。即空串转移到本状态。
- 如果 ω ∈ T ∗ , a ∈ T \omega \in T^*,a\in T ω∈T∗,a∈T,定义 δ ′ ( q , ω a ) = δ ( δ ′ ( q , ω ) , a ) \delta'(q,\omega a)=\delta(\delta'(q,\omega),a) δ′(q,ωa)=δ(δ′(q,ω),a)。即非空字符串 ω a ∣ \omega a| ωa∣可以看作是其前长度为 ∣ ω ∣ |\omega| ∣ω∣的前缀$\omega $和长度为 1 1 1的字符 a a a组成。
对于DFA,单个字符使用 δ \delta δ或者 δ ′ \delta' δ′进行转移的结果相同。
3.6 DFA接受的语言
被DFA接收的字符串: 输入结束后使DFA的状态到达终 止状态。否则该字符串不能被DFA接收.
DFA接收的语言: 被DFA接收的字符串的集合.