给定字母表{a, b}
,我们将其定义为单词中出现的次数,对于. 证明下面的集合是有规律的。Na(w)
a
w
Nb(w)
{a, b}
A = {xy | Na(x) = Nb(y)}
我很难弄清楚从哪里开始解决这个问题。任何信息将不胜感激。
给定字母表{a, b}
,我们将其定义为单词中出现的次数,对于. 证明下面的集合是有规律的。Na(w)
a
w
Nb(w)
{a, b}
A = {xy | Na(x) = Nb(y)}
我很难弄清楚从哪里开始解决这个问题。任何信息将不胜感激。
是的,它是普通语言!
任何字符串都由 ifa
和b
属于 language组成。A = {xy | Na(x) = Nb(y)}
例子:
假设字符串是:w = aaaab
我们可以把这个字符串分为前缀x
和后缀y
w = a aaab
--- -----
x y
a
in的数量x
是一,b
in 的数量y
也是一。
与字符串类似:abaabaa
可以分解为x = ab
(N a (x) = 1) 和y = aabaa
(N b (y) = 1)。
或w = bbbabbba
如x = bbbabb
(N a (x) = 1) 和y = ba
(N b (y) = 1)
或者w = baabaab
作为 x =baa
和y = baab
(N a (x) = 2) 和 (N b (y) = 2)。
因此,您始终可以将由a
和组成的字符串分解b
为前缀x
和后缀y
,使得 N a (x) = (N b (y).
正式教授:
注意:字符串仅a
由 s 组成或由b
s 组成不属于 languagr 例如aa
, a
, bbb
...
让我们定义新的拉格朗日CA
使得. 代表 由字符串组成的补码,仅由s 或仅由s 组成。 CA = {xy | Na(x) != Nb(y)}
CA
A
a
b
1 CA 是一种正则语言,它的正则表达式是.a+ + b+
现在我们知道 CA 是一种正则语言(它可以是正则表达式等 DFA 表达式),任何正则语言的补码都是正则语言,因此语言A
也是正则语言!
要为补语构建 DFA,请参阅:找到 DFA 的补语?并为 DFA 编写正则表达式参考以下两种技术。
PS:顺便说一句, is 的正则表达式。A = {xy | Na(x) = Nb(y)}
(a + b)*a(a + b)*b(a + b)*
首先,找出如何证明一个集合是正则的。一种方法是定义一个接受该语言的有限状态机。
第二:也许想想为什么集合不规则。
提示:A = {a, b}*。
尝试通过对单词长度的归纳来证明它,或者通过找到不在A 中的最短单词来证明它。