L = {a ^ nb ^ m的PDA:m≥n,m-n为偶数}

时间:2019-03-06 09:59:47

标签: automata pushdown-automaton

为以下语言设计PDA

L = {a ^ nb ^ m:m≥n,m-n是偶数}。

1 个答案:

答案 0 :(得分:0)

让我们从PDA开始,其中m> = n。 PDA可以将看到的每一个a推入堆栈中,将a看到的每个b弹出一个b,并且如果堆栈中仍然有a时b用完了,它将拒绝。

现在,我们还需要做些什么来排除m-n为奇数的情况?好吧,m-n是奇数,意味着我们在输入中剩余了b。我们可以简单地修改接收状态,以便在另外一个b上,将其移动到一个新状态(编码为奇数b),然后在下一个b上返回到接收状态,对残差b必须为偶数的要求进行编码。 >

完整的PDA可能看起来像这样:

q    s    S    q'    S'
q0   a    Z    q0    aZ
q0   a    ax   q0    aax
q0   b    Zx   q2    Z
q0   b    ax   q1    x
q1   b    ax   q1    x
q1   b    Z    q2    Z
q2   b    Z    q1    Z

检查是否可行,可能存在一些错误。读取方法是:

  

从状态q,在输入s上,具有堆栈配置S,PDA可以转换到状态q',并将堆栈配置更新为S'。