【发布时间】:2019-03-06 09:59:46
【问题描述】:
为以下语言设计一个 PDA
L = {a^nb^m : m ≥ n, m-n 是偶数}。
【问题讨论】:
-
到目前为止你尝试了什么,你在哪里卡住了?
标签: automata pushdown-automaton
为以下语言设计一个 PDA
L = {a^nb^m : m ≥ n, m-n 是偶数}。
【问题讨论】:
标签: automata pushdown-automaton
让我们从 a^n b^m 的 PDA 开始,其中 m >= n。 PDA 可以为它看到的每一个 a 压入一个 a 到堆栈,每看到一个 b 就弹出一个 b,如果它用完 b 而堆栈上还有 a,它会拒绝。
现在,我们还需要做什么来排除 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'。
【讨论】: