![](/img/trans.png)
[英]Regular Expression for Strings with even number of b's followed by the letter c followed by an odd number of a's
[英]Regular expression for "even odd language of strings over {a, b}
我想为此做我在DFA
以下制作的正则表达式,其中b的偶数和a的奇数也为DFA和NFA
我得到了这两个Regular Expression
b的Regular Expression
(a*a*a*bb)*
Regular Expression
a的奇数(ab*b*)(ab*b*a)*
问题:我制定了正确的DFA吗?
DFA
转换成NFA
? 编辑:我从Grijesh Chauhan
Answer那里获得了DFA, Grijesh Chauhan
仍然无法进行正则表达式,这将仅允许b的偶数和a的奇数个小数。 我也尝试过这个正则表达式
(a(bb)*(aa)*)*
注意:从RE上方仅生成从a开头的那些字符串,但我希望RE生成从a或b开头的偶数个b和奇数个a的字符串
正则表达式不正确。 他们应该是
a*(ba*ba*)*
b的偶数 b*ab*(ab*ab*)*
表示a的奇数 有一种执行这两种合并的系统方法,因为每个正则表达式都可以由状态机表示,反之亦然,并且肯定有一种合并状态机的方法,以使结果状态机接受两个状态中的任何一个机器接受,但我不记得如何直接在正则表达式上完成此操作。
您的DFA不正确。 可以看到这一点,因为您有奇数个周期。 在这些周期之后,将更改偶数/奇数奇偶校验。 因此,我可以从DFA接受的“ babb”开始,它具有b的奇数和a的奇数。 q0-> q1-> q2是一个3 a的周期,因此当我处于这些状态之一时,加3 a不会改变自动机接受的程度,因此即使自动机也没有奇数个a或一个,您的自动机也接受“ aaababb” b的偶数。 (即使您的计算机同时具有奇数个a和偶数个b,但它的“ bab”故障)
您的DFA至少应跟踪a和b数量的奇偶性。 因此,您应该从4种状态开始。 Q_ {even,even},Q_ {even,odd},Q_ {odd,even}和Q_ {odd,odd}。 以这种方式标记状态后,应该可以直接设置转换并选择初始状态和接受状态。
您的正则表达式也有一些问题。 我会注意到a*
表示0或多个a,因此a*a*
表示0或多个a,后跟0或多个a。 这意味着a*a*
= a*
。 除此之外,请参见乔治的答案。
常规定义是每个DFA也是NFA。 从NFA转换为DFA时,转换可能会成为问题。
有关有限度自动机的需要正则表达式:1的偶数和0的偶数,请参见在正则表达式上可以完成的代数讨论。
使用这个DFA。...可能对您有帮助。...我用油漆做成,看起来不太漂亮...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.