我们假设我们有一个fsa如下:
fsa = {0:{'a': 1, else: 2},1:{'b': 1, else: 2},2:{else: 2}}
这意味着:在状态0,如果输入为'a',则进入状态1,否则进入状态2;在状态1,如果输入为'b',则进入状态1,否则进入状态2;在状态2,对于任何输入,它进入状态2.
假设,状态0是开始状态,状态1是接受状态,状态2是故障状态。 然后这个fsa可以翻译为正则表达式“ab *”。事实上,有一些算法可以将fsa转换为正则表达式,例如Brzozowski代数方法。
我的问题:上述表格中定义的任何fsa都可以翻译成正则表达式吗?有没有限制?
答案 0 :(得分:2)
是的,它们在数学上是等价的。 'The equivalence of regular expressions and finite automata is known as Kleene's theorem.'
答案 1 :(得分:1)
没有限制 - 所有有限状态自动机都等价于某些正则表达式,所有正则表达式都等同于某些有限状态自动机。
答案 2 :(得分:1)
是的,它们是等价的。从wikipedia page on regular languages开始,这些都是常规语言的等效定义。
答案 3 :(得分:1)
是。每个有限自动机都有一个相应的正则表达式。克莱恩定理证明了这一结果。通过将有限自动机划分为若干较小有限自动机的并集,利用数学归纳原理证明了该定理。可以找到证据here。