以下语言Σ= {0,1}都是常规语言:
L = {w | w长度均匀,以01}
开头L = {w | w中1的数字是3}的倍数
L = {w | w不包含子串10}
我被要求为这些语言编写正则表达式,但我不知道该怎么做。任何人都可以就如何解决这些问题给我建议吗?
答案 0 :(得分:2)
以下是一些提示:
您可以使用表达式(0∪1)表示“0或1”,而(0∪1)(0∪1)表示“任意两个字符的字符串”。你可以从第二个表达式中形成所有偶数正则表达式吗?那么你能看到如何从那里获得你需要的语言吗?
任何具有1的倍数的字符串都可以细分为一串较小的字符串,每个字符串由三个1和0的散布组成。你能把所有的弦都用三个1来制作吗?从那里,你能获得所需的语言吗?
这实际上是最简单的一群。写出一些不包含10的字符串。注意什么?作为提示,您可以使用四个字符执行此操作。
希望这有帮助!
答案 1 :(得分:1)
L = {w | w长度均匀,以01}
开头
答案 01((0 + 1)(0 + 1))*
说明:01
本身的长度为偶数,我们可以为0
和1
组成的任何偶数长度字符串后缀。
L = {w | w中1的数字是3}的倍数
答案 (0*10*10*10*)*
说明:0
可以在字符串中的任何位置显示任意数量的时间限制超过1
它应该是3的倍数,因此*
超过3 1
。
L = {w | w 不包含子串10}
答案 0*1*
说明:字符串不能包含10
表示只有1
之后才允许1
。