为以下语言设计PDA
L = {a ^ nb ^ m:m≥n,m-n是偶数}。
答案 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'。