使用抽取引理,我们可以很容易地证明语言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 是常用语言。
你能给我一些想法吗?
答案 0 :(得分:12)
如果我们用x替换字符c,其中(x∈{a,b} + ),比如说,L2 = {WXW R | x,W∈{a,b} + },则L2是常规语言。
是的,L2
是常规语言:)。
您也可以为L2
编写正则表达式。
语言L2 = {WXW R | x,W∈{a,b} + }表示:
a
和b
组成的任何字符串W
,并以反向字符串W R 结束。a
或b
) a
的中间包含<{em> b
和X
的任何字符串。 (由于+
,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)
+ a
或b(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 混合,WCW
与X
混合这使语言成为常规。通过包含+
来X
来(a + b)*
我们可以为W
a
和b
提供有限选择(有限是常规的) )。
语言WXW
R 可以说:如果以a
开头,a
结尾,b
结尾{{1} }}。所以相应地我们需要两个最终状态。
b
是W
a
为W
IT 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不应该是常规的.........但是我搜索这个答案的每一个地方都说它是常规的......这会让我感到烦恼