第三章有穷自动机优秀课件.ppt
《第三章有穷自动机优秀课件.ppt》由会员分享,可在线阅读,更多相关《第三章有穷自动机优秀课件.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章有穷自动机第1页,本讲稿共74页3.1 有穷自动机的形式定义有穷自动机的形式定义 有穷状态自动机有穷状态自动机(Finite-stateAutomata或简称或简称FA)在识别功能上与正规在识别功能上与正规文法类等价,而且也等价于一个特殊类型文法类等价,而且也等价于一个特殊类型的语言产生器的语言产生器正规表达式正规表达式(RegularExpression)。因此许多简单的程序语言。因此许多简单的程序语言都可由都可由FA所识别。事实上,它是描述词法所识别。事实上,它是描述词法的有效工具,也是进行词法分析的主要理的有效工具,也是进行词法分析的主要理论基础。论基础。第2页,本讲稿共74页有穷
2、自动机分为两类:有穷自动机分为两类:(1)确定的有穷自动机)确定的有穷自动机(DeterministicFiniteAutomata简称简称DFA)(2)不确定的有穷自动机)不确定的有穷自动机(NondeterministicFiniteAutomata简称简称NFA)。第3页,本讲稿共74页3.1.1确定有穷自动机的形式定义确定有穷自动机的形式定义 一个一个DFAM(K,f,S,Z),其中,其中()K是一个有限状态集合。是一个有限状态集合。()是一个字母表,它的每个元素称为一个输入字符。是一个字母表,它的每个元素称为一个输入字符。()S K,S称为初始状态称为初始状态,唯一。唯一。()Z K
3、,Z称为终态集合称为终态集合,终态也称可接受状态或结终态也称可接受状态或结束状态。束状态。()f是转换函数,是一个从是转换函数,是一个从K到到K的单值映射。的单值映射。f(ki,a)kj(ki,kj K,a)kj称为称为ki的一个后继状态。的一个后继状态。第4页,本讲稿共74页l确定性的体现:初始状态唯一;确定性的体现:初始状态唯一;转换函数转换函数为单值映射。为单值映射。例:例:设设DFAM=(S,U,V,Q,a,b,f,S,Q)其中其中f(S,a)U,f(S,b)Vf(U,a)Q,f(U,b)Vf(V,a)U,f(V,b)Qf(Q,a)Q,f(Q,b)Q因为(因为(1)初始状态唯一是)初始
4、状态唯一是S,(2)每个转换函数均为单值映射。)每个转换函数均为单值映射。所以该所以该FA为确定有穷自动机。为确定有穷自动机。第5页,本讲稿共74页3.1.2状态转换表状态转换表 nDFA的映射关系可以由一个矩阵表示,矩阵的映射关系可以由一个矩阵表示,矩阵的行标表示状态,列标表示输入字符,矩阵的行标表示状态,列标表示输入字符,矩阵元素表示元素表示f(s,a)的值,这个矩阵称为状态转的值,这个矩阵称为状态转换表。换表。f(S,a)Uf(S,b)Vf(U,a)Qf(U,b)Vf(V,a)Uf(V,b)Qf(Q,a)Qf(Q,b)QabSUVUQVVUQQQQ第6页,本讲稿共74页q1aaabbab
5、bq2q3q03.1.3状态转换图状态转换图图中标有图中标有的为开始状态,标有双圈的状态为终止状态。的为开始状态,标有双圈的状态为终止状态。若若f(Ki,a)=Kj,则从状态结点,则从状态结点Ki到状态到状态Kj画标记为画标记为a的弧。的弧。第7页,本讲稿共74页3.1.4自动机的等价性自动机的等价性为了讨论自动机的等价性,先对为了讨论自动机的等价性,先对DFA中的映射进行扩充。中的映射进行扩充。n扩充的转换函数扩充的转换函数fn设设Q K,函数,函数f(Q,)=Q,即如果输入字,即如果输入字符是空串,则仍停留在原来的状态上。符是空串,则仍停留在原来的状态上。n对对 Q K,T,t1*,f(Q
6、,Tt1)=f(f(Q,T),t1)该定义是一个递归定义,说明当自动机处该定义是一个递归定义,说明当自动机处在状态在状态Q且面临某个输入串且面临某个输入串Tt1时,则先应时,则先应用函数用函数f(Q,T)=P,然后应用函数,然后应用函数f(P,t1)。第8页,本讲稿共74页lDFA的确定性表现在转换函数的确定性表现在转换函数f:KK是一个单值函数,即对任何状态是一个单值函数,即对任何状态k K和输和输入符号入符号a,f(k,a)唯一地确定了下一个状唯一地确定了下一个状态,从状态转换图来看,若字母表态,从状态转换图来看,若字母表 含有含有n个输入字符,那么任何一个状态结点最多个输入字符,那么任何
7、一个状态结点最多有有n条弧射出,且每条弧以一个不同的输条弧射出,且每条弧以一个不同的输入字符标记。入字符标记。第9页,本讲稿共74页l自动机接受字符串自动机接受字符串x如果对于某一自动机如果对于某一自动机M=(K,f,S,Z),x*,有,有f(S,x)=P,且,且P Z,则,则x为该自为该自动机动机M所接受(识别),即自动机从开始所接受(识别),即自动机从开始状态开始,在读完全部输入串以后,自动状态开始,在读完全部输入串以后,自动机恰恰到达终止状态,则该输入串能被该机恰恰到达终止状态,则该输入串能被该自动机所接受。自动机所接受。第10页,本讲稿共74页例:例:DFAM=(S,A,B,C,0,1
8、,S,S),且且 定义为定义为(S,0)=B,(S,1)=A,(A,0)=C,(A,1)=S,(B,0)=S,(B,1)=C,(C,0)=A,(C,1)=B状态图表示,矩阵表示:状态图表示,矩阵表示:第11页,本讲稿共74页自动机处理字符串自动机处理字符串110101和和11101的轨迹的轨迹(S,110101)=(S,1),10101)=(A,10101)=(A,1),0101)=(S,0101)=(S,0),101)=(B,101)=(B,1),01)=(C,01)=(C,0),1)=(A,1)=S(接受接受)(S,11101)=(S,1),1101)=(A,1101)=(A,1),101
9、)=(S,101)=(S,1),01)=(A,01)=(A,0),1)=(C,1)=B(拒绝拒绝)第12页,本讲稿共74页l所有为自动机所有为自动机M所能接受的串组成一个集所能接受的串组成一个集合,称这个集合为自动机合,称这个集合为自动机M所能接受的语所能接受的语言,用言,用L(M)表示:表示:L(M)=t|f(S,t)Z,t*l对于任何两个有穷自动机对于任何两个有穷自动机M和和M,如果,如果L(M)=L(M),则称,则称M与与M是等价的。是等价的。第13页,本讲稿共74页3.1.5非确定有穷自动机非确定有穷自动机nNFA定义定义一个不确定的有穷自动机一个不确定的有穷自动机NFAM是一个是一个
10、五元组:五元组:M=(K,f,S,Z)一个含有一个含有m个状态和个状态和n个输入字符的个输入字符的NFA可表示为一张状态转换图,该图含有可表示为一张状态转换图,该图含有m个个状态结,每个结可射出若干条状态结,每个结可射出若干条箭弧与别的箭弧与别的结点相连接,每条弧用结点相连接,每条弧用*中的一个字(不中的一个字(不一定要不同的字,且可以为空字)作标记一定要不同的字,且可以为空字)作标记(称输入字),整个图至少含有一个初态(称输入字),整个图至少含有一个初态结以及若干个终态结。结以及若干个终态结。第14页,本讲稿共74页lNFA与与DFA的区别的区别NFA有一个开始状态集,而有一个开始状态集,而
11、DFA只有一个只有一个开始状态。开始状态。NFA的映射是的映射是QQ的子集,是一个多的子集,是一个多值映射,而值映射,而DFA的映射是的映射是QQ,是一,是一个单值映射。个单值映射。DFA是是NFA的特例,对于每个的特例,对于每个NFAM,存,存在一个在一个DFAM,使得,使得L(M)=L(M)。第15页,本讲稿共74页l对于对于*中的任何一个串中的任何一个串t,如果存在一条从,如果存在一条从某一初态结到某一终态结的道路,且这条某一初态结到某一终态结的道路,且这条道路上的所有弧的标记依序连接成的串等道路上的所有弧的标记依序连接成的串等于于t,则称,则称t可为可为NFAM所识别(读出或接受)所识
12、别(读出或接受)。l若若M的某些结既是初态结,又是终态结,或的某些结既是初态结,又是终态结,或者存在一条从某个初态结到某个终态结的者存在一条从某个初态结到某个终态结的 道路,则空字可为道路,则空字可为M所接受。所接受。第16页,本讲稿共74页例:例:NFAM=(0,1,2,3,4,a,b,f,0,2,4)f(0,a)=0,3f(2,b)=2f(0,b)=0,1f(3,a)=4f(1,b)=2f(4,a)=4f(2,a)=2f(4,b)=4可用状态图或矩阵表示:可用状态图或矩阵表示:03412aabba,ba,ba,b第17页,本讲稿共74页3.2NFA到到DFA的转换的转换通过下述步骤可将一个
13、通过下述步骤可将一个NFA转换成等价转换成等价的的DFA:寻找并消除空移环路;寻找并消除空移环路;消除余下的空移;消除余下的空移;确定化。确定化。第18页,本讲稿共74页3.2.1空移环路的寻找和消除空移环路的寻找和消除第19页,本讲稿共74页3.2.2消除空移消除空移 n下面给出一个消除空移的算法。下面给出一个消除空移的算法。给定从状态给定从状态A到到B的一个空移的一个空移(即从状态即从状态A到到B经由经由 连线的一个转换,换言之,连线的一个转换,换言之,t(A,)=,B,)。置。置t(A,)=,对每个,对每个a和和Q,如果,如果Q t(B,a),则将,则将Q加到加到t(A,a)。如果。如果
14、A是开始状态,则将是开始状态,则将B也加入开始状态集。也加入开始状态集。如果如果B是终止状态,则将是终止状态,则将A也加入终止状态也加入终止状态集。集。第20页,本讲稿共74页3.2.3利用状态转换表消除空移利用状态转换表消除空移 n利用利用FA的状态转换表,可以很容易地消除的状态转换表,可以很容易地消除空移。这种方法的基本步骤是:空移。这种方法的基本步骤是:n首先,找出直接经由一个空移到达某个终首先,找出直接经由一个空移到达某个终态的所有状态。每当找到这样一个状态,态的所有状态。每当找到这样一个状态,便将它标记为终态。便将它标记为终态。n然后,考虑消除与未被标记为终态的那些然后,考虑消除与未
15、被标记为终态的那些状态相关的空移。对表中每一个具有射出状态相关的空移。对表中每一个具有射出连线的状态继续按上述方式处理,直到状连线的状态继续按上述方式处理,直到状态转换表不再变动为止。态转换表不再变动为止。n最后从表中删除最后从表中删除列和没有任何元素的空行,列和没有任何元素的空行,便得到一个不含空移的状态转换表。便得到一个不含空移的状态转换表。第21页,本讲稿共74页3.2.4确定化确定化造表法造表法 n造表法是一种简单而有效的确定化方法。造表法是一种简单而有效的确定化方法。n定义:设定义:设NFAM=(Q,t,Q0,F),假,假定定I是是M中状态集的一个子集,定义中状态集的一个子集,定义
16、_closure(I)如下:如下:n若若q I,则,则q_closure(I);n若若q_closure(I),q 是由是由q出发经多条出发经多条 弧到达的状态,则弧到达的状态,则q_closure(I)。第22页,本讲稿共74页l定义:假定定义:假定I是是NFAM中状态集的一个子集,中状态集的一个子集,a,定义,定义Ia=_closure(J)其中其中J是所有那些可从子集是所有那些可从子集I中的任一状态出中的任一状态出发,经过一条发,经过一条a连线连线(跳过跳过a连线前的连线前的连线连线)而到达的状态而到达的状态(结结)的全体。的全体。l造表法的具体步骤:造表法的具体步骤:假定给定的假定给定
17、的NFAM中中 仅含两个符号仅含两个符号a,b。可用如下方法将。可用如下方法将M确定化:采用造表的确定化:采用造表的方式,该表的每一行有三列方式,该表的每一行有三列(若若 中含有中含有n个个符号,则该表有符号,则该表有n+1列列),第一列记为,第一列记为I,第,第二、三列分别记为二、三列分别记为Ia,Ib。第23页,本讲稿共74页置该表的第一行第一列为置该表的第一行第一列为 _closure(Q0),即一列包含即一列包含M初态集初态集Q0的的_闭包。然后计闭包。然后计算它的算它的Ia和和Ib,分别填入第二、三列上,一分别填入第二、三列上,一般,若某一行的第一列上的般,若某一行的第一列上的I已确
18、定,便可已确定,便可根据前述定义求出这一行的第二、第三列根据前述定义求出这一行的第二、第三列上的上的Ia和和Ib。检查检查Ia和和Ib,看它们是否已在表的第一列,看它们是否已在表的第一列中出现,把未曾出现者之一填入下一空行中出现,把未曾出现者之一填入下一空行的第一列上,再计算该行的第二、第三列的第一列上,再计算该行的第二、第三列上的上的Ia和和Ib。第24页,本讲稿共74页重复第二步,直至表中所有第二、第三列重复第二步,直至表中所有第二、第三列上的元素全部再第一列出现为止。上的元素全部再第一列出现为止。因为因为M中的状态中的状态(子集子集)的个数是有限的,所的个数是有限的,所以上述三步必定在有
19、限步骤内终止。以上述三步必定在有限步骤内终止。将由上述过程得到的最终形式的表看作一将由上述过程得到的最终形式的表看作一个状态转换表,即把其中第一列中的元素个状态转换表,即把其中第一列中的元素作为状态,把作为状态,把Ia,Ib分别看作是输入符号分别看作是输入符号a,b,把其余信息看作是状态转换函数之值。,把其余信息看作是状态转换函数之值。这个表唯一地刻画了一个确定的有穷状态这个表唯一地刻画了一个确定的有穷状态自动机自动机M,其初态是该表第一行第一列的,其初态是该表第一行第一列的元素,其终态是该表中所有那些含有原终元素,其终态是该表中所有那些含有原终态的元素。可以证明,这个态的元素。可以证明,这个
20、DFAM 和和NFAM是等价的。是等价的。第25页,本讲稿共74页例:有一例:有一NFAM,用造表法使其确定化。,用造表法使其确定化。bbaab01253467891001234bbbbbaaaaa第26页,本讲稿共74页3.2.5确定的有穷自动机的化简确定的有穷自动机的化简 n所谓一个确定的有穷自动机所谓一个确定的有穷自动机M的化简是指:的化简是指:寻找一个状态数比寻找一个状态数比M少的少的DFAM,使得使得L(M)=L(M),可通过消除多余状态和合并,可通过消除多余状态和合并等价状态而转换成一个最小的与之等价的等价状态而转换成一个最小的与之等价的有穷自动机。有穷自动机。n消除多余状态消除多
21、余状态多余状态是指从该自动机的开始状态出发,多余状态是指从该自动机的开始状态出发,任何输入串也不能到达的状态。任何输入串也不能到达的状态。第27页,本讲稿共74页ABC第28页,本讲稿共74页3.2.6合并等价状态合并等价状态 n等价状态等价状态若若s和和t是是M的两个不同状态,称的两个不同状态,称s和和t等等价:如果从状态价:如果从状态s出发能读出某个字出发能读出某个字 而停而停于终态,同样从于终态,同样从t出发也能读出同一个字出发也能读出同一个字 而停于终态;反之若从而停于终态;反之若从t出发能读出某个字出发能读出某个字 而停于终态,则从而停于终态,则从s出发也能读出同一个出发也能读出同一
22、个字字 而停于终态。而停于终态。n如果如果DFAM的两个状态的两个状态s和和t不等价,则称不等价,则称这两个状态是可区别的。这两个状态是可区别的。第29页,本讲稿共74页lDFA中,状态中,状态s和和t等价的条件是:等价的条件是:一致性条件:状态一致性条件:状态s和和t必须同时为可接受必须同时为可接受状态状态(终态终态)或不可接受状态或不可接受状态(非终态非终态)。蔓延性条件:对于所有输入符号,状态蔓延性条件:对于所有输入符号,状态s和和t必须转换到等价的状态里。必须转换到等价的状态里。l分割法合并等价状态分割法合并等价状态一个一个DFAM的状态化简过程就是把的状态化简过程就是把M的状态集划分
23、成一些不相交的子集,使得的状态集划分成一些不相交的子集,使得任何不同的两子集的状态都是可区分的,任何不同的两子集的状态都是可区分的,而同一子集的任何两个状态都是等价的。而同一子集的任何两个状态都是等价的。最后,从每个子集选出一个代表最后,从每个子集选出一个代表(代表该子代表该子集集),同时消去其它等价状态。,同时消去其它等价状态。第30页,本讲稿共74页l对对M的状态集的状态集S进行划分的步骤:进行划分的步骤:把把S的终态与非终态分开,分成两个子集,的终态与非终态分开,分成两个子集,形成基本划分形成基本划分,属于这两个不同子集的状,属于这两个不同子集的状态是可区别的。态是可区别的。假定某个时候
24、假定某个时候 已含已含m个子集,记个子集,记=I(1),I(2),I(m)且属于不同子集的状态是可且属于不同子集的状态是可区别的,再检查区别的,再检查 中的每个中的每个I能否进一步划能否进一步划分,对于某个分,对于某个I(i),令,令I(i)=S1,S2,Sk,若存在一个输入字符使得若存在一个输入字符使得move(I(i),a)不包不包含在现行含在现行 的某一子集的某一子集I(i)中,则将中,则将I(i)一分一分为二。为二。第31页,本讲稿共74页例:将图示的例:将图示的DFAM最小化。最小化。1362457aaaaaaabbbbbbb第32页,本讲稿共74页1、将、将M状态分为两个子集:状态
25、分为两个子集: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)4、考察考察5,6,7,将将P2划分为:划分为:P3=(1,2,3,4,5,6,7)P3不可再划分,从而不可再划分,从而1与与2,6与与7等价。等价。第33页,本讲稿共74页13645aaabbbbba第34页,本讲稿共74页3.2.7从化简后的从化简后的DFA到程序表示到程序表示 n识别标识符的识别标识符的DFA(见图(见图(a))需改为图)需改为图(b)所示状态,其中,所示状态,其中,l代表字母,代
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 有穷 自动机 优秀 课件
限制150内