常规语言 – 显示{a,b}上的以下内容是常规的

给定字母{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)*.

点赞