确定有限自动机的化简
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Байду номын сангаас
三、举例
将下面不确定有限自动确定化并化简成最简型
a a,b ε S 5 ε b 4 1 a 3 b
2 ε
a,b 6 ε H
确定化
化简 1、π: 1={0,1,2}, 2={3,4,5, 、 : , , , , , , 2、求每个状态接收a的后继状态,如下: 、求每个状态接收 的后继状态 如下: 的后继状态, 得如下分划π: 得如下分划 : 1={0,2}, 2={1}, 3={3, , , , , 4,5,6}。 , , 。 3、求每个状态接收 的后继状态,如下: 的后继状态, 、求每个状态接收b的后继状态 如下:
二、确定有限自动机的化简
1、令A1=F(终止状态集)、A·=S-A1。 则A1与A2之状态两两不等价。 2、设已构造出A1、A2、……、Ak,对任 意的i,j,Ai与Aj中状态两两不等价,对任意的符 号a,则δ-1(Ai,a)∩Aj,i,j=1,2,3,……,k中任两个 状态子集中状态是两两不等价。 3、重复2直到状态集数不增加止,则每一 个状态集中任两个状态等价。将等价状态合并 成一个状态,即为简化的DFA。
识别规则的表示: 识别单词的正规表达式 {动作子程序} 例: while {return (1,null)} {val=int(id); return (17,val)}
digit(digit)*
程序设计语言的Lex描述
letter[A-Za-z] digit [0-9] %% 1 while {return (1,null)} 2 do {return (2,null)} 3 If {return (3,null)} …… 16 letter(letter|digit)* {if(keyword(id)==0) return (16,id) else return (keyword(id),null)}
6}。 。
得如下分划π: 得如下分划 : 1={0}, , 4={3,4,5,6}。 , , , 。
2={1}, ,
3={2}, ,
简化后的确定有限自动机如下: 简化后的确定有限自动机如下:
a 0 b a 2
1 b
a
3 b
词法分析器自动生成
Lex语言定义: 辅助定义式 %% 识别规则 %% 用户子程序
确定有限自动机的化简
一、准备知识
引论一:s1、s2是S中的两个等价状态,a 是符号表Σ中的一个符号,如果δ(s1,a)存在, 则δ(s2,a)亦存在,且δ(s1,a)与δ(s2,a)等价。 引论二:s1、s2是S中的两个状态,对Σ中 任意符号a,如果δ(s1,a)存在,则δ(s2,a)必存在 且二者等价,则s1与s2等价。 引论三:如果A、B是S中的两个子集,且 A与B中状态两两不等价,则对Σ中的一个符号a, δ-1(A,a)与δ-1(B,a)中状态两两不等价。
三、举例
将下面不确定有限自动确定化并化简成最简型
a a,b ε S 5 ε b 4 1 a 3 b
2 ε
a,b 6 ε H
确定化
化简 1、π: 1={0,1,2}, 2={3,4,5, 、 : , , , , , , 2、求每个状态接收a的后继状态,如下: 、求每个状态接收 的后继状态 如下: 的后继状态, 得如下分划π: 得如下分划 : 1={0,2}, 2={1}, 3={3, , , , , 4,5,6}。 , , 。 3、求每个状态接收 的后继状态,如下: 的后继状态, 、求每个状态接收b的后继状态 如下:
二、确定有限自动机的化简
1、令A1=F(终止状态集)、A·=S-A1。 则A1与A2之状态两两不等价。 2、设已构造出A1、A2、……、Ak,对任 意的i,j,Ai与Aj中状态两两不等价,对任意的符 号a,则δ-1(Ai,a)∩Aj,i,j=1,2,3,……,k中任两个 状态子集中状态是两两不等价。 3、重复2直到状态集数不增加止,则每一 个状态集中任两个状态等价。将等价状态合并 成一个状态,即为简化的DFA。
识别规则的表示: 识别单词的正规表达式 {动作子程序} 例: while {return (1,null)} {val=int(id); return (17,val)}
digit(digit)*
程序设计语言的Lex描述
letter[A-Za-z] digit [0-9] %% 1 while {return (1,null)} 2 do {return (2,null)} 3 If {return (3,null)} …… 16 letter(letter|digit)* {if(keyword(id)==0) return (16,id) else return (keyword(id),null)}
6}。 。
得如下分划π: 得如下分划 : 1={0}, , 4={3,4,5,6}。 , , , 。
2={1}, ,
3={2}, ,
简化后的确定有限自动机如下: 简化后的确定有限自动机如下:
a 0 b a 2
1 b
a
3 b
词法分析器自动生成
Lex语言定义: 辅助定义式 %% 识别规则 %% 用户子程序
确定有限自动机的化简
一、准备知识
引论一:s1、s2是S中的两个等价状态,a 是符号表Σ中的一个符号,如果δ(s1,a)存在, 则δ(s2,a)亦存在,且δ(s1,a)与δ(s2,a)等价。 引论二:s1、s2是S中的两个状态,对Σ中 任意符号a,如果δ(s1,a)存在,则δ(s2,a)必存在 且二者等价,则s1与s2等价。 引论三:如果A、B是S中的两个子集,且 A与B中状态两两不等价,则对Σ中的一个符号a, δ-1(A,a)与δ-1(B,a)中状态两两不等价。