鉴于字母{a, b}
,我们将Na(w)
定义为单词a
中w
的出现次数,Nb(w)
的出现次数。显示以下{a, b}
设置是常规的。
A = {xy | Na(x) = Nb(y)}
我很难搞清楚从哪里开始解决这个问题。任何信息都将不胜感激。
答案 0 :(得分:2)
是的,这是常规语言!
如果a
和b
属于A = {xy | Na(x) = Nb(y)}
语言,则包含任何字符串。
示例:强>
假设字符串为:w = aaaab
我们可以将此字符串分为前缀x
和后缀y
w = a aaab
--- -----
x y
a
中x
的数量为1,b
中y
的数量也为1。
类似于字符串: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)。
Formal Prrof:
注意:字符串仅由a
组成或由b
组成,不属于语言,例如aa
,a
,bbb
...
让我们定义新的拉格朗日CA
,CA = {xy | Na(x) != Nb(y)}
。 CA
代表A
的补充,由字符串组成,仅包含a
个或仅b
个。
1 CA是常规语言,正则表达式为a+ + b+
。
现在我们知道CA是一种常规语言(可以通过正则表达式表达,因此DFA)和任何常规语言的补语都是常规语言,因此语言A
也是常规语言!
要为补充语言构建DFA,请参阅:Finding the complement of a DFA?并为DFA编写正则表达式,请参阅以下两种技术。
'+' Operator in Regular Expression in formal languages
PS :A = {xy | Na(x) = Nb(y)}
的正则表达式为(a + b)*a(a + b)*b(a + b)*
。
答案 1 :(得分:0)
首先,找出如何证明集合是规则的。 一种方法是定义接受该语言的有限状态机。
第二:也许想想为什么这个集合不规律。
答案 2 :(得分:0)
提示:A = {a,b} *。
尝试通过对单词长度的归纳来证明,或者在A中找到最短的单词不。