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
,并以反向字符串WR结尾W
- 注意:因为W和WR彼此相反,所以字符串以相同的符号开始和结束(可以是
或a
)b
- 并在中间包含
和a
的任何字符串,即b
。(由于X
,+
的长度变得大于1X
)|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”的任何字符串并使用泵引理来证明它。