确定两种语言是否相等[Rregular expression]



准备考试并遇到了这个问题:

确定由R1表示的字符串集是否是R2的子集?

R1 = (01 +10)*      R2 = ((01)* + (10)*)

我的尝试:既然有相同的表达,我就试图证明它们是相同的R1⊆R2

我试图证明R2与R1相同:所以我尝试了这个,使用正则表达式等价定理:

((01+ε)*+(10+ε)

现在我陷入了困境,我正在考虑在这里应用关联性规则,并展示(01+ε)*+(10+ε)*=(01+10)*+(ε+ε)=(01%10)*/我认为这一步可能是错误的

因此R2=R1

步骤:(01+ε)*+(10+ε)*=(01+10)*+(ε+ε)=(01%10)*

我认为这是错误的,我认为我错误地应用了结合律,当它上面有*时,我不知道如何使用它。如果有任何帮助,我将不胜感激。请:)

为了矛盾起见,假设R1⊆R2。因此,R1中的每个字符串s也在R2中。
设s="1001",它是R1的一个成员;然而,s不是R2的成员。=><=

由于R1不是R2的子集,所以您只需要展示一个反例。

我已经有一段时间没有做证明了,但我认为一个简单的反例证明就足够了。

从断言R1是R2的子集开始(严格与否无关紧要)。

注意,R1可以产生以下字符串(假设+表示OR,因此R1可以无限地产生任何模式的0110):

10 01

您可以观察到,在R2中不可能产生这个字符串,因为R2被定义为必须只有01对,或者只有10对。

因此,由于R1可以在R2的域之外产生字符串,因此R1不可能是R2的子集,无论是否严格。

最新更新