繁体   English   中英

“ {a,b}上的字符串的偶数奇数语言”的正则表达式

[英]Regular expression for "even odd language of strings over {a, b}

我想为此做我在DFA以下制作的正则表达式,其中b的偶数和a的奇数也为DFA和NFA

我得到了这两个Regular Expression

  1. b的Regular Expression (a*a*a*bb)*

  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM