正则表达式L(r)= {a ^ n b ^ m:n + m是偶数},r =?

时间:2018-11-13 09:37:24

标签: regex math automata formal-languages computability

所以我之前做了一个问题,说:

L(r) = {w in {a,b}* : w contains at least 2 a's}

为此,我说了{a^2n , b},因为这样可以保证像aabaabaab之类的字符串。不知道如何处理我在标题中张贴的那个字符串。一个解决方案可能是a^2n, b^2m,所以它始终是偶数,但是像a^n b^3m这样的2个奇数也总是偶数。我可以设置n>=m之类的界限吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您正确地观察到nm必须要么都是偶数,要么都是奇数。只需添加一个奇数大于偶数即可。

a s的偶数”({a2n : n ≥ 0}的简单正则表达式是(aa)*,而“ a s的奇数”是{{ 1}}。

在此基础上,我们可以为原始问题提供两种情况:(aa)*a(aa)*(bb)*,它们可以合并为(aa)*a(bb)*b。 (假设您使用(aa)*(ab+ε)(bb)*进行替换,使用ε表示空字符串。)

答案 1 :(得分:0)

r=((a+b)^2)* ,我认为这个正则表达式也给出了正确的答案