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