【问题标题】:construct a pushdown automata for L={a^mb^n where n<=m<=2n}?为 L={a^mb^n 其中 n<=m<=2n} 构造一个下推自动机?
【发布时间】:2021-05-10 20:55:55
【问题描述】:

我想了解L={a^nb^m where n&lt;=m&lt;=2n} 的下推自动机的构造?我在堆栈上找到了this 问题。

这是我理解的答案所说的:

策略如下:我们可以轻松地制作一个接受 a^n b^n 的 PDA, 我们可以很容易地制作一个接受 a^n b^2n 的函数。我们的语言是 这些语言的超集,也接受任何带有数字的东西 b 在 n 和 2n 之间。我们可以利用非确定性来允许 如下:对于我们放入堆栈的每个 a,我们可以 不确定性地决定是否在之前消耗一个或两个 b 弹出一个。如果我们的 NPDA 选择每次消耗一个,我们得到 a^n b^n。如果它选择每次消耗两个,我们得到 a^n b^2n。如果它 选择两者中的一些,我们会在这些极端之间得到一些 b。 只有当我们用空堆栈耗尽输入时,我们才会接受。

现在,我稍微改变了问题(交换了 a 和 b 的幂)。语言现在是L={a^m b^n where n&lt;=m&lt;=2n}? 如果权力互换,现在这个策略会如何变化?

【问题讨论】:

  • 你觉得答案有什么变化?

标签: automata computation-theory pushdown-automaton


【解决方案1】:

我们可以利用非确定性来实现这一点,如下所示:对于我们放入堆栈的每个 a,我们可以不确定地决定在弹出 a 之前是消耗一个还是两个 b。

只需在这句话中交换ab,你应该就有答案了。

提示:不是将 a 放入堆栈,而是放入 b,然后“消耗”一或两个 a在弹出之前。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    相关资源
    最近更新 更多