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

Posted

技术标签:

【中文标题】这个确定性有限自动机的语言是啥?【英文标题】:What is the language of this deterministic finite automata?这个确定性有限自动机的语言是什么? 【发布时间】:2011-11-24 22:17:14 【问题描述】:

给定:

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

通过查看它,您可以得到几个最终结果:

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

【问题讨论】:

math.stackexchange math.stackexchange.com/questions/1739863/…的可能重复 【参考方案1】:

如何为 DFA 编写正则表达式

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

让我们看看 DFA 中存储了哪些信息(参考我的彩色图)。 (注意:在我的解释中,任何数字都表示零次或多次,Λ 是空符号


State-1:是START状态,里面存储的信息是偶数a已经来了。和零 b. 此状态的正则表达式 (RE) 是 = (aa)*

State-4: a 的奇数已经到来。和零b。 此状态的正则表达式是 = (aa)*a

BLUE状态=偶数aRED states = ODD 数量 a 已经到来。

注意:一旦到达第一个b,移动就不能回到状态1 和状态4。

State-5:Yellow b 之后。 Yellow b 表示 b after odd numbers of a. 一旦你在奇数个a(在状态5)之后得到b,一切都是可以接受的,因为(b,a)在状态 5。

你可以为 state-5 写:Yellow-b 后跟任意字符串 a、b 即 = Yellow-b (a + b)*

State-6: 只是为了区分奇数 a 还是偶数。

State-2: 出现在 a 之后,然后是 b 然后是任意数量的 b强>。 = (aa)* bb*

State-3: 在 state-2 之后,然后是 a,然后是通过 state-6 的循环。 我们可以为 state-3 写 = state-2 a (aa)* = (aa)*bb* a (aa)*

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

 State-2 +  state-3           + state-5    

(aa)*bb* + (aa)*bb* a (aa)* + Yellow-b (a + b)*

我忘了解释how Yellow-b comes? 答案:Yellow-b 是在 state-4 或 state-3 之后的b。我们可以这样写:

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

[回答](aa)*bb* + (aa)*bb* a (aa)* + ( (aa)*a + (aa)*bb* a (aa)* ) b @9876 @


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

偶数个 a,后跟一个或多个 b, 偶数个a,后跟一个或多个b,后跟奇数个a强>的。 ab 的前缀字符串,奇数个 a,后跟 b,后跟 abΛ 的任何字符串。

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


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

【讨论】:

【参考方案2】:

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

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

【讨论】:

好吧,我不完全确定,但我想出了:它必须包含一个 b 并且有一个奇数个 a。 Kleene 定理给出了分别在给定 RE 或 FA 的情况下生成 NFA-Lambda 或 RE 的算法。 这个答案应该有更多的 IMO 赞成票。您提供的链接给出了很好的解释(Jeff Ullmann!)。【参考方案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

【讨论】:

以上是关于这个确定性有限自动机的语言是啥?的主要内容,如果未能解决你的问题,请参考以下文章

协议rdt3.0接收方的有限状态机图怎么画?

从正则表达式(RE)到最小确定性有限状态自动机(DFA)

有限状态自动机

第十二篇:形式语言理论与有限状态自动机

第十二篇:形式语言理论与有限状态自动机

有限自动机