给定字母{a,b},我们将Na(w)定义为单词w中a的出现次数,并且类似地对于Nb(w).显示{a,b}的以下设置是常规的.
A = {xy | Na(x) = Nb(y)}
我很难搞清楚从哪里开始解决这个问题.任何信息将不胜感激.
最佳答案 是的它是常规语言!
如果a和b属于语言A = {xy |,则包含任何字符串Na(x)= Nb(y)}.
例:
假设字符串是:w = aaaab我们可以将此字符串分为前缀x和后缀y
w = a aaab
--- -----
x y
in中的a的数量是1,y中的b in的数量也是1.
类似于字符串:abaabaa可以被打破为x = ab(Na(x)= 1)和y = aabaa(Nb(y)= 1).
或w = bbbabbba为x = bbbabb(Na(x)= 1)和y = ba(Nb(y)= 1)
或者w = baabaab,其中x = baa,y = baab,其中(Na(x)= 2)和(Nb(y)= 2).
因此,您始终可以将由a和b组成的字符串分为前缀x和后缀y,使得Na(x)=(Nb(y).
正式Prrof:
注意:字符串仅由bs组成或由bs组成,不属于语言,例如aa,a,bbb ……
让我们定义新的Lagrange CA,使得CA = {xy | Na(x)!= Nb(y)}. CA代表A的补充,由字符串组成仅包含或仅包含bs.
1,CA是常规语言,正则表达式是b.
现在我们知道CA是一种常规语言(可以通过正则表达式表达,因此DFA)和任何常规语言的补语是常规语言,因此语言A也是常规语言!
要为补充语言构造DFA,请参阅:Finding the complement of a DFA?并为DFA编写正则表达式,请参阅以下两种技术.
> How to write regular expression for a DFA
> How to write regular expression for a DFA using Arden theorem
‘+’ Operator in Regular Expression in formal languages
PS:Btw正则表达式为A = {xy | Na(x)= Nb(y)}是(a b)* a(a b)* b(a b)*.