【问题标题】:Automata to regular expression自动机到正则表达式
【发布时间】:2019-05-16 18:02:46
【问题描述】:

我有这个简单的自动机:

然后我写我的系统:

L0 = aL0 + bL1

L1 = bL0 + aL1 + Ɛ

使用 Arden 定理我可以简化我的表达式:

L0 = a*bL1

L1 = bL0 + aL1 + Ɛ

然后:

L1 = b(a*bL1) + aL1 + Ɛ

L1 = b(a*b+a)L1 + Ɛ

L1 = b(a*b+a)*

这似乎是不正确的,但我不明白为什么,谁能解释我错在哪里?

【问题讨论】:

    标签: regular-language automata finite-automata automata-theory


    【解决方案1】:

    您的问题是 L0 和 L1 表示导致 L0 和 L1 的字符串语言,而不是从 L0 和 L1 导致接受状态的字符串语言。因此,空字符串不等价于接受状态L1,而是等价于初始状态L0。因此,

    L0 = aL0 + bL1 + Ɛ
    L1 = bL0 + aL1
    

    然后

    L0 = a*(bL1 + Ɛ)
    L1 = bL0 + aL1
    

    下一个

    L0 = a*(bL1 + Ɛ)
    L1 = ba*(bL1 + Ɛ) + aL1
       = ba*bL1 + ba* + aL1
       = (ba*b + a)L1 + ba*
       = (ba*b + a)*ba*
    

    这个正则表达式似乎是正确的。

    【讨论】:

      猜你喜欢
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      相关资源
      最近更新 更多