这个确定性有限自动机的语言是什么?

时间:2011-09-26 04:38:48

标签: grammar context-free-grammar finite-automata deterministic

假设:

enter image description here

我不知道接受的语言是什么。

从查看它可以得到几个最终结果:

1.) bb
2.) ab(a,b)
3.) bbab(a, b)
4.) bbaaa

3 个答案:

答案 0 :(得分:19)

如何为DFA编写正则表达式

在任何自动机中,状态的目的就像记忆元素。状态存储一些自动化信息,如ON-OFF风扇开关 确定性有限自动机(DFA)称为有限自动机,因为有限量的内存以状态的形式存在。对于任何常规语言(RL),DFA始终是可能的。

让我们看看存储在DFA中的信息(请参阅我的彩色图) (注意:在我的解释中,任何数字表示零次或多次,Λ为空符号


状态-1:处于START状态,其中存储的信息偶数 a 已经到来。并且ZERO b 此状态的正则表达式(RE)为 = (aa)*

状态-4: a 的奇数已经到来。并且ZERO b 此状态的正则表达式为 = (aa)*a

  

FIGURE:

图: a BLUE 状态= 偶数 a 的数量,以及 RED 状态= ODD a 的数量已经到来。

  

注意:首次 b 后,移动无法返回状态1和状态-4。

状态-5:Yellow b之后。 Yellow b 表示 b after odd numbers of a 在奇数 b (在状态-5)后得到 a 后,每件事都可以接受,因为有一个自循环(b ,a)在州5。

您可以为州-5写:黄色-b后跟任何字符串a,b = Yellow-b (a + b)*

状态-6:只是为了区分奇数 a 甚至是。

状态-2:甚至在 a 之后 b ,然后是任意数量的 { {1}} 即可。 = b (aa)*

状态-3:在状态-2之后然后是bb*,然后通过状态-6进行循环。 我们可以为州-3撰写 = a state-2 a = (aa)* (aa)*bb* { {1}}

因为在我们的DFA中,我们有三个最终状态,因此DFA接受的语言是三个RL(或三个RE)的联合(+ RE)。
所以DFA接受的语言对应于三个接受状态-2,3,5 ,我们可以这样写:

a

(aa)* + State-2 + state-3 + state-5 (aa)*bb* (aa)*bb* + a (aa)*

我忘了解释Yellow-b
答案:(a + b)*是状态-4或状态-3之后的how Yellow-b comes?。我们可以这样写:

Yellow-b = b Yellow-b = ( state-4 + state-3 ) + b {{1} } (aa)*a(aa)*bb*

[<强> ANSWER ]
a + (aa)* b (aa)*bb* +((aa)*bb* + a (aa)* (aa)*a(aa)*bb* a


英语语言描述:DFA接受三种语言的联合

  • (aa)* 的数量,一个或多个 b
  • >
  • (a + b)* 的数量,由一个或多个 a 跟进,由ODD跟进 b 的数量。
  • a 以及 b 的前缀字符串,其中 a 的奇数<&#> 39; s,由 a 跟进,由 b a 的任意一串跟进的 b 即可。

英语描述很复杂,但这是描述语言的唯一方法。您可以通过首先将给定DFA转换为最小化DFA然后编写RE和描述来改进它。


此外,还有一种导数方法可以使用我在此处Arden's Therm解释的How to write regular expression for a DFA using Arden theorem从给定的转换图中查找RE。首先必须将转换图转换为没有空移动和单启动状态的标准形式。但我喜欢通过分析而不是数学推导方法来学习计算理论。

答案 1 :(得分:3)

我想这个问题不再相关了:)而且它可能更好地引导你完成它然后只是陈述答案,但我想我有一个基本的表达覆盖它(它可能是最小化的),所以我会只是为未来的搜索者写下来

(aa)*b(b)* // for stoping at 2
U
(aa)*b(b)*a(aa)* // for stoping at 3
U
(aa)*b(b)*a(aa)*b((a)*(b)*)* // for stoping at 5 via 3
U
a(aa)*b((a)*(b)*)* // for stoping at 5 via 4

答案 2 :(得分:1)

您提供的示例(1 - 4)是 DFA接受的语言。它们只是属于DFA接受的语言的字符串。因此,它们都属于同一种语言。

如果你想找出定义DFA的正则表达式,你需要做一些叫做 k-path induction 的东西,你可以读一下它here