【问题标题】:Simplify Regular Expression, Automata Theory简化正则表达式,自动机理论
【发布时间】:2016-10-05 06:54:56
【问题描述】:

我最近需要弄清楚该语言的正则表达式 {w | |w|是奇数,w 在字母表 {a,b} 上以符号 b} 开始和结束。

我想出了一个解决办法

b(ab+bb+aaab+aabb+abab+abbb+bbbb+bbab+babb+baab)*

解决方案很长,所以我希望有人能告诉我一种可以简化的方法,

【问题讨论】:

  • 您的“解决方案”是错误的。捕获不是您的语言的baa。无论如何,如果您还有更多正则表达式要查找,请随时在评论中引起我的注意。我很乐意提供帮助。
  • 谢谢,这实际上是一个错字。它的意思是“bb”
  • 无论如何,为正确的答案投票,公平起见。

标签: regex regular-language automata


【解决方案1】:

你可以试试b|(b(a|b)((a|b)(a|b))*b) 您描述的语言只能产生 b,这被第一个分支捕获,这是它可以产生的唯一大小为 1 的字符串。然后它可以产生大小为 3,5,7,... 的字符串。那些被第二个分支捕获。开头和结尾的 b 是不言自明的。这些占2个字符。中间位是经典语言{w | |w| is odd} over {a,b}

更强大的语法将允许类似b((a|b)((a|b)^2)*b)? 的东西,它更紧凑,但等效。

【讨论】:

    【解决方案2】:

    最简单的一个:

    (b(a|b)(aa|ab|ba|bb)*b)|b
    

    【讨论】:

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