准备考试并正在解决这个问题:
确定R1表示的字符串集是否是R2的子集?
R1 = (01 +10)* R2 = ((01)* + (10)*)
我的尝试: 由于代表相同的表达,我试图证明它们是相同的 R1⊆R2
我试图显示R2与R1相同: 所以我尝试了这个,使用正则表达式等价定理:
((01 +ε)* +(10 +ε))=(01 +ε) +(10 +ε)*
现在我被卡住了,我正在考虑在这里应用关联性规则并显示出来 (01 +ε)* +(10 +ε)* =(01 + 10)* +(ε+ε)* =(01 + 10)* //我认为这一步可能是错误的
因此R2 = R1
步骤: (01 +ε)* +(10 +ε)* =(01 + 10)* +(ε+ε)* =(01 + 10)*
我认为是错误的,我认为我正在应用相关性法则错误,我不知道如何在它上面使用它时如何使用它。任何帮助将不胜感激。请:)
答案 0 :(得分:2)
为了矛盾而假设R1⊆R2。因此R1中的每个字符串s也在R2中。
令s =“1001”,它是R1的成员;但是,s不是R2的成员。 =>< =
由于R1不是R2的子集,因此您需要显示的只是一个反例。
答案 1 :(得分:1)
我在一段时间内没有做过证明,但我认为这样一个简单的反例就足够了。
首先断言R1是R2的一个子集(严格或不重要)。
请注意,R1可以生成以下字符串(假设+
表示OR,因此R1可以无限制地以任何模式生成01
或10
):
10 01
您可以观察到在R2中无法生成此字符串,因为R2的定义使其必须只有01
对,或者只有10
对。
因此,由于R1可以在R2域之外产生字符串,因此R1不可能是R2的一个子集,严格或不严格。