形式语言与自动机

绪论

字母表

概念:形式符号的非空有限集合

集合:常用 Σ \Sigma Σ表示

字符串

概念:字母表 Σ \Sigma Σ上的一个字符串,为 Σ \Sigma Σ中字符构成的有限序列

空串:常用 ε \varepsilon ε表示

幂运算:设 Σ \Sigma Σ为字母表, n n n为任意自然数,定义

​ (1) Σ 0 = { ε } \Sigma^0=\{\varepsilon\} Σ0={ ε}

​ (2)设 x ∈ Σ n − 1 , a ∈ Σ x\in \Sigma^{n-1},a\in \Sigma xΣn1,aΣ,则 a x ∈ Σ n ax\in \Sigma^{n} axΣn

​ (3) Σ n \Sigma^{n} Σn中元素只能由(1)(2)生成

字母表中可以包含空字符,所以 Σ i \Sigma^i Σi的元素的长度不一定为 i i i

*闭包: Σ ∗ = Σ 0 ∪ Σ 1 ∪ . . . \Sigma^{*}=\Sigma^0\cup\Sigma^1\cup... Σ=Σ0Σ1...

+闭包: Σ + = Σ 1 ∪ Σ 2 ∪ . . . \Sigma^{+}=\Sigma^1\cup\Sigma^2\cup... Σ+=Σ1Σ2...

语言

概念:设 Σ \Sigma Σ为字母表,则任何集合 L ⊆ Σ ∗ L\subseteq\Sigma^* LΣ是字母表 Σ \Sigma Σ上的一个语言

语言的连接: L M = { w 1 w 2 ∣ w 1 ∈ L ∧ w 2 ∈ M } LM=\{w_1w_2|w_1\in L\wedge w_2\in M\} LM={ w1w2w1Lw2M}

语言的闭包: L ∗ = L 0 ∪ L 1 ∪ L 2 . . . L^*=L^0\cup L^1\cup L^2... L=L0L1L2...

上下文无关语言与下推自动机

Σ = { 0 , 1 } , L = { 0 n 1 n ∣ n ≥ 1 } \Sigma=\{0,1\},L=\{0^n1^n|n\geq 1\} Σ={ 0,1},L={ 0n1nn1}

下推自动机识别:维护一个栈,转移方向由栈顶和字符共同确定,每次转移识别一个字符并对栈进行修改

图灵机及其语言

Σ = { 0 , 1 , 2 } , L = { 0 n 1 n 2 n ∣ n ≥ 1 } \Sigma=\{0,1,2\},L=\{0^n1^n2^n|n\geq 1\} Σ={ 0,1,2},L={ 0n1n2nn1},则不存在任何自动机和下推自动机可以识别该语言,但是总存在一个图灵机可以识别

归纳证明法

1.基础:至少包含集合中一个元素

2.归纳:由已知元素生成新元素

3.极小性限制:集合中的元素只能由1、2生成

上下文无关文法与上下文无关语言

##上下文无关文法的基本概念

∑ = { 0 , 1 } , L = { 0 n 1 n ∣ n ≥ 1 } \sum=\{0,1\},L=\{0^n1^n|n\geq 1\} ={ 0,1}L={ 0n1nn1}

则接受该语言的文法为 S → 01 S\rightarrow01 S01 S → 0 S 1 S\rightarrow 0S1 S0S1

四个基本要素:终结符集合 T T T,非终结符集合 V V V,开始符号 S S S,产生式集合 P P P

一个上下文无关文法是一个四元组 G = ( V , T , P , S ) G=(V,T,P,S) G=(V,T,P,S),其中 V ∩ T = ∅ V\cap T=\varnothing VT= S ∈ V S\in V SV,产生式规则形如 A → α A\rightarrow \alpha Aα α ∈ ( V ∪ T ) ∗ \alpha \in(V\cup T)^{*} α(VT)

对于文法: E → E O E E\rightarrow EOE EEOE E → ( E ) E\rightarrow (E) E(E) E → v E\rightarrow v Ev E → d E\rightarrow d Ed O → + O\rightarrow + O+ O → ∗ O\rightarrow * O

G = ( { E , O } , { ( , ) , + , ∗ , v , d } , P , E ) G=(\{E,O\},\{(,),+,*,v,d\},P,E) G=({ E,O},{ (,),+,,v,d},P,E)

缩记方式: E → E O E ∣ ( E ) ∣ v ∣ d E\rightarrow EOE|(E)|v|d EEOE(E)vd

归约与推导

推理字符串是否符合文法定义语言,归约是由字符串推出开始符号,推导是由初始符号推出字符串

计算机实现归约(CKY算法):动态规划,全枚举,由于 E → ( E ) E\rightarrow (E) E(E)是三叉,时间复杂度较高

计算机实现推导(EARLY算法):维护两个栈,将规则推入栈中进行探索

最左推导:每一步替换最左边的非终结符

最右推导:

句型:设 C F G      G = ( V , T , P , S ) CFG\;\;G=(V,T,P,S) CFGG=(V,T,P,S),称 α ∈ ( V ∪ T ) ∗ \alpha\in (V\cup T)^* α(VT) G G G的一个句型,当且仅当 S → ∗ α S\overset{*}{\rightarrow}\alpha Sα

S → l m ∗ α S\xrightarrow[lm]{*}\alpha S lmα,称 α \alpha α是一个左句型

若句型 α ∈ T ∗ \alpha\in T^* αT,则称 α \alpha α为一个句子

上下文无关语言

C F G      G = ( V , T , P , S ) CFG\;\;G=(V,T,P,S) CFGG=(V,T,P,S),定义 G G G的语言为 L ( G ) = { w ∣ w ∈ T ∗ ∧ S → G ∗ w } L(G)=\{w|w\in T^*\wedge S\xrightarrow[G]{*} w\} L(G)={ wwTS Gw}

上下文无关语言:由CFG生成的语言

证明给定语言L是某个文法G的语言

一般步骤: i f    w ∈ G    t h e n    w ∈ L ( G ) if \;w\in G\;then\;w\in L(G) ifwGthenwL(G) i f    w ∈ L ( G )    t h e n    w ∈ L if\;w\in L(G)\;then\;w\in L ifwL(G)thenwL

文法与语言的Chomsky分类方法

文法: G = ( V , T , P , S ) G=(V,T,P,S) G=(V,T,P,S)

0型文法:产生式形如 α → β \alpha \rightarrow \beta αβ ,其中 α \alpha α中至少包含一个非终结符,相当于图灵机

1型文法:产生式形如 α → β \alpha \rightarrow \beta αβ ∣ α ∣ ≤ ∣ β ∣ |\alpha|\leq |\beta| αβ ,当 S → ε S\rightarrow \varepsilon Sε例外,且S不得出现在任何产生式右侧,上下文有关文法,相当于线性有界自动机

2型文法:产生式形如 A → β A\rightarrow \beta Aβ ,其中 A ∈ V A\in V AV,上下文无关文法,下推自动机

3型文法:产生式形如 A → a B A\rightarrow aB AaB A → a A\rightarrow a Aa,正规文法,有限状态自动机

语法分析树

语法分析树:推导过程自上而下构成一棵树,满足以下条件

(1)每个内部节点由一个非终结符标记

(2)每个叶节点或由一个非终结符,或由一个终结符,或由 ε \varepsilon ε标记,但是当为 ε \varepsilon ε标记,为父节点唯一孩子

(3)若一个内部节点标记为A,孩子从左到右为 X 1 . . . X k X_1...X_k X1...Xk,则 A → X 1 . . . X k A\rightarrow X_1...X_k AX1...Xk为产生式

语法树的果实:叶节点从左到右连接起来

文法和语言中的二义性

存在句子对应至少两个语法分析树/最左推导的文法是有二义性的

上下文无关语言L的所有文法都是二义性的,则称L为固有二义性

例: L = { a n b n c m d m ∣ n ≥ 1 , m ≥ 1 } ∪ { a n b m c m d n ∣ n ≥ 1 , m ≥ 1 } L=\{a^nb^nc^md^m|n\geq1,m\geq 1\}\cup\{a^nb^mc^md^n|n\geq1,m\geq 1\} L={ anbncmdmn1,m1}{ anbmcmdnn1,m1}

消除二义性的方式:

算符优先级联(将一种算符处理完再处理别的算符)

左结合(左算符优先)

最近嵌套匹配(消除悬垂else二义性)

正规表达式与正规语言

正规表达式

作用于正规表达式的三种运算:

L ∪ M = { w ∣ w ∈ L ∨ w ∈ M } L\cup M=\{w|w\in L\vee w\in M\} LM={ wwLwM}

L ⋅ M = { w 1 w 2 ∣ w 1 ∈ L ∧ w 2 ∈ M } L\cdot M=\{w_1w_2|w_1\in L\wedge w_2\in M\} LM={ w1w2w1Lw2M}

L ∗ = ∪ i ≥ 0 L i L^*=\cup_{i\geq 0}L^i L=i0Li

语法:设字母表 Σ \Sigma Σ,正规表达式集合 R R R

基础: ε , ∅ ∈ R \varepsilon,\varnothing \in R ε,R a ∈ Σ ⇒ a ∈ R a\in \Sigma\Rightarrow a\in R aΣaR ∀ 变 量 L ∈ R \forall 变量 L \in R LR

归纳: E ∈ R ∧ F ∈ R ⇒ E + F ∈ R E\in R\wedge F\in R\Rightarrow E+F\in R ERFRE+FR E ∈ R ∧ F ∈ R ⇒ E F ∈ R E\in R\wedge F\in R\Rightarrow EF\in R ERFREFR E ∈ R ⇒ E ∗ ∈ R E\in R\Rightarrow E^*\in R ERER E ∈ R ⇒ ( E ) ∈ R E\in R\Rightarrow (E)\in R ER(E)R

语义:对每个不含变量的 E ∈ R E\in R ER E E E的语言 L ( E ) L(E) L(E) 递归定义如下

基础: L ( ε ) = { ε } L(\varepsilon)=\{\varepsilon\} L(ε)={ ε} L ( ∅ ) = ∅ L(\varnothing)=\varnothing L()= a ∈ Σ ⇒ L ( a ) = { a } a\in \Sigma \Rightarrow L(a)=\{a\} aΣL(a)={ a}

归纳: E ∈ R ∧ F ∈ R ⇒ L ( E + F ) = L ( E ) ∪ L ( F ) E\in R\wedge F\in R\Rightarrow L(E+F)=L(E)\cup L(F) ERFRL(E+F)=L(E)L(F) E ∈ R ∧ F ∈ R ⇒ L ( E F ) = L ( E ) L ( F ) E\in R\wedge F\in R\Rightarrow L(EF)=L(E)L(F) ERFRL(EF)=L(E)L(F) E ∈ R ⇒ L ( E ∗ ) = ( L ( E ) ) ∗ E\in R \Rightarrow L(E^*)=(L(E))^* ERL(E)=(L(E)) L ( ( E ) ) = L ( E ) L((E))=L(E) L((E))=L(E)

算符优先级:()>*>·>+

派生运算符: L + = L L ∗ L^+=LL^* L+=LL L ? = ε + L L?=\varepsilon+L L?=ε+L L n = L L n − 1 L^n=LL^{n-1} Ln=LLn1

正规语言

对于字母表 Σ \Sigma Σ上的语言 R R R,若存在 Σ \Sigma Σ上的正规表达式 E E E,满足 L ( E ) = R L(E)=R L(E)=R,则 R R R是正规语言

代数定律:

交换律和结合律

零元: ∅ + L = L + ∅ = L          ∅ L = L ∅ = ∅ \varnothing+L=L+\varnothing =L\;\;\;\;\varnothing L=L\varnothing=\varnothing +L=L+=LL=L=

幺元: ε L = L ε = L \varepsilon L=L\varepsilon=L εL=Lε=L

分配律

等幂律: L + L = L L+L=L L+L=L

与闭包相关的定律

代数定律具体化

例:验证 L + M L = ( L + M ) L L+ML=(L+M)L L+ML=(L+M)L是否成立,只需验证对于具体符号 a + b a = ( a + b ) a a+ba=(a+b)a a+ba=(a+b)a是否成立,显然 a a aa aa属于后者不属于前者

有限状态自动机

有限状态自动机:有限状态集,有限输入符号集,转移函数,一个开始状态,终态集合

确定有限状态自动机

确定有限状态自动机DFA是一个五元组 A = ( Q , Σ , δ , q 0 , F ) A=(Q,\Sigma,\delta,q_0,F) A=(Q,Σ,δ,q0,F)

其中, δ : Q × Σ → Q \delta:Q\times \Sigma\rightarrow Q δ:Q×ΣQ q 0 ∈ Q q_0\in Q q0Q F ⊆ Q F\subseteq Q FQ

扩展转移函数,适合输入字符串: δ ′ : Q × Σ ∗ → Q \delta':Q\times \Sigma^*\rightarrow Q δ:Q×ΣQ

∀ q ∈ Q \forall q \in Q qQ,有 δ ′ ( q , ε ) = q \delta'(q,\varepsilon)=q δ(q,ε)=q,若 w = x a      ( x ∈ Σ ∗ , a ∈ Σ ) w=xa\;\;(x\in \Sigma^*,a

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值