形式语言与自动机第二课
形式语言与自动机第二课
形式语言与自动机第二课
语言以及文法
主要内容:
- 形式语言有关术语
- 文法的定义、分类
字母表与字符串
字母表
-
字母表:字符的有限集合(不允许出现相同的字符)
常用TTT、∑\sum∑表示 -
字母表的幂运算
归纳定义:
- T0={ϵ}T^0=\{\epsilon\}T0={ϵ}
- x∈Tn−1,a∈Tx\in T^{n-1}, a\in Tx∈Tn−1,a∈T=>ax∈Tnax\in T^nax∈Tn
- TnT^nTn的元素只能由1、2生成
字母表的∗*∗闭包:T∗=T0∪T1∪T2......T^*=T^0\cup T^1\cup T^2......T∗=T0∪T1∪T2......:所有字符串和空串的集合
+++闭包:T+=T1∪T2∪T3......T^+=T^1\cup T^2\cup T^3......T+=T1∪T2∪T3......:所有字符串(不包括空串)的集合
T∗=T+∪{ϵ}T^*=T^+\cup\{\epsilon\}T∗=T+∪{ϵ}
T+=T∗−{ϵ}T^+=T^*-\{\epsilon\}T+=T∗−{ϵ}
字符串
- 字符串:字母表中的字符构成的序列(常记为u、v、w、x、y、z)
- 使用 ϵ\epsilonϵ 表示空串
- 字符串www的宽度记作∣w∣|w|∣w∣
- aia^iai代表含有iii个aaa的字符串
- 字符串的连接
- 写法:xyxyxy
- 性质:(xy)z=x(yz)(xy)z=x(yz)(xy)z=x(yz)、ϵx=xϵ=x\epsilon x = x\epsilon = xϵx=xϵ=x、∣xy∣=∣x∣+∣y∣|xy|=|x|+|y|∣xy∣=∣x∣+∣y∣
空串是任何字符串的前缀、后缀、子串
- 字符串的逆:w‾\overline{w}w
语言
语言是字母表的T∗T^*T∗的子集=>语言是集合
L⊂T∗L\subset T^*L⊂T∗
空语言:Φ\PhiΦ
对于集合的运算可以应用于对语言的计算
-
语言的积:
语言的积是语言中的字符串相连接所构成的集合
语言的积不可交换:L1L2!=L2L1L_1L_2 != L_2L_1L1L2!=L2L1 -
语言的幂
- L0={ϵ}L^0=\{\epsilon\}L0={ϵ}
- Ln=LLn−1L^n=LL^{n-1}Ln=LLn−1
文法(重点)
文法是定义语言的数学模型
当语言L是无限集合时:
- 文法产生系统,由文法产生语言的句子
- 机器识别系统,当一个字符串能被一个语言的识别系统识别,则属于该语言,否则不属于该语言
元语言:讨论对象语言的语言
对象语言:被讨论的语言
文法就是元语言
BNF(巴科斯范式)
BNF范式一般作为元语言
一种BNF对标识符的定义:
- <数字>::=0∣1∣2∣...9<数字>::=0|1|2|...9<数字>::=0∣1∣2∣...9
- <字母>::=A∣B∣C∣...Z∣a∣b∣...z<字母>::=A|B|C|...Z|a|b|...z<字母>::=A∣B∣C∣...Z∣a∣b∣...z
- <标识符>::=<字母>∣<标识符><字母>∣<标识符><数字><标识符>::=<字母>|<标识符><字母>|<标识符><数字><标识符>::=<字母>∣<标识符><字母>∣<标识符><数字>
Chomsky文法体系(重点)
将::=::=::=改为→\rightarrow→表示可被代替
使用I、L、DI、L、DI、L、D表示标识符、字母、数字
==>
I→LI\rightarrow LI→L
I→ILI\rightarrow ILI→IL
I→IDI\rightarrow IDI→ID
L→a∣b...∣zL\rightarrow a|b...|zL→a∣b...∣z
D→0∣1...∣9D\rightarrow 0|1...|9D→0∣1...∣9
一个文法的生成式集合
N={I、L、D}N=\{I、L、D\}N={I、L、D}
T={a,b,c,...,z,0,1,2,...,9}T=\{a, b, c, ..., z, 0, 1, 2, ..., 9\}T={a,b,c,...,z,0,1,2,...,9}
P={I,La,...,D0,...,D9}P=\{I, L_a, ..., D_0, ..., D_9\}P={I,La,...,D0,...,D9}
S=IS=IS=I
生成式集合是文法的核心
在这个体系中
- 任何一种文法必须包含两个不同的有限符号的集合,即非终结符集合N(不会在句子中出现)、终结符集合T,还有生成式集合与起始符
- 形式规则的有限集合P(生成式集合):产生语言句子的规则
- 句子:仅由终结符产生的字符串。它们必须从一个起始符S开始,不断使用P中的生成式进行推导
G=(N,T,P,S)G=(N,T,P,S)G=(N,T,P,S)
GGG:文法
NNN:非终结符的有限集合
TTT:终结符的有限集合,N、T无交集
PPP:形式为α→β\alpha\rightarrow\betaα→β的有限集合,α\alphaα是N、T的组合,但是不能是空串,β\betaβ是N、T的组合
SSS:起始符,S∈NS\in NS∈N
推导、句型
-
直接推导
G=(N,T,P,S)G=(N,T,P,S)G=(N,T,P,S),A→βA\rightarrow\betaA→β 是PPP的生成式,α、γ\alpha、\gammaα、γ是(N∪T)∗(N\cup T)^*(N∪T)∗的字符串,则αAγ→αβγ\alpha A\gamma\rightarrow\alpha\beta\gammaαAγ→αβγ,称αAγ\alpha A\gammaαAγ直接推导出αβγ\alpha\beta\gammaαβγ -
推导序列
G=(N,T,P,S)G=(N,T,P,S)G=(N,T,P,S),αi\alpha_iαi是(N∪T)∗(N\cup T)^*(N∪T)∗的字符串,且αi\alpha_iαi直接推导处αi+1\alpha_{i+1}αi+1,称α0=>α1=>α2=>...αn\alpha_0=>\alpha_1=>\alpha_2=>...\alpha_nα0=>α1=>α2=>...αn为长度为n的推导序列(推导n次),
α′=αn\alpha'=\alpha_nα′=αn,α=α0\alpha=\alpha_0α=α0,α\alphaα推导出α′\alpha'α′写作
α→G∗α′\alpha\rightarrow_{G}^{*}\alpha'α→G∗α′
推导序列长度大于0,记作
α→G+α′\alpha\rightarrow_{G}^{+}\alpha'α→G+α′
推导序列的每一步都产生一个字符串,称之为句型(可能包含终结符也可能包含非终结符) -
句型
α\alphaα是文法GGG的句型<=>S→G∗αS\rightarrow^*_G\alphaS→G∗α,α∈(N∪T)∗\alpha\in(N\cup T)^*α∈(N∪T)∗
句型可能包含非终结符 -
句子
www是GGG的句子<=>S→G∗wS\rightarrow^*_GwS→G∗w,w∈T∗w\in T^*w∈T∗
句子不包含非终结符
句型包含句子
- 文法产生的语言
由文法G产生的语言记为L(G)L(G)L(G)
L(G)={w∣w∈T∗,S→G∗w}L(G)=\{w|w\in T^*, S\rightarrow^*_Gw\}L(G)={w∣w∈T∗,S→G∗w}
即句子的集合:必然由终结符组成,必然由起始符S推导
分类(重点)
该体系对生成式的形式作出了一些规定:0型、1型、2型、3型
-
0型:无限制文法
对应的语言:递归可枚举语言,等同于图灵机 -
1型:上下文有关文法
生成式:α→β\alpha\rightarrow\betaα→β
其中∣α∣<=∣β∣|\alpha|<=|\beta|∣α∣<=∣β∣,β\betaβ不为空串
对应的语言:上下文有关语言,不考虑空串,则与线性有界自动机等价 -
2型:上下文无关文法
生成式:A→βA\rightarrow\betaA→β,左侧为单个符号,非终结符
对应语言:上下文无关语言
对应自动机:下推自动机 -
3型:正则文法
分为右线性文法与左线性文法
A→wBA\rightarrow wBA→wB、A→BwA\rightarrow BwA→Bw
A、B∈NA、B\in NA、B∈N, w∈T∗w\in T^*w∈T∗
对应的语言:正则语言
对应的自动机:有限自动机
例子
G=({A,B,C},{a,b,d},P,A)G=(\{A,B,C\},\{a,b,d\},P,A)G=({A,B,C},{a,b,d},P,A)
P:A→ABP:A\rightarrow ABP:A→AB、AB→CAABAB\rightarrow CAABAB→CAAB、A→dA\rightarrow dA→d、B→aB\rightarrow aB→a、C→bC\rightarrow bC→b
是上下文有关文法
- 四类文法的关系
- 0型:无限制
- 1型,左边长度小于等于右边。右边不允许是空串
- 2型,左边是非终结符、单个符号
- 3型,左边是非终结符、单个字符,右边是wBwBwB、BwBwBw或者www
- 1、2、3属于0型
- 不含A→ϵA\rightarrow \epsilonA→ϵ的2、3型属于1型
- 3型属于2型