设Σ= {a; b}如何在JFLAP中定义一个识别以下内容的PDA?

时间:2018-04-01 09:03:35

标签: formal-languages automaton pushdown-automaton jflap

L = {a ^ n b ^ k | 2n> = k}

例如:abb是L的元素,aabbb是L的元素,ε是L的元素,但是babbb不是L的元素,abbb不是L的元素

1 个答案:

答案 0 :(得分:0)

L中最短的字符串是空字符串e。给定该语言的字符串s,将遵循以下规则:

  1. asL
  2. asbL
  3. asbbL

我们可以将这些观察结果结合起来以获得与上下文无关的语法:

S := aSbb | aSb | aS | e

根据我们的观察,此语法生成的每个字符串都必须位于L中。为了证明这是L的语法,我们必须证明可以生成L中的任何字符串。要获取字符串a^n b^k,我们可以执行以下操作:

  1. x次以上使用规则#1
  2. y次以上使用规则#2
  3. z次以上使用规则#3
  4. 确保x + y + z = n
  5. 确保y + 2z = k

设置y = k - 2z并替换为x + k - 2z + z = n。重新排列:

  1. 如果k > n,则可以选择zx,只要k - n = z - x就可以。
  2. 如果k < n,则可以选择zx,只要n - k = x - z就可以。
  3. 如果是k = n,请注意,我们也可以选择y = n

请注意,由于zx,我们在上面的示例中始终可以选择0 <= x, z <= n0 <= k <= 2n