【问题标题】:Design the NDPA for the following grammar (Pushdown Automata)为以下语法设计 NDPA(下推自动机)
【发布时间】:2020-06-01 13:22:32
【问题描述】:

我正在尝试为以下语法设计 NDPA。我很困惑。你能帮帮我吗?

∑ = {a,b}    

G = (V,∑,R,S)
V = {S,T,X}

S -> aTXb
T -> XTS|ε
X -> a|b

【问题讨论】:

  • 请将语法复制到问题正文中,而不是链接图片。这样我们会更容易回答。
  • @Patrick87 对不起,我是新来的。我现在已经编辑了。

标签: automata non-deterministic pushdown-automaton


【解决方案1】:

至少有两种方法:尝试弄清楚该语言是什么,然后写出适用于该语言的高效 PDA;或者,如果您很懒惰,您可以作弊并使用证明 NPDA 至少与 CFG 一样强大的构造。让我们做后者,因为这种语言似乎不太容易描述。

要使用该构造,请构建一个执行以下操作的 NPDA:

  1. 首先,按下非终结符开始符号 S
  2. 接下来,从堆栈中弹出
    • 如果符号是终端,则从 NPDA 的输入中使用该符号并且什么也不推送
    • 如果符号是非终结符,则不确定地推动符号的每个产生式的右侧,并且不消耗任何输入
  3. 重复步骤 2 直到崩溃(您不能从输入中消耗与弹出的终端符号匹配的符号)或输入用完。如果您用空堆栈用完输入,则接受。否则,如果您崩溃或堆栈最后仍有东西,请拒绝。

这种构造通过非确定性地构造语法中所有可能的推导来工作。 NPDA 接受一个字符串当且仅当某个非确定性路径接受它;如果根据语法有一个有效的推导,那只会发生在我们的 NPDA 上。根据定义,语法的语言正是具有有效推导的字符串集合,所以我们完成了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-06
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多