两个正则表达式

时间:2017-02-26 17:54:50

标签: regex regular-language finite-automata dfa nfa

提前感谢您的帮助!

我正在学校学习自动化课程,因为我的生活无法解决两个正则表达式的交集问题。我已经在网上找到了这里,发现我可以为这两种语言创建NFA,然后单独称赞它们(ise) - 这里的英语不确定。

然后,我赞美联盟找到后续的DFA并从中找到正则表达式,这将是交集正则表达式。然而,这是我正在努力解决的所有这些的计算。

我在下面有一个问题,我已经更改了表达式,而不是简单地询问教程问题。两者都是相同的字母:{a,b,c,d}

允许R1 = (a(a+d))*R2 = ((a+b)+a+(a+d))*

我扩展了语言,试图更好地理解它们。

思想: R1包含空字(epsilon)和长度为2和4的字 R2包含空字和长度为3的单词

后续的交叉语言必须能被6整除吗?

我真的不知道如何从这里开始。如果这是最好的方法,请有人帮我创建NFA。我使用在线NFA生成器但在回顾大学教程答案时仍然犯错误。另外,您如何证明您计算的正则表达式是正确的?

谢谢!

1 个答案:

答案 0 :(得分:0)

R1有一个简单的DFA:

DFA for R1

R2 =(a | b | d)*正如@melpomene在他的评论中所说,这意味着任何带有字母a,b或d的单词,所以R2的DFA显然是:

eDFA for R2

交点是R1(因为R2是每个具有a,b或d的主体)

我们可以像这样完成这个DFA:

DFA for intersection