这个确定性有限自动机的语言是啥?
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状态=偶数个a
和RED 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
强>的。
a
和 b
的前缀字符串,奇数个 a
,后跟 b
,后跟 a
和 b
和 Λ
的任何字符串。
英语描述很复杂,但这是描述语言的唯一方法。您可以通过首先将给定的 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
【讨论】:
以上是关于这个确定性有限自动机的语言是啥?的主要内容,如果未能解决你的问题,请参考以下文章