繁体   English   中英

如何使用 Arden 定理获得此 DFA 的 RE? 无法获得所需的正则表达式

[英]How to get RE for this DFA Using Arden's Theorem? Unable to get desired Regular expression

所需的 RE: 0*10*1(1+00*1)* Vs RE 我得到了0*1(0 + 11* 0)*11*

    q0 = q0 0 + ε           equ (1)
    q1 = q0 1 + q1 0 + q2 0     equ (2)
    q2 = q1 1 + q2 1            equ (3)
    
    q0 = ε + q0 0           R=Q+RP
    q0 = ε 0*           R=QP*
    q0 = 0*             εR*=R*
    
    q2 = q1 1 + q2 1
    q2 = q1 11*         equ (4)
    
    Substitute the value of q2 in equ (2)
    q1 = q0 1 + q1 0 + q2 0
    q1 = 0*1 + q1 0 + q1 11* 0
    q1 = 0*1 + q1 (0 + 11* 0)       R=Q+RP
    q1 = 0*1((0 + 11* 0)*)*     R=QP*
    q1 = 0*1(0 + 11* 0)*        (R*)*=R*
    
    Substitute the value of q1 in equ (4)
    q2 = q1 11*
    q2 = 0*1(0 + 11* 0)*11*

我试图解决 DFA 以获得所需的 RE,但无法实现我想要的。

这是我正在尝试获得 RE 的 DFA: DFA

您找到的正则表达式是正确的,并且自然地从 DFA 的结构中得出,但要获得您指定的 Desired RE,您需要将 DFA 转换为等效的 DFA:

在此处输入图像描述

此 DFA 与您的等效:我已将q1分为两个状态, q1q1'q1接收来自q0的转换, q1'接收来自q2的转换,两者都具有相同的转换。 (我知道,这不是等价的正式证明,但它是这种证明的基本直觉。)

有了这个 DFA,证明就很简单了:

q0 = q0 0 + ε
   = ε0*
   = 0*
q1 = q0 1 + q1 0
   = 0*1 + q1 0
   = 0*10*    
q1'= q2 0 + q1' 0
   = q2 00*
q2 = q1 1 + q2 1 + q1' 1
   = 0*10*1 + q2 1 + q2 00*1
   = 0*10*1 + q2 (1 + 00*1)
   = 0*10*1 (1 + 00*1)*

根据给定的 DFA,每个 state 的方程可以写成:

q0=q0.0+ε
q1=q1.0+q0.1+q2.0
q2=q2.1+q1.1

现在 q0 的形式为 t=tr+s,因此解为 t=sr*(Arden 定理)

q0=ε.0*
q0=0*

将 q0 代入 q1,

q1=q1.0+0*1+q2.0

现在 q1 的形式是 t=tr+s 所以解是 t=sr*

q1=(0*1+q2.0)+q1.0 (t=s+tr is t=sr*)
q1=(0*1+q2.0)0*
q1=0*10*+q2.00*

将 q1 代入 q2,

q2=q2.1+(0*10*+q2.00*)1
q2=q2.1+0*10*1+q2.00*1

现在 q2 的形式是 t=tr+s 所以解是 t=sr*

q2=q2(1+00*1)+0*10*1 (t=s+tr is t=sr*)
q2=0*10*1(1+00*1)*

由于 q2 是最终的 state,因此正则表达式将为:

RE=0*10*1(1+00*1)*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM