语言L = {w∈{a,b} ∗ |的下推自动机设计(w = w ^ R)和a的数量= b的数量}

时间:2019-05-07 21:58:36

标签: computer-science automata

w = w ^ R表示w的倒数与w相同

我正在尝试为L = {w∈{a,b} ∗ | |创建下推自动机。 (w = w ^ R)和a的数量= b的数量}。

我有相等数量的a和b的PDA和回文的PDA。试图将它们结合起来是正确的步骤吗?

1 个答案:

答案 0 :(得分:1)

使用无上下文语言的抽水引理,我们将证明该语言不是上下文无关的。假设该语言是上下文无关的。然后,通过针对上下文无关语言的抽水式引理,该语言中的任何单词w都可以写成w = uvxyz,其中满足以下条件:

  1. | vxy | <= p
  2. | vy | > 0
  3. 对于任何自然数k,u(v ^ k)x(y ^ k)z也是该语言

考虑语言中的字符串(a ^ p)(b ^ 1.5p)(a ^ p)(b ^ 1.5p)(a ^ p)(a与b的编号相同,并且相同向前或向后)。子字符串vxy有多种情况:

  1. vxy完全由第一段中的a组成。抽水将导致一个字符串,该字符串不能是回文,因为a的第一段和最后一段不再具有相同的长度。
  2. vxy由前两个段中的a和b组成。抽水会改变前两个部分,但不会改变最后两个部分,因此不会产生回文。
  3. vxy由第二段中的b组成。抽水会导致字符串不是回文。
  4. vxy由第二部分的b和中间的a组成。同样,这不会产生回文,因为左侧的b小于右侧的b。
  5. vxy由中间的一个组成。抽水的结果很可能是回文,但现在不可能同时具有相等的a和b数。

所有剩余案例与已涵盖的案例完全对称。这意味着vxy别无选择,以致于泵送给我们使用该语言的字符串。这是一个矛盾,因此我们对语言是无上下文的假设是错误的。

我们依靠| vxy | <= p可以减少病例数,使抽水失败。如果我们选择a的中间段的长度小于p-2,这将不会起作用,因为我们可以选择v =(b ^ n)(a ^ n)和y =(a ^ n)(b ^ n),就可以了。