形式语言与自动机
基础知识
字母表有非空性、有穷性、单一性
Σ代表字母表
ε代表空串
{ε}代表仅含有空串的集合
Φ代表空集
αβ代表两个字符串α与β的连接(并置)
α^n^ 代表α的n次连接,其中α^0^ =ε,α^n^ =α^n-1^ α 其中n>0
AB代表集合A与B的连接,A={a1,a2,a3,…,an},B={b1,b2,b3,…,bm}则AB=
{ a1b1,a1b2,a1b3,…,a1bm,
a2b1,a2b2,a2b3,…,a2bm,
a3b1,a3b2,a3b3,…,a3bm,
…
anb1,anb2,anb3,…,anbm }注意:AФ=ФA=Ф,A{ε}={ε}A=A
A^n^ 代表集合A的n次连接(n次幂),A^0^ = {ε},A^n^ = A^n-1^A n ≥ 1
A^^ 代表A上所有字符串的集合,称作集合A的克林闭包
A^^ = A^0^ ∪ A^1^ ∪ A^2^ ∪ …∪ A^n^
A^+^ 称为A的正闭包
A^+^=A^1^∪A^2^∪A^3^∪…∪A^n^
定义:
给定字母表∑,则∑*的任意子集L称为字母表∑上的一个语言。
设∑是一个字母表,∀L ⊆ ∑*, ∀x ∈ L, x称为L的一个句子。
eg:Σ={0,1},请给出语言的形式表示
- 所有以0开头,以1结尾的串的语言。
- 所有以11开头,11结尾的串的语言。
- 所有长度为偶数的串的语言。
- 所有长度为奇数的串的语言。
- 所有包含子串01011的串的语言。
- 所有的第10个字符是0的串的语言。
answer:
- {0} {0,1}^*^ {1}
- {11} {0,1}^*^ {11} ∪ {11,111}
- {00,01,10,11}^*^
- {00,01,10,11}^*^ {0,1}
- {0,1}^^ {011011} {0,1}^^
- {0,1}^9^ {0} {0,1}^*^
形式语言与自动机理论简介
初步认识
语言的定义可以从两个方面进行:
- 从产生语言的角度
- 从接收(识别)语言的角度
产生语言
根据语言中的基本句子和其他句子的形成规则,得到(产生)该语言所包含的所有句子
属于形式语言所研究的问题
接收语言
使用自动机模型来接收字符串,接收的所有字符串,也形成一个语言
属于自动机所研究的问题
统一的理论
形式语言与自动机作为统一的理论,实际上包括3个方面的内容:
- 形式语言理论(产生语言)
- 自动机理论(接收语言)
- 形式语言与自动机的等价性理论
括号匹配串的语言
自然语言描述:
()是该语言的最基本的句子
若S是句子,则(S)是句子
若S是句子,则SS是句子
根据以上形成规则,我们可以:
- 产生该语言的任意的句子
- 判断某个串是否是该语言的句子——语法分析
巴克斯-诺尔范式(BNF)描述:
<括号匹配串>::=()
<括号匹配串>::=(<括号匹配串>)
<括号匹配串>::=<括号匹配串><括号匹配串>
Chomsky描述:
S->()
S->(S)
S->SS
注:为方便起见,箭头打成->
术语:
- S称为非终结符,是在推导中可以被替代的符号。
- ()称为终结符,是在推导中不可以被替代的符号
- ->是产生式系统的元符号
结论:
一个语言,可以使用不同的产生式组合来产生。
注意:
D->0|1|2|3|4|5|6|7|8|9不能简写为D->0|…|9
eg:算术表达式的形成规则
E->E+T|E-T|T
T->T*F|T/F|F
F->(E)|I
I->L|IL|ID
L->a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z
D->0|1|2|3|4|5|6|7|8|9
注意:其中E代表表达式,T代表项,F代表因子,先因子再乘除最后加减
注:这是算术表达式,不包含关系表达式的定义(<、<=、>、>=、< >、=),并且标识符没有考虑下划线和大写字母
文法
定义:
文法G是一个四元式,G=(V
T,VN,S ,P )V
T是有限字符的集合,元素称为字母或者终结符V
N是有限字符的集合,元素称为变量或非终结符S∈V,称为文法的开始符号
P是产生式α->β的集合
α∈(V
TU VN)^+^ ,至少包含一个非终结符β∈(V
TU VN)^*^α->ε,称为空串产生式或者ε产生式
推导(派生)
定义:文法G,α和β是集合(VT ∪VN )上的串,α= pvr ,β=pur(p和r可能同时为ε),而v→u是的一个产生式,则称α直接推导出β,记为α=>β ,即pvr =>pur。
术语:
y=>^+^ z 多步推导
y=>^*^ z 任意步推导(多了y=z的情况)S=>^^ ω 则ω是文法的一个句型
进一步若ω∈VT^^ ,ω称为句子L(G) ={ω|S=>^+^ ω,且ω∈V
T*} ,则L(G)称为文法G产生的语言一个语言可以由多个不同的文法产生
一个文法只能产生一个语言
eg:
产生语言L(G)= { a^n^ b^n^ c^n^ |n>0} 文法
解一:
S→aSBC ①
S→aBC ②
CB→BC ③
aB→ab ④
bB→bb ⑤
bC→bc ⑥
cC→cc ⑦解二:
S→abc|aSBc
cB→Bc
aB→ab
bB→bb类似思想还可以写出很多文法