【问题标题】:How to find out the language that accepted by below NPDA如何找出下面 NPDA 接受的语言
【发布时间】:2020-02-04 08:37:41
【问题描述】:

我想了解如何找到下面 NPDA 将接受的语言。

M = {Q, Σ, Τ, δ, q0, z, F}
Q is a set of state: {q0, q1, q2}
Σ is alphabet: {a, b}
Τ is stack alphabet: {0, 1, z}
δ is transition function
z is stack start symbol
F is set of final state.

而且,它的转场函数如下。

δ(q0, a, z) = {(q1 , 0), (q2 , λ)}
δ(q1, b, 0) = {(q1, 1)}
δ(q1, b, 1) = {(q1, 1)}
δ(q1, a, 1) = {(q2, λ)}

【问题讨论】:

  • 如果没有看到转换,就不可能说出这个 NPDA 接受什么语言。什么是过渡函数?
  • 对不起。我忘记写转换函数了。
  • 执行转换 f(q0, a, z) = (q1, 0) 的结果是只有一个零的堆栈,还是一个零和堆栈底部符号?是“0”还是“0z”?使用的符号对我来说是前者,但只是想确定一下。
  • 是的。前者是对的。谢谢。

标签: computer-science automata automata-theory


【解决方案1】:

基于这些转换,我将假设最终状态是 q2 并且它接受空堆栈(看起来它甚至摆脱了堆栈底部符号 z,这对我来说有点不寻常,但是我想这很好)。

过渡如下:

δ(q0, a, z) = {(q1 , 0), (q2 , λ)}
δ(q1, b, 0) = {(q1, 1)}
δ(q1, b, 1) = {(q1, 1)}
δ(q1, a, 1) = {(q2, λ)}

让我们一次拿一个。

  1. δ(q0, a, z) = {(q1 , 0), (q2 , λ)} 表示如果我们处于初始状态并且看到a,我们可以转到状态q1 并将z 替换为0,或者我们可以得到摆脱z 并进入状态q2。这实际上是 NPDA 的接受配置;这意味着 NPDA 接受空字符串,并且我们确定的任何语言也必须包含该字符串。因为离开初始状态q0 的唯一其他方法是查看a,我们也知道我们语言中的任何非空字符串都必须以a 开头。

  2. δ(q1, b, 0) = {(q1, 1)} 表示如果我们现在处于状态q1,在输入中看到b,并且在堆栈顶部有0,我们可以将堆栈符号更改为1 .一旦我们从q0 进入状态q1,我们就会处于这种配置中。请注意,由于没有其他转换将0 放在堆栈顶部,因此这是唯一一次可以使用此转换;确实必须使用它,因为q1 不接受,我们必须通过这个转换来清除堆栈顶部的0。因此,该语言中所有非空字符串必须以ab 开头。

  3. δ(q1, b, 1) = {(q1, 1)} 表示如果我们处于状态q1,在输入中看到b,并且在堆栈顶部有一个1,我们可以永远消耗更多bs .只要输入中有更多b,我们将保持此配置。然而,我们不一定需要经历这个状态:还有其他转换将1 放在堆栈顶部,并且到接受状态的路径可能根本不涉及这个转换。这种转换让我们可以在我们在上一次转换中看到的所需b 之后放置任意数量的bs。

  4. δ(q1, a, 1) = {(q2, λ)} means that if we're in stateq1, see anain the input and have a1on top of the stack, we can erase the stack and go to the accepting state. This means that any non-empty string in the language ends with a singlea`。

回顾一下:

  1. 空字符串是语言
  2. 语言中的任何非空字符串都以ab 开头
  3. 语言中的任何非空字符串都可以在中间有任意数量的bs
  4. 语言中的任何非空字符串都以a 结尾。

综上所述,我们发现一个描述语言的正则表达式:e + abb*a。我们不应该对此感到惊讶,因为这个 NPDA 的堆栈中只包含零到两个元素。因为使用的堆栈数量是恒定的,所以 NPDA 相当于一些 DFA,因此它的语言必须是正则的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 2020-08-06
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多