显示{a,b}的以下设置是常规的

时间:2013-09-22 18:37:14

标签: regular-language dfa nfa alphabet

鉴于字母{a, b},我们将Na(w)定义为单词aw的出现次数,Nb(w)的出现次数。显示以下{a, b}设置是常规的。

  

A = {xy | Na(x) = Nb(y)}

我很难搞清楚从哪里开始解决这个问题。任何信息都将不胜感激。

3 个答案:

答案 0 :(得分:2)

是的,这是常规语言!

如果ab属于A = {xy | Na(x) = Nb(y)}语言,则包含任何字符串。

示例:
假设字符串为:w = aaaab我们可以将此字符串分为前缀x和后缀y

  w =   a     aaab
       ---   -----
        x      y

ax的数量为1,by的数量也为1。

类似于字符串:abaabaa可以打破为x = ab(N a (x)= 1)和y = aabaa(N b (y)= 1)。

w = bbbabbbax = bbbabb(N a (x)= 1)和y = ba(N b (y) = 1)

w = baabaab为x = baay = baab为(N a (x)= 2)和(N b (y)= 2)。

因此,您始终可以将包含ab的字符串分为前缀x和后缀y,以便N a (x )=(N b (y)。

Formal Prrof:

注意:字符串仅由a组成或由b组成,不属于语言,例如aaabbb ...

让我们定义新的拉格朗日CACA = {xy | Na(x) != Nb(y)}CA代表A的补充,由字符串组成,仅包含a个或仅b个。

1 CA是常规语言,正则表达式为a+ + b+

现在我们知道CA是一种常规语言(可以通过正则表达式表达,因此DFA)和任何常规语言的补语都是常规语言,因此语言A也是常规语言!

要为补充语言构建DFA,请参阅:Finding the complement of a DFA?并为DFA编写正则表达式,请参阅以下两种技术。

  1. How to write regular expression for a DFA
  2. How to write regular expression for a DFA using Arden theorem
  3. '+' 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中找到最短的单词