📜  非确定性下推自动机

📅  最后修改于: 2020-12-17 07:53:47             🧑  作者: Mango

非确定性下推自动机

非确定性下推自动机与NFA非常相似。我们将讨论一些接受NPDA的CFG。

接受确定性PDA的CFG也接受非确定性PDA。同样,有些CFG只能被NPDA接受,而不能被DPDA接受。因此,NPDA比DPDA更强大。

例:

设计用于回文条的PDA。

解:

假设语言由字符串L = {aba,aa,bb,bab,bbabb,aabaa,……]组成。该字符串可以是奇数回文,甚至是回文。构造PDA的逻辑是,我们将一个符号压入堆栈,直到字符串的一半,然后读取每个符号,然后执行弹出操作。我们将进行比较以查看弹出的符号是否与读取的符号相似。无论我们到达输入的末尾,我们都希望堆栈为空。

该PDA是不确定的PDA,因为找到给定字符串并从左侧读取字符串并从右(反向)方向匹配该字符串会导致不确定的移动。这是ID。

模拟abaaba

δ(q1, abaaba, Z)            Apply rule 1
⊢ δ(q1, baaba, aZ)          Apply rule 5
⊢ δ(q1, aaba, baZ)          Apply rule 4
⊢ δ(q1, aba, abaZ)          Apply rule 7
⊢ δ(q2, ba, baZ)            Apply rule 8
⊢ δ(q2, a, aZ)              Apply rule 7
⊢ δ(q2, ε, Z)               Apply rule 11
⊢ δ(q2, ε)                  Accept