繁体   English   中英

可以将任何有限状态自动机转换为正则表达式吗?

[英]Can any finite state automata be translated into a regular expression?

假设我们有如下的fsa:

fsa = {0:{'a': 1, else: 2},1:{'b': 1, else: 2},2:{else: 2}}

这意味着:在状态0,如果输入为'a',则进入状态1,否则进入状态2;否则,进入状态2。 在状态1,如果输入为'b',则进入状态1,否则进入状态2; 在状态2,对于任何输入,它都会进入状态2。

假设状态0是开始状态,状态1是接受状态,状态2是失败状态。 然后,可以将此fsa转换为正则表达式“ ab *”。 实际上,有几种算法可以将fsa转换为正则表达式,例如Br​​zozowski代数方法。

我的问题:以上形式中定义的任何fsa都可以翻译成正则表达式吗? 有什么限制吗?

是的,它们在数学上是等效的。 正则表达式和有限自动机的等价性称为Kleene定理。

没有限制-所有有限状态自动机都等效于某些正则表达式,并且所有正则表达式都等效于某些有限状态自动机。

是的,它们是等效的。 Wikipedia页面上的常规语言来看,这些都是常规语言的等效定义。

  1. 它是正则表达式的语言
  2. 它是非确定性有限自动机(NFA)接受的语言
  3. 它是确定性有限自动机(DFA)接受的语言
  4. 它可以由常规语法生成
  5. 它是交替有限自动机接受的语言
  6. 它可以由前缀语法生成
  7. 只读图灵机可以接受它
  8. 可以用一元二阶逻辑(Büchi-Elgot-Trakhtenbrot定理)定义它
  9. 它可以被某些有限的半定形词识别,这意味着它是有限半定形子集的子集的原像,该子集是同字母的自由半定形词同态的

是。 每个有限的自动机都会有一个对应的正则表达式。 克莱因定理证明了这一结果。 通过将有限自动机划分为多个较小的有限自动机的并集,使用数学归纳原理证明了该定理。 证明可以在这里找到。

暂无
暂无

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

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