《编译原理》第3章有穷自动机

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编译原理

武汉大学计算机学院编译原理课程组

本章内容简介

·DFA、NFA

·DFA到NFA的转换

·正规文法与FA

·正规表达式与FA

第3章有穷自动机

自动机是一种能进行运算并实现自我控制的装置,计算机就是一部自动机。自动机是描述符号串处理的强有力的工具。

“确定”:下一个输入字符惟一地确定了下一个当前状态。

1. 确定的有穷自动机DFA

DFA=(Q ,∑,t,q 0,F)

3.1有穷自动机的形式定义

Q——有穷非空的状态集。∑——有穷的输入字母表。t——映射Q ×Σ→Q 。q 0——∈Q ,是开始状态。F——⊆Q ,非空终止状态集合。

3.1 FA的形式定义—DFA

2. FA的表示:

①状态转换表

②状态转换图

DFA映射的扩充,使得DFA可以描述对符号串的识别。

DFA=(Q ,Σ,t,q 0,F)扩充的映射

t:Q ×Σ*→Q

定义为

⑴t(q,ε)=q

t(q,aα)=t(t(q,a),α)

其中q ∈Q ,a ∈Σ, α∈Σ*。

3.1 FA 的形式定义——DFA 的扩充

DFA=(Q ,Σ,t,q 0,F),如果t(q 0,α)=∈F ,则α可被DFA接受。被DFA 识别的符号串集合,记为L(A)。

3.1 FA 的形式定义——FA 的等价性

如果两个有穷自动机A 1和A 2满足

L(A 1)=L(A 2)

则称自动机自动机A 1和A 2是等价的。

FA 的等价性举例

DFA A=({q 0,q 1},{a,b},t,q 0,{q 0})t(q 0,a)=q 1,t(q 1,b)=q 0

DFA B=({q 0′,q 1′,q 2′},{a,b},t′,q 0′,{q 0′,q 2′})t′(q 0′,a)=q 1′,t′(q 1′,b)=q 2′,t′(q 2′,a)=q 1′

L(A)=L(B)={(ab)n |n≥0}

3. 非确定的有穷自动机NFA NFA=(Q,∑,t,Q

0,F)

3.1有穷自动机的形式定义

Q——有穷非空的状态集。

∑——有穷的输入字母表。

t——映射Q×Σ→Q的幂集。

Q0——⊆Q,是开始状态集。

F——⊆Q,非空终止状态集合。

NFA=(Q ,Σ,t,Q 0,F)扩充的映射

t:Q ×Σ*→Q 的幂集

定义为⑴

t(q,ε)=q ⑵t(q,aα)=t(q 1,α)∪t(q 2,α)∪…∪t(q n ,α)其中a ∈Σ, α∈Σ*,t(q,a)∈{q 1 ,q 2 ,…,q n }。3.1 FA 的形式定义——NFA 的扩充如果q ∈t(q 0,α) ,q 0∈Q 0,q ∈F,

则α可被NFA接受。被NFA识别的符号串集合,记为L(A)。

·DFA 最小化——构造状态集合的划分

·确定化——子集法、造表法

NDFA 到DFA 的转换:

3.2 NFA到DFA的转换

3.2 NFA到DFA的转换——子集法、造表法

①状态子集的ε闭包

假设I是状态集合Q的一个子集。

定义I的ε闭包(ε-CLOSURE(I))为:

ⅰ.如果状态P∈I,则P∈ε-CLOSURE(I);

ⅱ.如果状态P∈I,则Pˊ∈ε-CLOSURE(I)。

其中Pˊ为由状态P出发,经任意条ε弧能到达的Q中的状态。

3.2 NFA到DFA的转换——子集法、造表法

子集

②I

a

设I是状态集Q的一个子集。

由I中的状态出发,经历一条a弧(跳过a弧前的任意条ε弧)可到达的状态的集合称为J,则

I a=ε-CLOSURE(J)

NFA到DFA的转换

③利用子集法构造确定的有穷自动机

′,F′)。与NFA 假设已知的NFA为(Q′,Σ′,t′,Q

,F)。

等价的DFA为(Q,Σ,t,Q

Σ:可由NFA所含有的输入字母集合得到。

Q:由Q′的一些子集组成。

q0:是包含NFA的开始状态在内的Q ′的一个子集。

F:由包含NFA的终止状态F ′在内的Q ′的一些子集组成。

3.2 NFA到DFA的转换——DFA化简

寻找一个状态数比M更少的DFA Mˊ,使得M和Mˊ所识别的字符串相同,即L(M)=L(Mˊ)。

DFA最小化的关键在于把它的状态集分成一些两两互不相交的子集,使得任何两个不同的子集中的状态都是可区别的,而同一子集中的任何两个状态都是等价的。

等价状态:如果从DFA 的某个状态P出发能识别某一字符串x而停止于终态,那么从Q出发也能识别字符串x而停止于终态;反之亦然。则称状态P和Q是等价的。如果P和Q不等价,则说P和Q是可区分的。

3.2 NFA到DFA的转换——DFA化简

步骤二取每一组中的一个状态作代表。

步骤三删去多余死状态。

3.3 正规文法与FA

由正规文法G[S]可直接构造一个与之等价的FA A 。•令G 的终结符号集为A 的字母表;

•增加一个终止状态Z (Z ∉V N );

•形如U →a 的规则,引一条从状态U 到终止状态Z 的标记为a 的弧;•形如U →aW 的规则,引一条从状态U 到W 的a 弧。

•G 的非终结符号作为A 的状态,G 的开始符号为A 的开始状态;

相关文档
最新文档