【问题标题】:How to get RE for this DFA Using Arden's Theorem? Unable to get desired Regular expression如何使用 Arden 定理获得此 DFA 的 RE?无法获得所需的正则表达式
【发布时间】:2021-07-25 03:45:20
【问题描述】:

想要的回复:0*10*1(1+00*1)* 与回复我得到了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 来匹配所需的 RE,还是想要一个不同的证明来证明/如果 DFA 匹配所需的 RE?
  • 第二个问题,q0是你唯一的开始状态吗?我不确定您的黄色突出显示应该具有什么语义。
  • 实际上,如果q0 是唯一的开始状态,据我所知,您的两个RE 都是正确的。
  • 哇,我已经研究了一段时间了。很明显,当您遵循 DFA 时,所需的 RE 是正确的,但我看不出如何使用 Arden 定理来证明它。
  • @joanis 是的 q0 是唯一的开始状态。我只想匹配两个 RE,当您遵循 DFA 和使用 Arden 定理时。

标签: regex automata finite-automata dfa


【解决方案1】:

您找到的正则表达式是正确的,并且自然地从您展示的 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)*

【讨论】:

    猜你喜欢
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多