Automation 为什么L={wxw^R|w,x属于{a,b}^+;}是一种正则语言

Automation 为什么L={wxw^R|w,x属于{a,b}^+;}是一种正则语言,automation,regular-language,dfa,nfa,pumping-lemma,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是一种常规语言 你能给我一些想法吗?语言中任何带有| W |>1的字符串都可以被解释为| W |=1的语言中的字符串。因此,如果字符串以相同的符号开头和结尾,那么它就是语言中的字符串。有两个符号:a和b。因此,该语言等价于a(a+b)(a

使用泵引理,我们可以很容易地证明语言
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是一种常规语言


你能给我一些想法吗?

语言中任何带有| W |>1的字符串都可以被解释为| W |=1的语言中的字符串。因此,如果字符串以相同的符号开头和结尾,那么它就是语言中的字符串。有两个符号: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”的长度,该语言就变得不规则

如果我们用x替换字符c,其中(x∈ {a,b}+,比如说,L2={WXWR | x,W∈ {a,b}+},那么L2是一种规则语言

是的,
L2
是常规语言:)

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

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

  • 字符串应以
    a
    b
    组成的任何字符串开头,即
    W
    ,并以反向字符串WR结尾
  • 注意:因为W和WR彼此相反,所以字符串以相同的符号开始和结束(可以是
    a
    b
  • 并在中间包含
    a
    b
    的任何字符串,即
    X
    。(由于
    +
    X
    的长度变得大于1
    |X |>=1
此类字符串的示例如下所示:

阿巴巴巴,详情如下:

   a    ababab    a  
  --   --------   --
   w     X        W^R  
   b    ababab    b
  --   --------   --
   w     X        W^R
也可以是:

巴巴布,具体如下:

   a    ababab    a  
  --   --------   --
   w     X        W^R  
   b    ababab    b
  --   --------   --
   w     X        W^R
请参见
W
的长度不是语言定义中的约束

因此,可以假设任何字符串WXWR等于
a(a+b)
+
a
b(a+b)
+
b

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

这种语言的正则表达式是:
a(a+b)
+
a
+
b(a+b)
+
b

不要把
WXW
R和
WCW
R混在一起,它的
X
+
使语言规则化。通过包含
X
(a+b)*
我们可以对
W
进行有限选择,即
a
b
(有限是规则的)

语言
WXW
R可以说:如果以
a开始
a结束,如果以
b开始
b结束。因此,相应地,我们需要两个最终状态

  • 如果
    W
    a
  • 如果
    W
    b
其DFA如下所示


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

你到底想要什么?我建议你把你的问题“你能给我一些想法吗?”修改成更简洁、更具建设性的内容。把它画得更像一点,这是否意味着我们不能只从x字符串中选择一个?正如上面提到的例子,如果我们只选择x=“ababab”和w=a^n,那么我们得到wxw^R=(a^n)ababab(a^n)。然而,如果我们使用泵引理,这个例子似乎失败了。这就是我困惑的部分。我们应该在什么时候选择一个合适的有泵引理的Coutere例子。例如wxw^R,我们不能修正x,比如x=特定的字符串,如果我们修正它,我们就不能通过泵引理。不
W
只是一个符号
a
b
,我知道我为什么感到困惑。我们仍然可以在第二语言中应用泵引理,比如xy^(2)z=a^(n+| y |)baaba^(n)(我们随机选择x=baab)。我们注意到xy^(2)z也=a^(n)a^(| y |)baab a^(n)。这仍然是语言L,没有矛盾。以前,我把这误认为是矛盾。这与我们是否修正x无关。无论我们从x中选择什么字符串,我们仍然可以得到属于语言L的字符串。谢谢@Grijesh:-)@Patrick87是的,很抱歉我忘记添加两个循环。谢谢你,帕特里克!我最初的错误方法是-->我们有一个特定的“x”,比如x=abab,然后当我们应用泵引理时,它变成了一个矛盾。但这是一种错误的方法。我们不能指定“x”的任何字符串并使用泵引理来证明它。