文法
一个文法可以用一个四元来定义,G = {Vt,Vn,S,P}
Vt:一个非空有限的符号集合,它的每个元素称为终结符号;
Vn:一个非空有限的符号集合,它的每个元素称为非终结符号,并且Vt∩Vn=Φ;
S∈Vn,称为文法G的开始符号;
P是一个非空有限集合,它的元素称为产生式;
产生式是指,其形式为α→β,α称为产生式的左部,β称为产生式的右部,符号“→”表示“定义为”,并且α、β∈(Vt∪Vn)*,α≠ε,即α、β是由终结符和非终结符组成的符号串;
开始符S必须至少在某一产生式的左部出现一次;
文法可推导的语言标记为L(G);
根据对产生式所施加的限制的不同,把文法分成0型、1型、2型和3型四种类型
0型文法要求至少含有一个非终结符,基本没有什么限制,一个非常重要的理论结果是:0型文法的能力相当于图灵机
1型文法也叫上下文有关文法,对应于线性有界自动机,要求每个产生式α→β,都有|β|>=|α|,|β|指长度;
2型文法也叫上下文无关文法,对应于下推自动机,要求在1型文法的基础上,再满足:每一个α→β都有α是非终结符;
3型文法也叫正则文法,它对应于有限状态自动机。它是在2型文法的基础上满足:A→α|αB(右线性)或A→α|Bα(左线性)。
1型文法是0型文法的一个子集,2型文法是1型文法的一个子集,,3型文法是2型文法的一个子集
3型文法(正则文法)与正则表达式(Regular Expression)是等价的,任意一个正则文法总是可以转化成一个等价的正则表达式。
同时正则表达式与有限自动机是等价的。
能由有限自动机识别的语言,必然可以用正则表达式来表示,而一个用正则表达式表示的语言一定可以用一个有限自动机来识别。
有限状态自动机
有限自动机分为多种最常见的是:确定型有限自动机(DFA)和非确定型有限自动机(NFA)两种;
DFA的文法描述是:G = {S,ε, f,S0,Z} | NFA的文法描述是:M = {S,ε, f,S0,Z} |
S:一个非空有限的输入符号集合; | S:一个非空有限的输入符号集合; |
ε:使状态改变的输入符号集合; | ε:使状态改变的输入符号集合; |
f:映射; | f:映射; |
S0:初始状态; | S0:初始状态集合; |
Z:终止状态; | Z:终止状态;
|
- f(S,a)=G的描述是:初始S状态再输入a的条件下转化到G状态:
![未标题-1 未标题-1](https://i-blog.csdnimg.cn/blog_migrate/88a20d7e071aaee0482474f6309d0843.jpeg)
- 每一个NFA都可以转化为一个DFA如图:
![IMG_20141213_143811[1] IMG_20141213_143811[1]](https://i-blog.csdnimg.cn/blog_migrate/2c435058415fc0e9de0fe51ada019d09.jpeg)