Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 两个正则表达式的交集';s_Regex_Regular Language_Finite Automata_Dfa_Nfa - Fatal编程技术网

Regex 两个正则表达式的交集';s

Regex 两个正则表达式的交集';s,regex,regular-language,finite-automata,dfa,nfa,Regex,Regular Language,Finite Automata,Dfa,Nfa,提前谢谢你的帮助 我在学校上的是一门自动机课程,我一生都无法计算出两个正则表达式的交点。我在网上和这里都看过了,发现我可以为两种语言创建NFA,先单独赞美他们,然后再赞美联合会(ise)——这里对英语没有把握 在这之后,我恭维工会找到后续的DFA并从中找到正则表达式,这将是交叉正则表达式。然而,这是所有这一切的计算,我挣扎 我有一个问题在下面,我已经改变了表达方式,而不是简单地问一个教程问题。两者都在同一个字母表上:{a,b,c,d} 让R1=(a(a+d))*和R2=((a+b)+a+(a+d

提前谢谢你的帮助

我在学校上的是一门自动机课程,我一生都无法计算出两个正则表达式的交点。我在网上和这里都看过了,发现我可以为两种语言创建NFA,先单独赞美他们,然后再赞美联合会(ise)——这里对英语没有把握

在这之后,我恭维工会找到后续的DFA并从中找到正则表达式,这将是交叉正则表达式。然而,这是所有这一切的计算,我挣扎

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

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

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

想法: R1包含空单词(ε)以及长度为2和4的单词 R2包含空单词和长度为3的单词

后续交集语言必须可被6整除

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


谢谢大家!

R1有一个简单的DFA:

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

交叉点是R1(因为R2是每个有a、b或d的物体)

我们可以这样完成此DFA:


R1不等于
(a(a+d))*
?还有,它是“补语”。啊,说得好。我现在将删除最后的广告。谢谢。我刚意识到我不懂你的符号。
+
是什么意思?我相信
(a+b)
等同于
(a | b)
。那么R2就是
(a+b+d)*