正规式与有限自动机的等价性

对任何 F A M FA M FAM,都存在一个正规式 r r r,使得 L ( r ) = L ( M ) L(r)=L(M) L(r)=L(M)

(1)在 M M M的状态转换图上增加两个结点 X X X Y Y Y,从 X X X ϵ \epsilon ϵ弧连接到 M M M的所有初态结点,从 M M M的所有终态结点用 ϵ \epsilon ϵ弧连接到 Y Y Y,记新的 N F A NFA NFA M ′ M' M,它只有一个初态 X X X Y Y Y,显然有 L ( M ′ ) = L ( M ) L(M')=L(M) L(M)=L(M)

(2)合并状态,使 M ′ M' M只剩下初态 X X X,终态 Y Y Y这两个状态;
反复利用以下规则:

在这里插入图片描述

对任何正规式 r r r,都存在一个 F A M FA M FAM,使得 L ( M ) = L ( r ) L(M)=L(r) L(M)=L(r)

r r r中的运算符数目(或,连接,闭包)进行归纳:

(1)若 r r r具有0个运算符,则 r = ϵ r=\epsilon r=ϵ r = ϕ r=\phi r=ϕ r = a r=a r=a,其中 a ∈ Σ a\in\Sigma aΣ

在这里插入图片描述
(2)假设结论对少于 k ( k ≥ 1 ) k(k\geq1) k(k1)个运算符的正规式成立,当 r r r中含有 k k k个运算符时,有3种情形:

情形一: r = r 1 ∣ r 2 r=r_1|r_2 r=r1r2,其中 r 1 , r 2 r_1,r_2 r1,r2中运算符个数少于 k k k
由归纳假设,对 r i , ∃ M i = ( S i , Σ i , δ i , q i , f i ) ⟹ L ( M i ) = L ( r i ) r_i,\exist M_i=(S_i,\Sigma_i,\delta_i,{q_i},{f_i})\Longrightarrow L(M_i)=L(r_i) ri,Mi=(Si,Σi,δi,qi,fi)L(Mi)=L(ri),并且 M i M_i Mi没有从状态发出的箭弧 ( i = 1 , 2 ) (i=1,2) (i=1,2)
不妨设 S 1 ∩ S 2 = ϕ S_1\cap S_2=\phi S1S2=ϕ(因为即使有交集,可以复制两份,用两个不同的命名一个加入 S 1 S_1 S1另一个加入 S 2 S_2 S2),在 S 1 ∪ S 2 S_1\cup S_2 S1S2中加入两个新状态 q 0 , f 0 q_0,f_0 q0,f0

在这里插入图片描述

可以构造出 M = ( S 1 ∪ S 2 ∪ { q 0 , f 0 } , Σ 1 ∪ Σ 2 , σ , { q 0 } , { f 0 } ) M=(S_1\cup S_2\cup\{q_0,f_0\},\Sigma_1\cup\Sigma_2,\sigma,\{q_0\},\{f_0\}) M=(S1S2{q0,f0}Σ1Σ2,σ,{q0},{f0})
其中 δ \delta δ定义如下:
δ ( q 0 , ϵ ) = { q 1 , q 2 } \delta(q_0,\epsilon)=\{q_1,q_2\} δ(q0,ϵ)={q1,q2}
δ ( q 0 , a ) = δ 1 ( q , a ) \delta(q_0,a)=\delta_1(q,a) δ(q0,a)=δ1(q,a),当 q ∈ S 1 − { f 1 } , a ∈ Σ 1 ∪ { ϵ } q\in S_1-\{f_1\},a\in\Sigma_1 \cup \{\epsilon\} qS1{f1},aΣ1{ϵ}
δ ( q 0 , a ) = δ 2 ( q , a ) \delta(q_0,a)=\delta_2(q,a) δ(q0,a)=δ2(q,a),当 q ∈ S 2 − { f 2 } , a ∈ Σ 2 ∪ { ϵ } q\in S_2-\{f_2\},a\in\Sigma_2 \cup \{\epsilon\} qS2{f2},aΣ2{ϵ}
δ ( f 1 , ϵ ) = δ ( f 2 , ϵ ) = { f 0 } \delta(f_1,\epsilon)=\delta(f_2,\epsilon)=\{f_0\} δ(f1,ϵ)=δ(f2,ϵ)={f0}
显然: L ( M ) = L ( M 1 ) ∪ L ( M 2 ) = L ( r 1 ) ∪ L ( r 2 ) = L ( r ) L(M)=L(M_1)\cup L(M_2)=L(r_1)\cup L(r_2)=L(r) L(M)=L(M1)L(M2)=L(r1)L(r2)=L(r)

情形二: r = r 1 r 2 r=r_1r_2 r=r1r2

在这里插入图片描述
情形三: r = r 1 ∗ r=r_1^* r=r1

在这里插入图片描述

虽然这里给出的是归纳法证明,书上也有正规式 r r r转换为 N F A NFA NFA,进一步通过子集法确定化为 D F A DFA DFA,最后再对 D F A DFA DFA进行化简的方法。

补充一点理解,确定化,将 N F A NFA NFA转换为 D F A DFA DFA,和后面的状态化简,合并状态,使状态数减少不同,确定化可能存在一个状态出现在多个状态子集中,它实际上是在消除 ϵ \epsilon ϵ带来的影响,而且消除的办法很简单,就是求不考虑 ϵ \epsilon ϵ的情况下的状态转换矩阵,一个状态由输入输出标识,我们去研究所有出现状态的输入输出,得到新状态,反复进行这一过程,最后得到的就是对应 D F A DFA DFA的状态转换矩阵。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u小鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值