收藏 分享(赏)

编译原理第二章_(4).ppt

上传人:hwpkd79526 文档编号:8431031 上传时间:2019-06-26 格式:PPT 页数:35 大小:714KB
下载 相关 举报
编译原理第二章_(4).ppt_第1页
第1页 / 共35页
编译原理第二章_(4).ppt_第2页
第2页 / 共35页
编译原理第二章_(4).ppt_第3页
第3页 / 共35页
编译原理第二章_(4).ppt_第4页
第4页 / 共35页
编译原理第二章_(4).ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、复习,一.确定有限自动机 确定有限自动机M为一个五元组:M = ( S , , s0 ,f ,Z ),其中: S:是一个有穷状态集,它的每个元素称为一个状态; :是一个有穷字母表,它的每个元素称为一个输入字符; s0S:是唯一的一个初始状态(开始状态); F:是状态转换函数:S S,且单值函数; ZS:是终止状态集(可接受状态集、结束状态集)。,二、 非确定有限自动机NFA,一个非确定有限自动机(NFA)M是一个五元组:M = ( S, , S0, f, Z ),其中: S:是一个有限集合,它的每个元素称为一个状态; :是一个有穷字母表,它的每个元素称为一个输入字符; S0: S0 S , 是

2、非空初始状态集; f:是状态转换函数,它是一个从S () 到S 的子集的映射,即S () 2s ; Z: Z S ,是终止状态集。,三.DFA的两种表示方式,状态转换图 :用有向图表示自动机,DFA M=( S,U,V,Q, a,b, f, S, Q),其中 f 定义为:f ( S, a )=U f ( V, a )=Uf ( S, b )=V f ( V, b )=Qf ( U, a )=Q f ( Q, a )=Qf ( U, b )=V f ( Q, b )=Q,状态转换图,a,b,DFA接受的字符串,对于*中的任何字符串t,若存在一条从初始结点到某一终止结点的路径,且这条路上所有弧上的

3、标记符连接成的字符串等于t,则称t可为DFA M所接受(识别)。 若DFA M的初始状态同时又是终止状态,则空字符串可为DFA M所接受(识别)。 DFA M 所能接受的字符串的全体记为L(M).,状态转换矩阵:用二维数组描述DFA,DFA M=( S,U,V,Q, a,b, f, S, Q),其中f 定义为:f ( S, a )=U f ( V, a )=Uf ( S, b )=V f ( V, b )=Qf ( U, a )=Q f ( Q, a )=Qf ( U, b )=V f ( Q, 1 )=Q,五、DFA的实现1,状态转换矩阵的形式:1.当前状态State置为初始状态;2.读一个

4、字符 CurrentChar;3.如果CurrentCharEof并且T(State,CurrentChar)error,则当前状态转为新的状态:State = T(State,Current),读下一字符 CurrentChar ;重复第3步工作。4.如果当前字符为Eof并且当前状态属于终止状态,则接受当前字符串,程序结束;否则报错。,b,DFA的实现2,状态转换图的形式:每个状态对应一个带标号的switch语句转向边对应goto语句 1.非终止状态对应的switch语句,Li: switch ( CurrentChar ) case a :goto Lj;case b : goto Lk;

5、default : Error( ); ,2.终止状态对应的switch语句,i,j,k,Li: seitch ( CurrentChar ) case a : goto Lj;case b : goto Lk;case Eof : Accept;default : Error( ); ,a,b,例:,L0: switch ( CurrentChar ) case a : goto L1;case a : goto L0; case b : goto L0;default : Error( ); ,2.3.3 NFA到DFA的转换,定义2.26 有限自动机的等价对于给定的有限自动机M1和M2,

6、如果有 L(M1) = L(M2),则称有限自动机M1和M2等价。 定理2.5 对于每一个非确定有限自动机M,存在一个确定有限自动机M,使得L(M)=L(M)。 NFA确定化由NFA构造出与其等价的DFA称为NFA确定化。,两个重要函数: 状态集I的闭包,设I是NFA M状态集的子集,定义I的闭包_CLOSURE(I)为: 若q I ,则q _CLOSURE(I)。 若q I,那么从q出发经任意条弧而能到达的任何状态q都属于_CLOSURE(I)。,例: _CLOSURE(1)=1,2, 状态集I的a转换,若I=S1, , Sm 是NFA的状态集的一个子集(状态子集),a, 则定义:Ia =

7、_CLOSURE(J ) 其中:J = f (S1,a) f (S2,a) f(Sm,a),例: 1,2a =_CLOSURE(J )J=f(1,a) f(2,a)=4,51,2a =_CLOSURE(4,5 )=4,5,7,6,2,NFA A到DFA A的转换过程(确定化):,1.令I0= _CLOSURE(S0 )作为DFA的初始状态,其中S0 为NFA初始状态集。 2.若DFA中的每个状态都经过本步骤处理过.则转步骤3;否则任选一个未经本步骤处理的DFA状态Si,对每一个a,进行下述处理: 计算 Sj = Sia 若Sj ,则令f(Si,a)= Sj ,若Sj不为当前DFA的状态,则将其

8、作为DFA的一个状态。转步骤2。 3.若S =S1,Sn是A的一个状态,且存在一个Si是A的终止状态,则令S为A的终止状态。,例题,例1:将如下的NFA转化为DFA。,转化的结果如下:,转化过程:,_CLOSURE(S0 )= _CLOSURE(1 )=1,2,(1,2)a= _CLOSURE(4,5 )=4,5,7,6,2,(1,2)b= _CLOSURE(3)=3,8,4,5,7,6,2a= _CLOSURE()= ,4,5,7,6,2b= _CLOSURE(9,3)= 9,3,8,3.8a= _CLOSURE(9)= 9,3.8b= _CLOSURE()= ,3.9,8a= _CLOSU

9、RE(9)= 9,3.9,8b= _CLOSURE()= ,9b= _CLOSURE()= ,9a= _CLOSURE()= ,算法,1,2,4,5,7,6,2,3,8,3,8,4,5,7,6,2,9,3,8,9,3,8,9,9,9,*,*,*,2,1,4,3,1,2,4,5,7,6,2,3,8,3,8,4,5,7,6,2,9,3,8,9,3,8,9,9,9,*,*,*,5,2,3,4,5,5,例2:将如下的NFA转化为DFA,x,5,1,-closure(x) =x,5,1,5,1,3,5,1,4,5,1,3,2,6,y,5,1,4,5,1,3,5,1,4,2,6,y,5,1,3,2,6,y

10、,5,1,4, 6,y,5,1,3, 6,y,5,1,4,2,6,y,5,1,3, 6,y,5,1,4,2,6,y,5,1,3,2,6,y,5,1,4, 6,y,例2:将如下的NFA转化为DFA,x,5,1a =5,3,1,x,5,1b =5,4,1,5,1,3a =5,3,2,1,6,y,5,1,3b =5,4,1,5,1,4a =5,3,1,5,1,4b =5,4,2,1,6,y,5,1,3,2,6,ya =5,3,2,6,1, y,5,1,3,2,6,yb =5,4, 6,1, y,包含原终 态的状态 作为新的 终态,2.3.4 DFA的化简,DFA的化简的必要性,等价状态 定义1 设D

11、FA M 的两个状态q1和q2 , 如果对任意输入的符号串x,从q1和q2出发,总是同时到达接受状态或拒绝状态中,则称q1和q2是等价的。如果q1和q2不等价,则称q1和q2是可区分的。 定义1 对DFA中的两个状态q1和q2 ,如果将它们看作是初始状态,所接受的符号串相同,则定义q1和q2是等价的。 注意: DFA的终止状态和非终止状态不是等价的。,无关状态从有限自动机的初始状态开始,任何输入序列都不能到达的那些状态称为无关状态。 最小的DFA(化简了的DFA)如果DFA M 没有无关状态,也没有彼此等价的状态,则称DFA M 是最小的(或规约的)。 状态分离法,状态分离法,状态分离法的目标

12、:SS = SS1SS2SSn其中: SSi SSj= (i j时),并且每个SSi中的所有状态均等价。 状态集SSi对a(a)是不可区分的: 若SSi中元素对输入符a都转到相同的状态集中. 状态集SSi对a(a)是可区分的: 若SSi中元素对输入符a转到不同的状态集中. 状态集SSi对a(a)进行划分: 若SSi中元素对输入符a转到不同的状态集中,则分别将转到相同集合中的状态组成一个新的状态集.,例: 1,8 2,5 3,6 4,7 2,5 对b是不可区分的; 3,6 对c是不可区分的; 1,8 对a是可区分的; 1,8 对a进行划分: 1 8 ,b,a,状态分离法算法,STEP1 求初始划

13、分:SS=非终止状态集终止状态集。 STEP2 若SS中的每个子集对每一个a(a)都是不可区分的,则转STEP3;否则对可分的子集按相应的a(a)进行划分。转STEP2 。 STEP3 每个子集中元素合并为一个状态,只含终态的集合为一个终态,对边作相应的调整。,例: 对下图所示的DFA M进行最小化。,STEP1.求初始划分:SS=A,B,C,DE,SS=A,B,C,DE=A,B,CDE,A,B,C 是否是可区分的?,SS=A,B,C,DE=A,B,CDE=A,CBDE,E,STEP2. A,B,C,D 是否是可区分的?,A, C 是否是可区分的?,最小化过程:,a,C,SS= A,CBDE= ABDE,STEP3.,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报