确定性有限自动机正则表达式与na(w)和nb(w)语言

时间:2015-05-09 01:36:35

标签: regex regular-language automata dfa

我正在尝试在{a,b}

上找到以下语言的正则表达式

L = {w:(na(w)+ nb(w))mod 3< 2}

我想把它分成:

L1 = {w:(na(w)+ nb(w))mod 3 = 0}

L2 = {w:(na(w)+ nb(w))mod 3 = 1}

然后使用L1 Union L2来解决。

我想我已经通过使用解决了na(w)mod 3 = 0 (b * ab * ab * ab *)*

然而,我不确定如何处理na(w)+ na(b)和mod 3的2个条件< 2合一单一正则表达式

1 个答案:

答案 0 :(得分:1)

假设na(w)代表w中出现的数量,你的字母表是{a,b}的事实意味着na(w)+ nb(w)是w的长度。

所以问题是接受长度为3k或3k + 1的{a,b}的字符串语言。这种语言的正则表达式是

((a|b)(a|b)(a|b))*(a|b|empty)