有穷自动机PPT课件
合集下载
第三章词法分析及有穷自动机-PPT
={a}*={ε,a,aa,aaa,、、…}
复 6o 合 7o
8o
ba* a| ba* (a|b)*
L(ba*)=L(b) L(a*) ={b,ba,baa,baaa,……}
L(a| ba*)=L(a)∪L(ba*)={a,b,ba,baa,……}
L((a|b)*)= (L(a|b))*={a,b}*={ε,a,b,aa,ab,…… 所有ab组成得串}
……
§3 正规式与有穷自动机
❖ 为了进一步讨论词法分析程序得自动生成,需 要将状态转换图得概念加以形式化;同时将由 正规文法描述得单词由正规式描述,可利用有 穷自动机生成词法分析程序。
一、正规式与正规集
语言得单词结构不仅由正规文法描述,还可以 由正规式描述。
例:<标识符>∷=<字母>|<标识符><字母>|<标识符>< 数字>
单词:指语言中具有独立意义得最小语法单位。 语言中得单词符号:
一般可归结为五种:
❖ 保留字(基本字):如if, for, and 等――个数确定 ❖ 标识符:表示常量、变量、类型、过程等名称――个数不确定 ❖ 常数:如34,-0、37等――个数不确定 ❖ 运算符:如+,-,*,/,< 等――个数确定 ❖ 界线符:如逗号,分号,括号等――个数确定
④ 以识别符号为终止状态。
例:设有正规文法G[Z]:
Z∷= U0|V1
U∷=Z1|1
V∷=Z0|0
(描述得语言为L(G)={01,10}
+
)
则状态转换图如下:
新增加开 始状态S
1 S
0
U 1
0
V
0 Z
编译原理第三章_有穷自动机
5
例 过河问题 分析(续)
初始状态:MWGC-φ;终止状态:φ-MWGC。 g
MWGC-φ
WC-MG
问题:
6
例 过河问题 状态转换图
起始 g
MWGC-φ g
g φ-MWGC
g
7
WC-MG
m
m MWC-G
w
w
c
C-MWG
c W-MGC
g
g
MGC-W c
MG-WC
w
m
c G-MWC
m
gg MWG-C
+dd. ddd;
输入符号串
数字 数字
SB
.
数字
+
A
H
-.
数字
.G
接收:若扫描完输入串, 且在一个终止状态上结 束。
数字 阻塞:若扫描结束但未 停止在终止状态上;或 者为能扫描完输入串 (如遇不合法符号)。
不完全描述:某些状态 对于某些输入符号不存 在转换。
练习:+34.567 .123 3.4.5
w
有穷自动机(FA)
数字系统:可以从一个状态移动到另一个状态;每次 状态转换,都上由当前状态及一组输入符号确定的;可以 输出某些离散的值集。
FA:一个状态集合;状态间的转换规则;通过读头来 扫描的一个输入符号串。
读头:从左到右扫描符号串。移动(扫描)是由状态 转换规则来决定的。
8
读头
一个FA的例子
(3)运行: 串f(,Q,且t1tt21)∈= Σf(,f(Qt1,t2t1∈), Σt2*),其中Q∈K, t1t2为输入字符
17
例3
题:试证abba可为例1的DFA M所识别(所接受)。
例 过河问题 分析(续)
初始状态:MWGC-φ;终止状态:φ-MWGC。 g
MWGC-φ
WC-MG
问题:
6
例 过河问题 状态转换图
起始 g
MWGC-φ g
g φ-MWGC
g
7
WC-MG
m
m MWC-G
w
w
c
C-MWG
c W-MGC
g
g
MGC-W c
MG-WC
w
m
c G-MWC
m
gg MWG-C
+dd. ddd;
输入符号串
数字 数字
SB
.
数字
+
A
H
-.
数字
.G
接收:若扫描完输入串, 且在一个终止状态上结 束。
数字 阻塞:若扫描结束但未 停止在终止状态上;或 者为能扫描完输入串 (如遇不合法符号)。
不完全描述:某些状态 对于某些输入符号不存 在转换。
练习:+34.567 .123 3.4.5
w
有穷自动机(FA)
数字系统:可以从一个状态移动到另一个状态;每次 状态转换,都上由当前状态及一组输入符号确定的;可以 输出某些离散的值集。
FA:一个状态集合;状态间的转换规则;通过读头来 扫描的一个输入符号串。
读头:从左到右扫描符号串。移动(扫描)是由状态 转换规则来决定的。
8
读头
一个FA的例子
(3)运行: 串f(,Q,且t1tt21)∈= Σf(,f(Qt1,t2t1∈), Σt2*),其中Q∈K, t1t2为输入字符
17
例3
题:试证abba可为例1的DFA M所识别(所接受)。
形式语言与自动机 有穷自动机ppt课件
2018年11月24日星期六
南京航空航天大学计算机学院 胡军
16
1.3 非确定的有穷自动机(NFA)
一个FA(字母表为{0,1}),接受所有结尾是101的字符串。
能否给FA增加猜测选择的能力?假设我们具有猜测何时输入串还 剩下三个字符的能力。
还剩三个字符 1 0 1 qdie
2018年11月24日星期六 南京航空航天大学计算机学院 胡军 17
NFA:可以进行猜测选择
0, 1 q0 1 q1 0 q2 1 q3
q3 没有任何转换出来; q3 上如果读入0,1, NFA也运行进入死状态。
2018年11月24日星期六
南京航空航天大学计算机学院 胡军
21
NFA: 猜测的能力
猜测是否已经到了最后三位字符的 位置了?
0, 1
q0
1
q1
0
2018年11月24日星期六
南京航空航天大学计算机学院 胡军
25
NFA与 DFA的等价
NFA 能识别(接受)DFA所识别(接受)的所有语 言。(为什么?) 反过来成立吗?
YES
任一个NFA都能转换成一个DFA,二者所 识别的语言是相等的。
2018年11月24日星期六 南京航空航天大学计算机学院 胡军 26
提示:DFA得记住 读入字符串的最后两位。
qe
q0 0
1
0 1
DFA 例子
设计一个DFA(字母表为{0,1}),接受所有结尾 是101的字符串。
2018年11月24日星期六
南京航空航天大学计算机学院 胡军
10
DFA 例子
例3.1 给出一个有穷自动机 M=({q0,q1,q2,q3},{0,1},δ,q0,{q0}) 其中:转移函数δ具体定义如下:
第三章有穷自动机-PPT课件
q 0 c h a rc h ,n a m e [ k ] n a m e r e a d ( c h ) 若 c h = l q 1 q 2 符 号 表 , n a m e查 n a m e n a m e + c h 非 l , d 用 r e a d ( c h ) 若 没 有 , 则 填 表 , 否 则 返 回 其 地 址 r e a d ( c h ) 若 c h = lo rd
自动机接受(收)字符串
• 3)自动机接收语言 自动机 M所能接收的串组成一个集合, 则称该集合为自动机 M所能接收(识别)的 语言。 用L(M)表示: L ( M ) = {ω ∣ t(q0, ω )∈ F , ω ∈ * }
3.2.4 自动机的等价性
•定义3.2 M和M是等价的,当且仅当 对每一个串x,M接收x当且仅当M接收x。 •定义3.3 如果M仅通过重新标记它的 状态就能转换称M,则M和M称为同构的 (Isomorphic)。 •FSA的一个基本定理是:对每一个自动 机M,存在一个等价的具有最少状态个 数的自动机M,而且对于每一个其状态 个数与M相同且等价于M的自动机M″, 必是与M同构的。换句话说,M在结构 上是唯一的。
3.2.5 非确定有穷状态自动机
•定义3.4 一个非确定有穷自动机NDFSA是一个
五元组
NDFSA=(Q, , t, q0, F) 其中,Q是一个非空有穷状态集, 是一个非空有穷输入字母集, 映射t为QQ的子集(即t是一个多值映射), Q0Q是开始状态集, FQ是终止状态集。 •同样的,NDFSA也可以用状态转换表和状态转换 图表示。
3.2.3 构形和移动(2)
• 构形(q0,ω)称为初始构形,其中q0 是初始状态,ω是由该自动机可接 收或拒绝的任何输入串。构形(q, ) 称为终止构形,其中是空串, qF(终态集)。 • 自动机的移动(记为├)是从一种构 形到另一种构形的转换。 • DFSA的工作过程就是一系列的移动 过程。 • 记号├+称为├的传递闭包;├*称为 ├的自反闭包。 ├*表示“0次或多 次移动”;├+表示“一次或多次移 动”。
自动机接受(收)字符串
• 3)自动机接收语言 自动机 M所能接收的串组成一个集合, 则称该集合为自动机 M所能接收(识别)的 语言。 用L(M)表示: L ( M ) = {ω ∣ t(q0, ω )∈ F , ω ∈ * }
3.2.4 自动机的等价性
•定义3.2 M和M是等价的,当且仅当 对每一个串x,M接收x当且仅当M接收x。 •定义3.3 如果M仅通过重新标记它的 状态就能转换称M,则M和M称为同构的 (Isomorphic)。 •FSA的一个基本定理是:对每一个自动 机M,存在一个等价的具有最少状态个 数的自动机M,而且对于每一个其状态 个数与M相同且等价于M的自动机M″, 必是与M同构的。换句话说,M在结构 上是唯一的。
3.2.5 非确定有穷状态自动机
•定义3.4 一个非确定有穷自动机NDFSA是一个
五元组
NDFSA=(Q, , t, q0, F) 其中,Q是一个非空有穷状态集, 是一个非空有穷输入字母集, 映射t为QQ的子集(即t是一个多值映射), Q0Q是开始状态集, FQ是终止状态集。 •同样的,NDFSA也可以用状态转换表和状态转换 图表示。
3.2.3 构形和移动(2)
• 构形(q0,ω)称为初始构形,其中q0 是初始状态,ω是由该自动机可接 收或拒绝的任何输入串。构形(q, ) 称为终止构形,其中是空串, qF(终态集)。 • 自动机的移动(记为├)是从一种构 形到另一种构形的转换。 • DFSA的工作过程就是一系列的移动 过程。 • 记号├+称为├的传递闭包;├*称为 ├的自反闭包。 ├*表示“0次或多 次移动”;├+表示“一次或多次移 动”。
第3章有穷自动机
▪ 正规式为 :(10 | 01) (10 | 01)*
第3章有穷自动机
▪ 习题:P55-3.5
第3章有穷自动机
3.3.2 正规表达式RE 正规文法G
▪ 同理,对任何一个正规表达式e,都存在一个等价的 正规文法G ,使得 L(e) =L(G) 。
▪ 具体转换方法如下: ▪ 1) 令VT= ∑ ▪ 2) 对任意正规式R选择一个非终结符Z生成规则 ▪ Z→R , 并令S=Z,即Z是开始符号;
第3章有穷自动机
RE与FA——RE的性质
设A、B、C均为正规表达式,则有下列关系成立: ⑴ A|B=B|A ⑵ A|(B|C)=(A|B)|C ⑶ A(BC)=(AB)C ⑷ A(B|C)=AB|AC (B|C)A=BA|CA ⑸ εA=Aε=A ⑹ (A*)*=A* ⑺ A* = A |A* =ε|AA* = (ε|A)* ⑻ A = A= ⑼ A | =A
第3章有穷自动机
▪ (4) (a | b)* 是正规式 , 则相应正规集为 ▪ L((a | b)*)=(L(a | b))*= { a, b }*={ε,a,b,ab,ba, …}
▪ (5) ba* 是正规式 , 则相应正规集为 ▪ L(ba*)=L(b)L(a*)={b,ba,baa,baaa,…}
多数程序设计语言的单词符号都能用正规文法来描 述,但直观上比较繁琐,不利于词法分析程序的构造。
正规表达式是用于描述称之为正规集的语言类的另
一种表示形式,习惯用 RE 来表示。
第3章有穷自动机
例如: 表示标识符的文法用左线性文法来描述: <标识符>→<字母>|<标识符><字母>|<标识符><数字> 可抽象为: I→ l | I l | I d 我们可以用正规式来描述
第3章 有穷自动机
例3.10
NDFA =(Q,,t,Q0,F)其中 Q={q0, q1, q2, q3}, ={x, y}, Q0={q0}, F={q1}. t(q0,x)={q1, q2}, t(q0,y )={q0}, t(q1, x)={q0}, t(q1,y )={q1,q2}, t(q2,x)={q3}, t(q2,y) ={q3}, t(q3,x)={q1,q3}, t(q3,y)={q3} DFA =(Q’, , t’,q0, F’). (1) ={x,y}; (2)Q’={[q0], [q1], [q2], [q3], [q0, q1], [q0, q2], [q0, q3], [q1, q2], [q1, q3], [q2, q3], [q0, q1, q2], [q0, q1, q3], [q0, q2, q3], [q1, q2, q3], [q0, q1, q2, q3]} (3)定义映射t’: t’([q0], x)=[q1,q2], t’([q0], y)=[q0], t’([q1], x)=[q0], t’([q1], y)=[q1, q2], t’([q2], x)=[q3], t’([q2], y)=[q3], t’([q3], x)=[q1, q3], t’([q3], y)=[q3], t’([q0, q1], x)=[q0, q1,q2], t’([q0, q1], y)=[q0, q1,q2], …. t’([q0, q1 , q2 , q3], x)=[q0, q1,q2 ,q3], t’([q0, q1 , q2 , q3], y)=[q0, q1,q2 ,q3]. (4)DFA的开始状态q0’=[q0] (5) DFA的开始状态集合F=[q1], [q0, q1], [q2, q1], [q3, q1], [q0, q1, q2], [q0, q1, q3], [q1, q2, q3], [q1, q2, q3 , q4]
编译原理课件第3章有穷自动机
and some of which are designated as final states. 2) An alphabet of possible input symbols. 3) A finite set of transitions that specifies for each state and for each symbol of the input alphabet, which state to go to next.
14
例:下图是一个NDFA,它所识别的是所有含有相 继两个a或相继两个b的字。
15
例子 NFA M=({S,P,Z},{0,1},f,{S,P},{Z}) 其中 f(S,0)={P} f(Z,0)={P} f(P,1)={Z} f(Z,1)={P} f(S,1)={S,Z}
16
状态图表示
1S 0
9
3.1.3 自动机的等价性
对于*中的任何字 ,若存在一条从初态结点 到某一终态结点的通路,且这条通路上所有弧的标 记符连接成的字等于 ,则称可为 DFA M所识别 (读出或接受)若M的初态结点同时又是终态结点, 则空字可为M所识别(或接受)。DFA M所能识别的 字的全体记为L(M)。
对于任给的DFA A1和A2,若L(A1)=L(A2),称 自动机A1与A2等价。P37 例3.5。
13
对于∑*中的任何一个字,若存在一条从某一 初态结点到某一终态结点的通路,且这条通路上所 有弧的标记字依序连接成的字(忽略那些标记为的 弧)等于,则称可为NDFA M所识别。若M的某些 节点既是初态结点又是终态结点,或者是存在一条 从某个初态结点到某个终态结点的的通路,那么, 空了可为M所接受。
4
3.1.1 状态转换表
14
例:下图是一个NDFA,它所识别的是所有含有相 继两个a或相继两个b的字。
15
例子 NFA M=({S,P,Z},{0,1},f,{S,P},{Z}) 其中 f(S,0)={P} f(Z,0)={P} f(P,1)={Z} f(Z,1)={P} f(S,1)={S,Z}
16
状态图表示
1S 0
9
3.1.3 自动机的等价性
对于*中的任何字 ,若存在一条从初态结点 到某一终态结点的通路,且这条通路上所有弧的标 记符连接成的字等于 ,则称可为 DFA M所识别 (读出或接受)若M的初态结点同时又是终态结点, 则空字可为M所识别(或接受)。DFA M所能识别的 字的全体记为L(M)。
对于任给的DFA A1和A2,若L(A1)=L(A2),称 自动机A1与A2等价。P37 例3.5。
13
对于∑*中的任何一个字,若存在一条从某一 初态结点到某一终态结点的通路,且这条通路上所 有弧的标记字依序连接成的字(忽略那些标记为的 弧)等于,则称可为NDFA M所识别。若M的某些 节点既是初态结点又是终态结点,或者是存在一条 从某个初态结点到某个终态结点的的通路,那么, 空了可为M所接受。
4
3.1.1 状态转换表
chapter 3-有穷状态自动机
例2、假设字母表为{0,1},构造一个识别含有001字串的所有 字符串的DFA的状态图。
1 0 q1 1 q2 0
0 1 q3
0,1
q4
第三章、有穷状态自动机
例2、假设字母表为{0,1},构造一个识别含有001子串的所有 字符串的DFA的状态图。
1 0 q1 1 q2 0
0 1 q3
0,1
q4
第三章、有穷状态自动机
关键问题:DFA与NFA等价吗?
第三章、有穷状态自动机
第三章、有穷状态自动机
NFA与DFA的等价性
NFA与DFA等价是指两种模型识别相同的语言类(正则语言)。 对于任意给定的DFA,存在一个NFA与之等价; 对于任意给定的NFA,存在一个DFA与之等价。 DFA本身就是一种NFA,所以,要证明DFA与NFA等价,只需证明 对于任意给定的NFA,存在一个DFA与之等价。 下面根据给定的NFA构造一个DFA: 这里M2=(Q2,Σ,δ,q0,F ),Q2 =P(Q),
第三章、有穷状态自动机
δ1
q01 q1 q2
0 1
q1 q2 q1
0 q02 q3 q4
q01 q1 Q2
1 q3 q4 q5
δ2
q02 q3 q4
q5
q5
q5
第三章、有穷状态自动机
下面构造M= (Q,Σ,δ,q,F), (1)Q={(r1,r2) ∣ r1∈Q1且r2∈Q2}; (2)Σ= {0,1}; (3)转移函数 δ((r1,r2) ,a)= δ (δ1 (r1,a) ,δ 2(r2,a)), 如下页表所示; (4)q0=(q01,q02)是M的起始状态; (5)F={(q2,q02),(q2,q3),(q2,q4),(q2,q5),(q01,q4), (q1,q4)}。
1 0 q1 1 q2 0
0 1 q3
0,1
q4
第三章、有穷状态自动机
例2、假设字母表为{0,1},构造一个识别含有001子串的所有 字符串的DFA的状态图。
1 0 q1 1 q2 0
0 1 q3
0,1
q4
第三章、有穷状态自动机
关键问题:DFA与NFA等价吗?
第三章、有穷状态自动机
第三章、有穷状态自动机
NFA与DFA的等价性
NFA与DFA等价是指两种模型识别相同的语言类(正则语言)。 对于任意给定的DFA,存在一个NFA与之等价; 对于任意给定的NFA,存在一个DFA与之等价。 DFA本身就是一种NFA,所以,要证明DFA与NFA等价,只需证明 对于任意给定的NFA,存在一个DFA与之等价。 下面根据给定的NFA构造一个DFA: 这里M2=(Q2,Σ,δ,q0,F ),Q2 =P(Q),
第三章、有穷状态自动机
δ1
q01 q1 q2
0 1
q1 q2 q1
0 q02 q3 q4
q01 q1 Q2
1 q3 q4 q5
δ2
q02 q3 q4
q5
q5
q5
第三章、有穷状态自动机
下面构造M= (Q,Σ,δ,q,F), (1)Q={(r1,r2) ∣ r1∈Q1且r2∈Q2}; (2)Σ= {0,1}; (3)转移函数 δ((r1,r2) ,a)= δ (δ1 (r1,a) ,δ 2(r2,a)), 如下页表所示; (4)q0=(q01,q02)是M的起始状态; (5)F={(q2,q02),(q2,q3),(q2,q4),(q2,q5),(q01,q4), (q1,q4)}。
第3章 词法分析与有穷自动机PPT课件
或作为一个联合
typedef struct {
TokenType tokenval;
unon { char* stringval;
int numval; } attribute;
} TokenRecord;
10
【例】试给出程序段 if (a>1) b = 100;输出 的单词符号串。
假定基本字、运算符和界符都是一符一种,标识符自身 的值是字符串,常数是二进制值。
(2,)
基本字 if
(29,)
左括号 (
(10,‘a’)
标识符 a
(23,)
大于号 >
(11,‘1’的二进制)
常数 1
(30,)
右括号 )
(10,‘b’)
标识符 b
(17,)
赋值号 =
(11,‘100’的二进制) 常数 100
(26,)
分号 ;
11
【例】考虑下述 C++ 代码段:
另一种 表示
while ( i >= j ) i--;
第三章 词法分析
人们理解一篇文章(或一个程序)起码是在单 词的级别上来思考的。同样,编译程序也是在单 词的级别上来分析和翻译源程序的。词法分析的 任务是:从左至右逐个字符地对源程序进行扫描, 产生一个个的,把作为字符串的源程序改造成为 单词符号串的中间程序。因此,词法分析是编译 的基础。
执行词法分析的程序称为词法分析器。本章讨 论词法分析程序的手工构造方法和自动构造方法。
将字符组合成记号与在一个英语句子中将字母构成单词 并确定单词的含义很相像,此时的任务很像拼写。
5
程序语言的单词符号一般可分为下列五种:
1) 关键字:是由程序语言定义的具有固定意义的标识符, 也称保留字或基本字。如Pascal中的 begin、end、 if、integer等,C 中的if、else、do、while, C++ 中的class、int、switch、break等都是保 留字,它们一般不用作一般标识符。
第3章 有穷自动机
形如U→aW的规则,引一条从状态U到W的a弧。
33
正规文法FA
给定文法G[S]: S→aS|aA|bB A→bA|cC B→aB|dD C →cC|c D →dD|d 给出其对应的状态转换图。S是开始状 态,Z是终止状态.图3.16 FA
34
FA正规文法
①自动机A中的每一个状态均作为G的非终结符号,
q1 q2
q5 q6 q6 q4 q6
26
q3 q4 q3
NFA到DFA的转换 ③ 利用子集法构造确定的有穷自动机
假设已知的NFA为(Q′,Σ′,t′,Q0′,F′)。与NFA等 价的DFA为(Q,Σ,t,Q0,F)。 Σ:可由NFA所含有的输入字母集合得到。 Q:由Q ′的一些子集组成。 Q0:是包含NFA的开始状态在内的Q ′的一个子集。 F:由包含NFA的终止状态F ′在内的Q ′的一些子集组 成。
31
DFA化简举例
G 0 0 I
0
start
F 1
1
0
1
0
H
1
J
1
32
3.3 正规文法与FA
由正规文法G[S]可直接构造一个与之等价的FA A。
令G的终结符号集为A的字母表;
G的非终结符号作为A的状态,G的开始符号为A的开始 状态;
增加一个终止状态Z(ZVN);
形如U→a的规则,引一条从状态U到终止状态Z的标记为a 的 弧;
a T U T V W S b
a a Z b
15
a b
B a
a
3.1.4非确定的有穷自动机NDFA的形式定义 非确定的有穷自动机NFA
NFA=(Q,∑,t, Q0,F) Q——有穷非空的状态集 。
33
正规文法FA
给定文法G[S]: S→aS|aA|bB A→bA|cC B→aB|dD C →cC|c D →dD|d 给出其对应的状态转换图。S是开始状 态,Z是终止状态.图3.16 FA
34
FA正规文法
①自动机A中的每一个状态均作为G的非终结符号,
q1 q2
q5 q6 q6 q4 q6
26
q3 q4 q3
NFA到DFA的转换 ③ 利用子集法构造确定的有穷自动机
假设已知的NFA为(Q′,Σ′,t′,Q0′,F′)。与NFA等 价的DFA为(Q,Σ,t,Q0,F)。 Σ:可由NFA所含有的输入字母集合得到。 Q:由Q ′的一些子集组成。 Q0:是包含NFA的开始状态在内的Q ′的一个子集。 F:由包含NFA的终止状态F ′在内的Q ′的一些子集组 成。
31
DFA化简举例
G 0 0 I
0
start
F 1
1
0
1
0
H
1
J
1
32
3.3 正规文法与FA
由正规文法G[S]可直接构造一个与之等价的FA A。
令G的终结符号集为A的字母表;
G的非终结符号作为A的状态,G的开始符号为A的开始 状态;
增加一个终止状态Z(ZVN);
形如U→a的规则,引一条从状态U到终止状态Z的标记为a 的 弧;
a T U T V W S b
a a Z b
15
a b
B a
a
3.1.4非确定的有穷自动机NDFA的形式定义 非确定的有穷自动机NFA
NFA=(Q,∑,t, Q0,F) Q——有穷非空的状态集 。
第3章有穷自动机
Пk={G1,G2,…,Gm}
实际上计算Ia=ε-closure(J)。这里的I=Gi 如果 Ia包含于Gj 则不分划;否则分划Gi 。
编译原理
50
编译原理
51
化简前的DFSA(图3.12)
化简后的DFSA(图3.14简前的DFSA
化简后的DFSA
编译原理
53
将一个NDFSA M转化为等价的含有最少状态 数的DFSA步骤总结如下:
编译原理
36
编译原理
37
构造了新状态[B, C, E]
编译原理
38
编译原理
39
确定化方法:造表法
两个定义:
ε-closure(I)集合含义是:从I中任 一状态出发,经由一条或多条相 邻ε弧而能到达的状态集合 ε-closure({1})={1, 2} ε-closure({5})={5,6,2}
31
消除空移的示例
编译原理
32
编译原理
33
利用状态转换表消除空移示例
首先,标记直接经由一个空移到达某个终态的所 有状态为终态.
图3.4中的NDFSA标记终态后的情况
编译原理
34
然后,消除与未被标记为终态的那些状态相关的空移. 最后,删除ε列和空行.
图3.4中的NDFSA消除空移后的情况
编译原理
编译原理
14
例:证明 =baab被下图的DFSA所识别。
(q0,baab)├ (q2,aab)├
(q1,ab)├ (q3,b)├ (q3 , )
q3属于终态。 得证。
a a a
q1
b
b, a
q0
b
q3
实际上计算Ia=ε-closure(J)。这里的I=Gi 如果 Ia包含于Gj 则不分划;否则分划Gi 。
编译原理
50
编译原理
51
化简前的DFSA(图3.12)
化简后的DFSA(图3.14简前的DFSA
化简后的DFSA
编译原理
53
将一个NDFSA M转化为等价的含有最少状态 数的DFSA步骤总结如下:
编译原理
36
编译原理
37
构造了新状态[B, C, E]
编译原理
38
编译原理
39
确定化方法:造表法
两个定义:
ε-closure(I)集合含义是:从I中任 一状态出发,经由一条或多条相 邻ε弧而能到达的状态集合 ε-closure({1})={1, 2} ε-closure({5})={5,6,2}
31
消除空移的示例
编译原理
32
编译原理
33
利用状态转换表消除空移示例
首先,标记直接经由一个空移到达某个终态的所 有状态为终态.
图3.4中的NDFSA标记终态后的情况
编译原理
34
然后,消除与未被标记为终态的那些状态相关的空移. 最后,删除ε列和空行.
图3.4中的NDFSA消除空移后的情况
编译原理
编译原理
14
例:证明 =baab被下图的DFSA所识别。
(q0,baab)├ (q2,aab)├
(q1,ab)├ (q3,b)├ (q3 , )
q3属于终态。 得证。
a a a
q1
b
b, a
q0
b
q3
形式语言与自动机_课件_陈有祺第03章 有穷自动机
定义3.7 给出NFA M=(Q,∑,δ,q0 , F),若δ(q0,x)∩F非空( x∈∑*),则称字符串x被M接受。被NFA M接受的全体字符串称 为M接受的语言,记作L(M)。也就是 L(M)={x∣x∈∑*,且δ(q0,x)∩F非空}。
从定义3.7可知,在δ(q0,x)的众多状态中,只要有一个状态属于 终结状态集F,则x就被该NFA M接受。如对例3.4中的NFA,字 符串01001是被接受的,因为δ(q0 ,01001)={q0,q1,q4} ,而 q0∈F。但字符串010是不被接受的,因为δ(q0 ,010)={q0,q3} ,其中没有一个状态在F中。
从给定集合构造接受该集合的FA
实现上述思路的FA M1如图所示
初始状态标记为“1”,表示要么还没有读入符号,要么刚读过符号1。对 于“0”状态遇1,“01” 状态遇0,“010”状态再遇0或1的情况,上 面已经做了解释。其他情况是:“0”状态遇0,此时应当保持在“0”状 态,意味着刚读过的符号是0;再有“01”状态遇1,表示这次的期望“ 半途而废”,只能从头再来,所以转回到“1”状态。
形式语言与自动机
第三章 有穷自动机
非形式化描述 有穷自动机的基本定义 非确定的有穷自动机 具有ε转移的有穷自动机 有穷自动机的应用 具有输出的有穷自动机
有穷状态系统
指针式钟表共有12*60*60个状态
围棋共有3361个状态
电梯的控制结构
某些电子产品中的开关电路,具有n个门的开关网络有 2n种状态
分析:x∈L当且仅当把x看成二进制数时,x模5与0同余。换句话说,x 要能被5整除。例如,0,101,1010,1111等都能被5整除,而10, 11,100,110等都不能被5整除。
当二进制数x的位数向右不断增加时,它的值(换算成十进制)的增加很 有规律:x0的值等于2x,x1的值等于2x+1。
从定义3.7可知,在δ(q0,x)的众多状态中,只要有一个状态属于 终结状态集F,则x就被该NFA M接受。如对例3.4中的NFA,字 符串01001是被接受的,因为δ(q0 ,01001)={q0,q1,q4} ,而 q0∈F。但字符串010是不被接受的,因为δ(q0 ,010)={q0,q3} ,其中没有一个状态在F中。
从给定集合构造接受该集合的FA
实现上述思路的FA M1如图所示
初始状态标记为“1”,表示要么还没有读入符号,要么刚读过符号1。对 于“0”状态遇1,“01” 状态遇0,“010”状态再遇0或1的情况,上 面已经做了解释。其他情况是:“0”状态遇0,此时应当保持在“0”状 态,意味着刚读过的符号是0;再有“01”状态遇1,表示这次的期望“ 半途而废”,只能从头再来,所以转回到“1”状态。
形式语言与自动机
第三章 有穷自动机
非形式化描述 有穷自动机的基本定义 非确定的有穷自动机 具有ε转移的有穷自动机 有穷自动机的应用 具有输出的有穷自动机
有穷状态系统
指针式钟表共有12*60*60个状态
围棋共有3361个状态
电梯的控制结构
某些电子产品中的开关电路,具有n个门的开关网络有 2n种状态
分析:x∈L当且仅当把x看成二进制数时,x模5与0同余。换句话说,x 要能被5整除。例如,0,101,1010,1111等都能被5整除,而10, 11,100,110等都不能被5整除。
当二进制数x的位数向右不断增加时,它的值(换算成十进制)的增加很 有规律:x0的值等于2x,x1的值等于2x+1。
《编译原理》第3章 词法分析与有穷自动机PPT课件
式和正规集的基本概念和它们之间的关系。 5. 掌握词法分析程序的手工实现方法。 6. 掌握词法分析程序的自动构造原理。
教学内容
3.1 词法分析的任务 3.2 词法分析程序的输出形式 3.3 词法分析程序的设计与实现 3.4 正规式与有穷自动机 3.5 词法分析程序的自动生成工具LEX 3.6 PL/0编译程序的词法分析
G[D]: D→ int L | float L L→ L, id | id
3.4.3 有穷自动机
状态图的形式化描述
读字符
字母、数字
查保留字表
S 字母 1
非字母数字
标识符
数字
数字 2
非数字
无符号整数
+*, 3 ()
其他字符 非=
<4 =
5 其他字符 出口
其他
出错
返回S
单界符 双界符
• 有穷自动机是一种数学模型,具有离散的输入与输出, 系统可处于有穷状态中的任何一个
单词类别
编码
关键字
1
标识符
2
常数
3
运算符
4
分界符
5
3.3 词法分析程序的设计与实现
词法规则
状态图
词法分析程序
3.3.1 正规文法及其状态图
1.状态图:为识别单词而专门设计的有向图, 是设计词法分析程序的一种好途径。
结点代表状态,用圆圈表示,为非终结符
有向弧表示状态转移
弧上的标记表示在射出弧的结点状态下可能出现的输入字
DFA M所接受的语言为:L(M)={α|f(S, α)=Sn, Sn ∈Z}
DFA M所能接受的符号串的全体记为L(M)
DFA的状态图表示:
a1 a
教学内容
3.1 词法分析的任务 3.2 词法分析程序的输出形式 3.3 词法分析程序的设计与实现 3.4 正规式与有穷自动机 3.5 词法分析程序的自动生成工具LEX 3.6 PL/0编译程序的词法分析
G[D]: D→ int L | float L L→ L, id | id
3.4.3 有穷自动机
状态图的形式化描述
读字符
字母、数字
查保留字表
S 字母 1
非字母数字
标识符
数字
数字 2
非数字
无符号整数
+*, 3 ()
其他字符 非=
<4 =
5 其他字符 出口
其他
出错
返回S
单界符 双界符
• 有穷自动机是一种数学模型,具有离散的输入与输出, 系统可处于有穷状态中的任何一个
单词类别
编码
关键字
1
标识符
2
常数
3
运算符
4
分界符
5
3.3 词法分析程序的设计与实现
词法规则
状态图
词法分析程序
3.3.1 正规文法及其状态图
1.状态图:为识别单词而专门设计的有向图, 是设计词法分析程序的一种好途径。
结点代表状态,用圆圈表示,为非终结符
有向弧表示状态转移
弧上的标记表示在射出弧的结点状态下可能出现的输入字
DFA M所接受的语言为:L(M)={α|f(S, α)=Sn, Sn ∈Z}
DFA M所能接受的符号串的全体记为L(M)
DFA的状态图表示:
a1 a
第3章 有穷自动机共45页
(c)
空移环路的消除
• 找到空移环路之后,要消除它只要把空移环路上 所有结点q1,q2,…,qn合成一个结点,并消除它们 所有的弧。如果其中的某一个结点qi(i=1或 2,…,n)是开始结点或终止结点,则将此合并后的 新结点相应地设置为开始状态或终止状态。
例3.8
q0
a
q1
q2
则L(A)=L(B)={(ab)n|n1}, 所以自动机A,B等价。
非确定的有穷自动机NDFA
• 定义3.5 一个非确定的有穷自动机是一个五 元组,NDFA=Q,,t,Q0,F,其中Q 为状态的有穷非空集, 为有穷输入字母 表,t为Q 到Q的子集(多值映射), Q0Q是初始状态集,F Q为终止状态集。
例3.5 DFA A=({q0,q1}, {a,b}, t, q0, {q0} ), 其中 t(q0,a)=q1, t(q1,b)=q0.
DFA B=({q0’,q1’,q2’}, {a,b}, t’, q0’, {q2’} ), 其中 t’(q0’,a)=q1’, t’(q1’,b)=q2’, t’(q2’,a)=q1’.
有穷自动机DFA定义:
一个确定的有穷自动机(DFA)M是一个五元组:M=(Q, Σ,t,q0,F)其中
✓ 1 Q是一个有穷集,它的每个元素称为一个状态;
✓ 2 Σ是一个有穷字母表,它的每个元素称为一个输入符 号,所以也称Σ为输入符号字母表;
✓ 3 t是转换函数,是在Q×Σ→Q上的映射,即,如 t(qi, a)=qj,(qi,qjQ)就意味着,当前状态为qi,输入 符为a时,将转换为下一个状态qj,我们把qj称作qi的一 个后继状态;
例子
NDFA N=({S,P,Z},{0,1},t,{S,P}, {Z})
有穷自动机
其转移图为
有几个输入符号 都导致从q到p的转 移.
§2.2 确定型有穷自动机(DFA)
其转移表(函数)为:
3、 转移函数的扩充(处理串)
ˆ : Q Q
称为扩展转移函数。
描述从任何转态开始读任何输入序列时所发生的事情。 接受状态q和串w, 返回状态p。
§2.2 确定型有穷自动机(DFA)
⑷ 用标有Start的箭头指出的DFA的初始状态。
定义2.2.3 转移表,就是列出δ函数的表格,隐含地说明状态 集合和输入字母表。
§2.2 确定型有穷自动机(DFA)
例2 设计一个DFA满足如下情况:
Q q0 , q1, q2 , 0,1, F q1
(q0 ,0) q2 , (q1,0) q1, (q2 ,0) q2 , (q0 ,1) q0 , (q1,1) q1, (q2 ,1) q1,
对(q,a)∈Q×∑,δ(q,a)= {p1,p2,…,pm}表示A在状态q读入字符a, 可以选择地将状态变成p1、或者p2、…、或者pm ,并将读头向右移动一个带
方格而指向输入字符串的下一个字符。
§2.3 非确定型有穷自动机(NFA)
FA的状态转移图、FA的状态对应的等价类对NFA都有效。
读入0时,引导A到达下一个状态的字符串为x0, x0=2*(3*n+2)=3*2*n+4=3*(2*n+1)+1。所以δ(q2,0)= q1;
读入1时,引导A到达下一个状态的字符串为x1,
x1=2*(3*n+2)+1=3*2*n+4+1=3*(2*n+1)+2。所以,δ(q2,1)= q2 。
有几个输入符号 都导致从q到p的转 移.
§2.2 确定型有穷自动机(DFA)
其转移表(函数)为:
3、 转移函数的扩充(处理串)
ˆ : Q Q
称为扩展转移函数。
描述从任何转态开始读任何输入序列时所发生的事情。 接受状态q和串w, 返回状态p。
§2.2 确定型有穷自动机(DFA)
⑷ 用标有Start的箭头指出的DFA的初始状态。
定义2.2.3 转移表,就是列出δ函数的表格,隐含地说明状态 集合和输入字母表。
§2.2 确定型有穷自动机(DFA)
例2 设计一个DFA满足如下情况:
Q q0 , q1, q2 , 0,1, F q1
(q0 ,0) q2 , (q1,0) q1, (q2 ,0) q2 , (q0 ,1) q0 , (q1,1) q1, (q2 ,1) q1,
对(q,a)∈Q×∑,δ(q,a)= {p1,p2,…,pm}表示A在状态q读入字符a, 可以选择地将状态变成p1、或者p2、…、或者pm ,并将读头向右移动一个带
方格而指向输入字符串的下一个字符。
§2.3 非确定型有穷自动机(NFA)
FA的状态转移图、FA的状态对应的等价类对NFA都有效。
读入0时,引导A到达下一个状态的字符串为x0, x0=2*(3*n+2)=3*2*n+4=3*(2*n+1)+1。所以δ(q2,0)= q1;
读入1时,引导A到达下一个状态的字符串为x1,
x1=2*(3*n+2)+1=3*2*n+4+1=3*(2*n+1)+2。所以,δ(q2,1)= q2 。
第三章有穷自动机
第三章有穷自动机
例:将图示的DFA M最小化。
a
b
6
4
a
a
a
b
a
1
a
b
5a
7
b3
b
b
2 b
第三章有穷自动机
1、将M状态分为两个子集: P0=({1,2,3,4},{5,6,7})
2、{1,2,3,4}读入a后划为: P1=({1,2},{3,4},{5,6,7})
3、进一步划分: P2=({1,2},{3},{4},{5,6,7})
② 检查Ia 和Ib,看它们是否已在表的第一列 中出现,把未曾出现者之一填入下一空行 的第一列上,再计算该行的第二、第三列 上的Ia 和Ib。
第三章有穷自动机
③ 重复第二步,直至表中所有第二、第三列 上的元素全部再第一列出现为止。
因为M中的状态(子集)的个数是有限的,所 以上述三步必定在有限步骤内终止。
f(V,a)=U f(V,b)=Q U Q V
f(Q,a)=Q f(Q,b)=Q V U Q
QQQ
第三章有穷自动机
3.1.3 状态转换图
图中标有的为开始状态,标有双圈的状态为终止 状态。
若f(Ki,a)=Kj,则从状态结点Ki到状态Kj画标记为a
的弧。
a
q0
q1
a
bb
bb
a
q3
q2
a
第三章有穷自动机
➢ NFA有一个开始状态集,而DFA只有一个 开始状态。
➢ NFA的映射是QQ的子集,是一个多 值映射,而DFA的映射是QQ,是一 个单值映射。
➢ DFA是NFA的特例,对于每个NFA M,存 在一个DFA M’,使得L(M)=L(M’)。
例:将图示的DFA M最小化。
a
b
6
4
a
a
a
b
a
1
a
b
5a
7
b3
b
b
2 b
第三章有穷自动机
1、将M状态分为两个子集: P0=({1,2,3,4},{5,6,7})
2、{1,2,3,4}读入a后划为: P1=({1,2},{3,4},{5,6,7})
3、进一步划分: P2=({1,2},{3},{4},{5,6,7})
② 检查Ia 和Ib,看它们是否已在表的第一列 中出现,把未曾出现者之一填入下一空行 的第一列上,再计算该行的第二、第三列 上的Ia 和Ib。
第三章有穷自动机
③ 重复第二步,直至表中所有第二、第三列 上的元素全部再第一列出现为止。
因为M中的状态(子集)的个数是有限的,所 以上述三步必定在有限步骤内终止。
f(V,a)=U f(V,b)=Q U Q V
f(Q,a)=Q f(Q,b)=Q V U Q
QQQ
第三章有穷自动机
3.1.3 状态转换图
图中标有的为开始状态,标有双圈的状态为终止 状态。
若f(Ki,a)=Kj,则从状态结点Ki到状态Kj画标记为a
的弧。
a
q0
q1
a
bb
bb
a
q3
q2
a
第三章有穷自动机
➢ NFA有一个开始状态集,而DFA只有一个 开始状态。
➢ NFA的映射是QQ的子集,是一个多 值映射,而DFA的映射是QQ,是一 个单值映射。
➢ DFA是NFA的特例,对于每个NFA M,存 在一个DFA M’,使得L(M)=L(M’)。
第3章 有穷状态自动机 计算机专业 形式语言课件
因为a可能需要用来判定输入串的最初45个字符组成的子串是否满足语言的要当i45也就是m读到输入串的第45个字符时在a3的情况下m需要将a201111195532当i6也就是m读到输入串的第6个字符此时以前读到的第1个字符a就没有用了此时它要看a3是否成立如果成立m需要将a201111195632i4的考察并发现它满足语言的要求时m记下来的是i4此时它读入输入串的第i5个字符i5以前读到的第i个字符a就没有用了此时它要看ai1i53是否成立如果成立m需要将ai1下来
2021/4/26
19
3.2有穷状态自动机
• 例 3-2 构造一个DFA,它接受的语言为 {x000y|x,y∈{0,1}*}
q0——M的启动状态; q1—第—1个M0读;到了一个0,这个0可能是子串“000”的
q2—是—子M串在“q001后0”紧的接第2着个又0;读到了一个0,这个0可能
q3—符—串M含在有q子2后串紧“接00着0”又;读因到此了,一这个个0状,态发应现该输是入字终 止状态。
2021/4/26
7
3.1 语言的识别
• ⑷ 系统中有一个状态,它是系统的开始状 态,系统在这个状态下开始进行某个给定 句子的处理。
• ⑸ 系统中还有一些状态表示它到目前为止 所读入的字符构成的字符串是语言的一个 句子,把所有将系统从开始状态引导到这 种状态的字符串放在一起构成一个语言, 该语言就是系统所能识别的语言。
– 定义。 – ε-NFA与DFA的等价性。
• FA是正则语言的识别器
– 正则文法(RG)与FA的等价性。 – 相互转换方法。 – 带输出的有穷状态自动机。 – 双向有穷状态自动机。
2021/4/26
2
第3章 有穷状态自动机
• 重点:DFA的概念,DFA、NFA、ε-NFA 、 RG之间的等价转换思路与方法。
2021/4/26
19
3.2有穷状态自动机
• 例 3-2 构造一个DFA,它接受的语言为 {x000y|x,y∈{0,1}*}
q0——M的启动状态; q1—第—1个M0读;到了一个0,这个0可能是子串“000”的
q2—是—子M串在“q001后0”紧的接第2着个又0;读到了一个0,这个0可能
q3—符—串M含在有q子2后串紧“接00着0”又;读因到此了,一这个个0状,态发应现该输是入字终 止状态。
2021/4/26
7
3.1 语言的识别
• ⑷ 系统中有一个状态,它是系统的开始状 态,系统在这个状态下开始进行某个给定 句子的处理。
• ⑸ 系统中还有一些状态表示它到目前为止 所读入的字符构成的字符串是语言的一个 句子,把所有将系统从开始状态引导到这 种状态的字符串放在一起构成一个语言, 该语言就是系统所能识别的语言。
– 定义。 – ε-NFA与DFA的等价性。
• FA是正则语言的识别器
– 正则文法(RG)与FA的等价性。 – 相互转换方法。 – 带输出的有穷状态自动机。 – 双向有穷状态自动机。
2021/4/26
2
第3章 有穷状态自动机
• 重点:DFA的概念,DFA、NFA、ε-NFA 、 RG之间的等价转换思路与方法。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a
17
用ε-NFA模拟右线性文法
设右线性文法G=V,T,S,P ε-NFA M=Q,Σ,δ, q0 , F 构造如下: Q=V∪{qf }, q0={S}, F={qf }, Σ={ αT *-{ε} | 存在A→αBP或A→αP }
L(M), 即
L(M)={ wΣ*| δ*(q0,w)F }
a
3
DFA接受的语言(续)
例1 M= {q0, q1},{a}, δ,q0,{q1}
δ(q0, a)=q1, δ(q1, a)=q0
δ(q0,an
)q1, q0,
n为奇 数 n为偶 数
δ(q1,an
)q0, q1,
n为奇 n为偶
数 数
L(M)={a2k+1 | kN}
用M=Q,Σ,δ,q0,F 模拟 M=Q,Σ,δ,q0,F
Q=P(Q), q0={q0}
F={ AQ | A∩F≠} AQ 和 aΣ,
(A,a)(p,a)
pA
a
9
模拟实例
NFA M
δ0
1
→q0 {q0, q1} {q0}
q1 {q2}
*q2
DFA M
δ
0
→{q0} {q0, q1}
{q1}
Q=P(Q), q0=E(q0)
F ={AQ | A∩F≠}
AQ和aΣ,
(A ,a ) { r E (t)| p ,t使 p E (q )t , (p ,a )}
q A
构E集(q造计0)D算开Fδ始A的,M对值时每, 重不一复需个进要a行对Σ,不计直可算至达δ没的状有值态新,进然的行后子计对集算每出,做一现法个为如新止下出. :现从的q0子=
用ε-NFA模拟右线性文法 用右线性文法模拟理 设G是右线性文法, 则存在ε-NFA M 使得 L(M)=L(G); 设M是DFA, 则存在右线性文法G使 得L(G)= L(M). 定理 下述命题是等价的:
(1) L是正则语言; (2) 语言L能由右线性文法生成; (3) 语言L能由左线性文法生成; (4) 语言L能被DFA接受; (5) 语言L能被NFA接受; (6) 语言L能被ε-NFA接受.
{q2}
*{q2}
{q0,q1} {q0,q1,q2}
*{q0,q2} {q0,q1}
*{q1,q2}
{q2}
*{q0,q1,q2} {q0,q1,q2}
a
1 {q0}
{q0} {q0} {q0}
10
模拟实例 (续)
不可达状态:从初始状态出发永远不可能达到的状态
删去所有的不可达状态, 不会改变FA接受的语言.
a
6
NFA接受的语言
δ*:QΣ*→Q 递归定义如下: qQ, aΣ 和 wΣ* δ*(q,ε)={q}
δ*(q,wa)= ( p,a) p (q,w)
定义 wΣ*,如果δ*(q0 ,w)∩F≠, 则称M接受w. M接受的字符串的全体称作M接受的语言,记作 L(M), 即
L(M)={ wΣ*| δ*(q0 ,w)∩F≠ }
如M中的{q1},{q2},{q0,q2},{q1,q2}和都是不可达状态, 删去这些状态得到M
δ
0
1
→{q0} {q0, q1} {q0} {q0,q1} {q0,q1,q2} {q0} *{q0,q1,q2} {q0,q1,q2} {q0}
a
11
带ε转移的非确定型有穷自动机
ε转移: 不读如何符号, 自动转移状态. ε-NFA: δ:Q(Σ∪{ε})→P(Q)
定理 对每一个ε-NFA M 都存在DFA M 使得 L(M)=L(M)
DFA, NFA 和 ε-NFA 接受同一个语言类
a
12
用DFA模拟ε-NFA
设ε-NFA M=Q,Σ,δ,q0,F , qQ q的ε闭包E(q): 从q出发, 经过ε转移能够到达的所 有状态, 递归定义如下
(1) E(q)包含q; (2) 如果pE(q), 则δ(p, ε)E(q). 例3 ε-NFA M
11.2 有穷自动机
确定型有穷自动机(DFA) 非确定型有穷自动机(NFA) 带ε转移的NFA(ε-NFA)
a
1
确定型有穷自动机
定义 确定型有穷自动机(DFA)是一个有序5元组
M = Q,Σ,δ,q0,F , 其中 (1) 状态集合Q: 非空有穷集合
(2) 输入字母表Σ: 非空有穷集合
(3) 状态转移函数δ:QΣ→Q
a
4
非确定型有穷自动机
定义 非确定型有穷自动机 (NFA) M =〈 Q,Σ,δ,q0,F 〉,
其中 Q,Σ, q0, F 的定义与 DFA 的相同, 而 δ: Q Σ→P(Q)
a
5
实例
例2 一台NFA
δ
→q0
q1 *q2
q3 *q4
0 {q0 , q3} {q2} {q4} {q4} 1 {q0 , q1} {q2} {q2} {q4}
a
14
模拟实例——例3(续)
ε-NFA M
δ 01ε →q0 {q1} {q2}
q1 {q2} *q2 {q0}
DFA M
δ
01
→*{q0,q2} {q1}
{q1} {q0,q2}
εε
L(M)=L(M)={ (01)n | n0 }
a
15
11.3 有穷自动机和正则文法 的等价性
(4) 初始状态 q0Q (5) 终结状态集 FQ
控制器
a1 a2 … ai … an
a
2
DFA接受的语言
把δ扩张到QΣ*上 δ*:QΣ*→Q, 递归定义如下 qQ, aΣ和wΣ*
δ*(q,ε)=q δ*(q,wa)= δ(δ*(q,w),a)
定义 wΣ*,如果δ*(q0,w)F, 则称 M接受w. M接受的字符串的全体称作M接受的语言,记作
a
7
例2 (续)
w 1 10 101 1011 10110
δ*(q0 ,w) {q0, q1} {q0, q3} {q0, q1}
{q0, q1 , q2} {q0, q2 , q3}
L(G) = { x00y, x11y | x,y{0,1}*}
a
8
DFA与NFA的等价性
定理 对每一个NFA M 都存在DFA M 使得 L(M)=L(M )
δ0 1 ε
q
E(q)
→q0 {q1} {q2}
q0
{q0,q2}
q1 {q2}
q1
{q1}
*q2 {q0}
q2
{q0,q2}
a
13
用DFA模拟ε-NFA(续)
模拟的方法与用DFA模拟不带ε的NFA的方法基本相同, 只是要用E(q)代替q.
用DFA M=Q,Σ,δ,q0,F 模拟ε-NFA M=Q,Σ,δ,q0,F