课程名:形式语言与自动机
作者: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.4 正则语言
4.1 基本概念
- 正则语言:满足正则语言的判定定理的语言。
- 正则(表达)式:用类似代数表达式的方法表示正则语言。
- 正则式的相等:表示的语言相同。
- 正则集:满足正则式的字符串的集合。
- 正则式和语言的的联合运算+,连接运算•,正闭包 L + L^+ L+,星闭包 L ∗ L^* L∗及运算性质。
注1:正则集是T* 的子集。(即正则集是T*上的语言)
注2:L+包含ε当且仅当L包含ε。
注3:每个正则集至少对应一个正则式(可有无穷多 个正则式)
4.2 右线性文法↔正则表达式
两个等价
- 左线性文法和右线性文法等价。
- 右线性文法和正则式等价(右线性文法产生的语言都是正则语言,正则语言都可以用右线性文法产生)
从右线性文法导出正则式:设 x → α x + β , α ∈ T ∗ , x ∈ N , t h e n x = α ∗ β x\rarr \alpha x+\beta,\alpha \in T^*,x\in N,then\ x=\alpha^*\beta x→αx+β,α∈T∗,x∈N,then x=α∗β。不断代入消元,最后得出 S = < R E > S= <RE> S=<RE>
4.3 正则语言可以表示为有限自动机、正则表达式和右线性文法
三者两两等价,都表示正则语言
例子:
G=({S,A},{0,1},P ,S)其中P:S—>1A,A—> 0A |1S|0
-
文法转正则式:解方程
A → 0 A ∣ 1 S ∣ 0 , 即 A → 0 A ∣ 11 A ∣ 0 , 解 得 A = ( 0 + 11 ) ∗ 0 , 得 S = 1 ( 0 + 11 ) ∗ 0 A\to 0A|1S|0,即A\to 0A|11A|0,解得A=(0+11)^*0,得S=1(0+11)^*0 A→0A∣1S∣0,即A→0A∣11A∣0,解得A=(0+11)∗0,得S=1(0+11)∗0 -
正则式转文法:按照运算顺序,按基本运算还原。
1 , ( 0 + 11 ) ∗ , 0 1,(0+11)^*,0 1,(0+11)∗,0是依次连接的,对应文法的连接,则 S → 1 A 0 , A → ( 0 + 11 ) ∗ S\to 1A0,A\to (0+11)^* S→1A0,A→(0+11)∗
闭包运算的文法是 A → a A ∣ ϵ A\to aA|\epsilon A→aA∣ϵ,所以 A → 0 A ∣ 11 A ∣ ϵ A\to 0A|11A|\epsilon A→0A∣11A∣ϵ -
文法转自动机:生成一个吃一个,生成终结符串的,转移到一个新增的接受状态。
因为mermaid语法的限制,用方形框表示接受。
S → 1 A S\to 1A S→1A,则状态 q S q_S qS用字符 1 1 1转移到状态 q A q_A qA,其他以此类推。
A A A可以推出终结符串 0 0 0,则 q A q_A qA通过 0 0 0转移到新的接受状态 q H q_H qH -
自动机转文法:每一个转移,对应一个产生式。转移到接受状态的,额外增加推出终结符串。
q S q_S qS接受 1 1 1转移到 q A q_A qA,所以文法有产生式 q S → 1 q A q_S\to 1q_A qS→1qA,其他以此类推。
最后可能要做三消(消单消空消递归)。
q S → 1 q A q A → 1 q S q A → 0 q A q A → 0 q H ∣ 0 q_S\to 1q_A\\ q_A\to 1q_S\\ q_A\to 0q_A\\ q_A\to \bold{0q_H|0} qS→1qAqA→1qSqA→0qAqA→0qH∣0 -
自动机转正则式:状态消去法
要消去状态 q A q_A qA,入射 q A q_A qA的有 { q S } \{q_S\} { qS},出射 q A q_A qA的有 { q H , q S } \{q_H,q_S\} { qH,qS},所以对 q S q_S qS到 q H q_H q