为什么L = {wxw ^ R | w,x属于{a,b} ^ +}是常规语言

时间:2013-01-25 11:54:31

标签: automation regular-language dfa nfa pumping-lemma

使用抽取引理,我们可以很容易地证明语言L1 = {WcW^R|W ∈ {a,b}*} 不是常规语言。 (字母表是{a,b,c}; W ^ R表示反向字符串W)

但是,如果我们将c替换为"x"(x ∈ {a,b}+),例如L2 = {WxW^R| x, W ∈ {a,b}^+},则L2 是常用语言

你能给我一些想法吗?

3 个答案:

答案 0 :(得分:12)

  

如果我们用x替换字符c,其中(x∈{a,b} + ),比如说,L2 = {WXW R | x,W∈{a,b} + },则L2是常规语言。

是的,L2是常规语言:)。

您也可以为L2编写正则表达式。

语言L2 = {WXW R | x,W∈{a,b} + }表示:

  • string应该开始由ab组成的任何字符串W,并以反向字符串W R 结束。
  • 注意:因为W和W R 彼此相反所以字符串以相同符号开头和结尾(可以是ab
  • 并且在a的中间包含<{em> bX的任何字符串。 (由于+X的长度变得大于一|X| >= 1

这种字符串的示例如下:

aabababa,如下:

   a    ababab    a  
  --   --------   --
   w     X        W^R  

或者它也可以:

babababb,如下:

   b    ababab    b
  --   --------   --
   w     X        W^R

查看W的长度不是语言定义中的约束。

所以任何字符串WXW R 都可以假设等于a(a + b) + ab(a + b) + b

    a    (a + b)+   a
   ---   --------  ---
    W      X       W^R  

    b    (a + b)+   b
   ---   --------  ---
    W      X       W^R    

此语言的正则表达式为:a(a + b) + a + b(a + b) + {{1 }}

不要将b R WXW R 混合,WCWX混合这使语言成为常规。通过包含+X(a + b)*我们可以为W ab提供有限选择(有限是常规的) )。

语言WXW R 可以说:如果以a开头,a结尾,b结尾{{1} }}。所以相应地我们需要两个最终状态。

  • Q6如果bW
  • Q5如果aW

IT DFA如下所示。

DFA

答案 1 :(得分:2)

语言中包含| W |的任何字符串&GT; 1可以解释为| W |语言中的字符串因此,如果字符串以相同的符号开头和结尾,则该字符串使用该语言。有两个符号:a和b。因此该语言等同于语言a(a+b)(a+b)*a + b(a+b)(a+b)*b。为了证明这一点,你应该形式化“如果y在WxW中,那么y在a(a + b)(a + b)* a + b(a + b)(a + b)* b中的论证;以及如果y在a(a + b)(a + b)* a + b(a + b)(a + b)* b中,那么y在WxW中。

它在其他情况下不起作用,因为c是固定符号,并且不能包括除结尾之外的所有字符。只要在示例中绑定“x”的长度,语言就会变得不规则。

答案 2 :(得分:2)

问题是W∈{a,b} ^ +,所以a ^ n(a + b)a ^ n应该在语言L2中。现在没有这样的DFA会接受字符串a ^ n(a + b)a ^ n,因为在接受了n个a和(a + b)^ +后,dfa无法准确记住很多它在开头就被接受了,所以L2不应该是常规的.........但是我搜索这个答案的每一个地方都说它是常规的......这会让我感到烦恼

相关问题