(12)第二章 第五讲 正则表达式与有限自动机
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对于终结状态C
0+1 START A 1(0+1) START C A
对于终结状态D
0+1 1(0+1) (0+1) D
得出正则式为 (0+1)* 1(0+1)
得出正则式为 (0+1)*1(0+1)(0+1)
结果得正则表达式: (0+1)* 1(0+1) +(0+1)*1(0+1)(0+1)
END
设 M1=(Q1,T1,δ1,q1,{qf1}) , M2=(Q2,T2,δ2,q2,{qf2},) 且 Q1∩Q2=Ø 则构造M=(Q1∪Q2∪{q0,qf},T1∪T2,δ,q0,{qf}),其中δ定义如下: ① δ(q0,ε)={q1,q2}
ε
q1 M1 qf1
ε
qf
② 对于q∈Q1-{qf1},aq ∈ T1∪{ε},有:δ(q,a)=δ1(q,a) 0
二、有关定理
状态消去构造法: (1) 将自动机的转移弧上的权值定义为正则表达式,即 自动机的状态转移弧上的标记是一个正则表达式。 (2) 消去自动机中某些中间状态,与之相关联的弧也将 随之消去。对自动机所造成的影响将通过修改从每一个前 驱状态到每一个后继状态的转移弧上的权值(即标记:正则 式)来弥补。
ε
对于R6=ab* ,有:
a q3 q4
R4=R5 *, 即R4=b*
ε
ε
q7
ε
q5
b
q6
ε
q8
最后对于R6+R2=ab*+b,有:
ε
q0 q1 b
ε
q2
ε
q9
ε ε
q3 a q4
ε
q7
ε
q5
b
q6
ε
q8
ε
ε
二、有关定理
证明: 证明② 当给定的一个DFA时(NFA转换为DFA的方法已 经讨论过),一定能够找到一个与之等价的正则表达式: 状态消去构造法: (1) 将自动机的转移弧上的权值定义为正则表达式,即 自动机的状态转移弧上的标记是一个正则表达式。 (2) 消去自动机中某些中间状态,与之相关联的弧也将 随之消去。对自动机所造成的影响将通过修改从每一个前 驱状态到每一个后继状态的转移弧上的权值(即标记:正则 式)来弥补。
ε
q8
最后对于R6+R2=ab*+b,有:
ε
b q1 R2=b q2 q3
a q4 R3=a q5
b q6 R5=b
ε
q7
ε
q5
b
q6
ε
q8
ε 对于R6=ab* ,有:
a q3 q4
R4=R5 *, 即R4=b*
ε
q7
ε
ε
q5
b
q6
ε
q8
最后对于R6+R2=ab*+b,有:
ε
b q1 R2=b q2 q3
设 M1=(Q1,T1,δ1,q1,{qf1}) , M2=(Q2,T2,δ2,q2,{qf2},) 且 Q1∩Q2=Ø 则构造M=(Q1∪Q2∪{q0,qf},T1∪T2,δ,q0,{qf}),其中δ定义如下: ① δ(q0,ε)={q1,q2}
ε
q1 M1 qf1
ε
qf
② 对于q∈Q1-{qf1},aq ∈ T1∪{ε},有:δ(q,a)=δ1(q,a) 0
q2 ③ 对于q∈Q2-{qf2},a∈Tε δ(q,a)= 2∪{ε},有: M2 δ2(q,a) qf2
ε
④ δ(qf1,ε)=δ(qf2,ε)={qf}
R=R1+R2
(2) 当R=R1+R2,且已知R1、R2分别对应的有限自动机为 NFA M1、NFA M2,现要构造R的有限自动机NFA M :
RETURN
q0
ε
q1 M1
qf1
ε
qf
ε
R=R1*
实例:对于正则式ab*+b,构造出一个NFA。
解:ab*+b可以表示为R1+R2,其中R1=ab* , R2=b。 对于R2,构造NFA,有:
b q1 R2=b q2
对于R1,有:R1=R3R4 ,其中R3=a,R4=R5* , R5=b 。首先 对R3 ,R5分别构造NFA如下:
设 M1=(Q1,T1,δ1,q1,{qf1}) , M2=(Q2,T2,δ2,q2,{qf2},) 且 Q1∩Q2=Ø 则构造M=(Q1∪Q2∪{q0,qf},T1∪T2,δ,q0,{qf}),其中δ定义如下: ① δ(q0,ε)={q1,q2} ② 对于q∈Q1-{qf1},a∈T1∪{ε},有:δ(q,a)=δ1(q,a)
二、有关定理
定理 4 任何正则式都能够转换成与之相应的有限 自动机;反之,任何有限自动机也能够转换成与之 相应的正则式。它们所描述(或识别)的语言是相等 的。 证明思路:①首先证明由一个确定的正则式可以构 造出一个确定的有限自动机。②然后再证明由一个 确定的有限自动机也可以构造出一个具体的正则表 达式。
第二章 有限自动机和右线性文法
第五讲
正则表达式与有限自动机
一、正则式、正则语言、有限自动机的关系 1、正则语言与有限自动机之间的关系
所谓正则语言就是由正则式(或者由右线性文法) 所能够描述的语言,或者是由有限自动机所能够识 别的语言。
2、正则式与有限自动机之间的关系
正则式和有限自动机就描述能力来说是等价的。 即任何正则式都能够被转换成一个有限自动机,该 有限自动机能够识别该正则式所描述的语言;反之, 任何有限自动机也都能够被转换为一个正则式,该 正则式能够描述该有限自动机所识别的语言。
q0 q0 q1 a q0 q1
R=ε
Байду номын сангаас
R=Ø
R={a}
二、有关定理
证明: 下面就来证明根据给定的扩充正则式一定能构造出一个 具体的NFA(先对3个原始的正则式进行证明,然后再对其“并”,
“连接”,“闭包”分别证明之即可。
给定字母表上的扩充正则式R ,构造一个有ε转换的NFA: (2) 当R=R1+R2,且已知R1、R2分别对应的有限自动机为 NFA M1、NFA M2,现要构造R的有限自动机NFA M :
(6) 除(1)~(5)外,再无其他的扩充正则式。
二、有关定理
证明: 证明① 在证明根据给定的正则式一定能构造出一个 NFA(NFA转换为DFA的方法已经讨论过)之前,先对正 则式进行一些扩充: (1) 如果R是正则式,则R也是扩充正则式; (2) 如果R是扩充正则式,则R+=RR*也是扩充正则式; (3) 如果R是扩充正则式,则: R+K=R∪RR∪…∪RK也是扩充正则式; (4) 如果R是扩充正则式,则: R*K={ε}∪R∪RR∪…∪RK也是扩充正则式; (5) 如果R1 , R2是扩充正则式,则: R1∩R2, R1-R2也是扩充正则式;
(6) 除(1)~(5)外,再无其他的扩充正则式。
二、有关定理
证明: 下面就来证明根据给定的扩充正则式一定能构造出一个 具体的NFA(先对3个原始的正则式进行证明,然后再对其“并”,
“连接”,“闭包”分别证明之即可。
给定字母表上的扩充正则式R ,构造一个有ε转换的NFA: (1) 当R=ε,R=Ø,R=a,a∈T,则各自对应的NFA如下:
二、有关定理
状态消去构造法: (1) 将自动机的转移弧上的权值定义为正则表达式,即 自动机的状态转移弧上的标记是一个正则表达式。
(2) 消去自动机中某些中间状态,与之相关联的弧也将 随之消去。对自动机所造成的影响将通过修改从每一个前 驱状态到每一个后继状态的转移弧上的权值(即标记:正则 式)来弥补。 q
③ 对于q∈Q2-{qf2},a∈T2∪{ε},有:δ(q,a)=δ2(q,a) ④ δ(qf1,ε)=δ(qf2,ε)={qf}
ε
q0 q1 M1 qf1
ε
qf
ε
q2
M2
qf2
ε
R=R1+R2
(3) 对于R=R1R2, q1作为初始状态,qf2作为终止状态
仍设 M1=(Q1,T1,δ1,q1,{qf1}) , M2=(Q2,T2,δ2,q2,{qf2},) 且 Q1∩Q2=Ø 因此,构造M=(Q1∪Q2 ,T1∪T2,δ,q1, {qf2}),其中δ定义如下: ① 对于q∈Q1-{qf1},a∈T1∪{ε},有:δ(q,a)=δ1(q,a) ② δ(qf1,ε)= {q2} ③ 对于q∈Q2 ,a∈T2∪{ε},有:δ(q,a)=δ2(q,a) 则 M的构造如下图所示:
a q4 R3=a q5
b q6 R5=b
ε
q7
ε
q5
b
q6
ε
q8
ε 对于R6=ab* ,有:
a q3 q4
R4=R5 *, 即R4=b*
ε
q7
ε
ε
q5
b
q6
ε
q8
最后对于R6+R2=ab*+b,有:
ε
b q1 R2=b q2 q3
a q4 R3=a q5
b q6 R5=b
ε
b q6
q7
ε
q5
ε
q8
a q3 R3=a q4 q5 R5=b b q6
对于R4=R5*,有:
q7
ε
b
ε
q5
q6
ε
q8
ε
于是有:
b q1 R2=b q2 q3 R3=a a q4 q5 R5=b b q6
ε
q7
ε
q5
b
q6
ε
q8
ε 对于R6=ab* ,有:
a q3 q4
R4=R5 *, 即R4=b*
ε
q7
ε
ε
q5
b
q6
q2 ③ 对于q∈Q2-{qf2},a∈Tε δ(q,a)= 2∪{ε},有: M2 δ2(q,a) qf2
ε
④ δ(qf1,ε)=δ(qf2,ε)={qf}
R=R1+R2
(2) 当R=R1+R2,且已知R1、R2分别对应的有限自动机为 NFA M1、NFA M2,现要构造R的有限自动机NFA M :
二、有关定理 +
对于 R = RR*,这里举一个极端的例子:设R表示{a};则 证明: +表示 有 R* 表示 {a}*={ ε ,a,aa,aaa,...} ; R 证明① 在证明根据给定的正则式一定能构造出一个 + = RR*。 {a,aa,aaa,...} ;显然有: R NFA(NFA转换为DFA的方法已经讨论过)之前,先对正 容易证明:扩充正则式仍然是正则式。例如:R是正则 则式进行一些扩充: 式,R*也是正则式,故有RR*=R+也是正则式(因为若: (1) 如果R是正则式,则R也是扩充正则式; R1,R2分别为正则式,则R1R2也是正则式)。 (2) 如果R是扩充正则式,则R+=RR*也是扩充正则式; (3) 如果R是扩充正则式,则: R+K=R∪RR∪…∪RK也是扩充正则式; (4) 如果R是扩充正则式,则: R*K={ε}∪R∪RR∪…∪RK也是扩充正则式; (5) 如果R1 , R2是扩充正则式,则: R1∩R2, R1-R2也是扩充正则式;
start q0 T q
情形2:q=q0(即q0本身即为一个结束状态),则最终可得到 有限自动机如下,该自动机所对应的正则表达式为R*:
R
步骤2: 所得到的所有正则表 达式的和式即为所求。
start
q0
二、有关定理
例:对下图所示的自动机构造其正则表达式:
0+1 START A 1 0+1 0+1 B C D
例如:
R4
j
R1R2*R3+R4 qi R3 qi qj
R1
qk
R2
二、有关定理
状态消去法构造正则表达式的算法步骤:
步骤1: 对每个结束状态q,依次消去除q与初始状态q0之 外的所有其他状态,q与q0之间可能有若干条弧; 情形1:q≠q0,则最终可能得到如下图的有限状态自动 机(这是最复杂的情形),该自动机所对应的正则表达式为 U (R*+SU*T)*SU* : R S
q1
M1
qf1
ε
q2
M2
qf2
(4)对于R=R1*,
q0作为初始状态,qf作为终止状态
仍设 M1=(Q1,T1,δ1,q1,{qf1}) , 因此,构造M=(Q1∪{q0,qf},T1,δ,q0, {qf}),其中δ定义如下: ① δ(q0,ε)= δ(qf1,ε)= {q1,qf}; ② 对于q∈Q1- {qf1},a∈T1∪{ε},有:δ(q,a)=δ1 (q,a) 则 M的构造如下图所示: ε