有限自动机、正规式

本文介绍了有限自动机的概念,包括其构成元素(状态集、输入字母表、转换函数、初态和终态),并通过示例说明了如何构建状态转换图。同时讨论了正规式作为有限自动机的另一种表达形式及其应用。
摘要由CSDN通过智能技术生成

有限自动机

        形式:M=(S,Σ,δ,S0,Z)

S:有限集,每个元素为一个状态;

Σ:有穷字母表,每个元素为一个输入字符;

δ:转换函数,单值对照;

S0:属于S是唯一初态;

Z:一个终极态,可以空缺不写,一般图中双圈或者粗圈为终极态;

有限自动机可以用状态转换图表示

例:

        设有限状态自动机:DFA=({S,A,B,C,f},{1,0},δ,S,{f}),

        其中:δ(S,0)=B表示从元素S开始输入数字0可以到达元素B;δ(S,1)=A,δ(A,0)=f,δ(A,1)=C,δ(B,0)=C,δ(B,1)=f,δ(C,0)=f,δ(C,1)=f。

        根据上述关系可得状态转换图如下:

 例:

        下图所示为一个有限自动机(其中,A是初态,C是终态),该自动机可以识别(C)。

                A:0000        B:1111        C:0101        D:1010

        该自动机可以识别的意思是,输入某串数字,可以从初态A到达终态C;

选项A:0000

        含义是从初态A开始输入0000可以到达终态C,从初态A开始输入0到达B,再输入0在B循环,继续输入0还是在B循环,无法到达终态C,故排除A;

选项B:1111

        含义是从初态A开始输入1111可以到达终态C,从初态A开始输入1在A循环,继续输入1还是在A循环、无法到达终态C,故排除B;

选项C:0101

        含义是从初态A开始输入0101可以到达终态C,从初态A开始输入0到达B,再输入1从B到达C,继续输入0从C到达B,再输入1从B到达终态C,故选择C;

选项D:1010

        含义是从初态A开始输入1010可以到达终态C,从初态A开始输入1循环A,再输入0到B,继续输入1到达C,最后输入0从C到达B,最终无法到达终态C,故排除D;

正规式

        正规式是有限自动机的另外一种表达形式。

例:

        下面文法G[S]它无法识别(空(1)选D),此文法对应的正规式为(空(2)选C)。

                G[S]: S→aA|bB;        A→bS|b;        B→aS|a;

        空(1)选项A:ababab        选项B:bababa        选项C:abbaab        选项D:babba

无法识别的意思是无法用上述推导式推导出来。

 

选项D无法得出。 

        空(2)选项A:(a|b)*        选项B:(ab)*        选项C:(ab|ba)*        选项D:(ab)*(ba)*

公式

        (a|b):可以解析出a,也可以解析出b

         (a|b)*: *代表循环多次,从0到∞,极限小值可以表达空串;中间可以表达多个或单个a、b的各种组合,例如a,aa,aaa...;b,bb,bbb;ababbabbaa...等无序组合。

         (ab)*:表示空串、单个ab、或多个ababababab组合

        (ab|ba)*:表示空串、单个ab或单个ba、多个ababab或多个bababa、或者单个或多个ab于ba的任意组合。

         (ab)* (ba)*:表示空串、多个或单个ab,然后多个或单个ba,无论单个或者多个此时必须ab组合在前,ba组合在后

第(2)个空的意思是,以下选项哪些正规式可以表示文法G(S)的组合,一个文法的组合一般有多种,例如空(1)中已经出现3种;而文法对应的正规式可以将所有的组合表示出来,但是范围也不宜过大,合适为准。

首先使用排除法,看以下的正规式能否表示(1)中出现的三种组合 ababab、bababa、abbaab。

(2)选项A: 

        (a|b)* 可以表示空串;单个或多个a;单个或多个b,以及单个或多个abbbaabb任意组合,可以表示ababab、bababa、abbaab,甚至可以表示空(1)中的选项D,可以表示但是范围过于宽泛,暂且保留选项A看后续选项是否有更合适的。

(2)选项B:

        (ab)*可以表示空串;单个或多个ab,只可以表示出ababab其他2个表示不出,故排除选项B。

(2)选项C:

        (ab|ba)*可以表示空串;单个或多个ab;单个或多个ba;单个或多个ab于ba的任意组合,可以表示出ababab、bababa、abbaab且无法表示出空(1)中选项D,比上述空(2)中选项A的范围要小,更精准,故排除选项A选择选项C。

(2)选项D:

        (ab)* (ba)*可以表示空串、单个或多个abba,例如ba空串只有ab可以表示ababab;ab空串只有ba时可以表示bababa,当二者均不空串时只能表示abbaba不能表示abbaab,故排除选项D。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值