📜  下推式自动机接受

📅  最后修改于: 2020-11-26 10:20:42             🧑  作者: Mango


有两种定义PDA可接受性的方法。

最终状态可接受性

在最终状态可接受性中,当在读取整个字符串后PDA处于最终状态时,PDA接受字符串。从起始状态开始,我们可以进行最终以任何堆栈值结束的移动。只要我们最终处于最终状态,堆栈值就无关紧要。

对于PDA(Q,∑,S,δ,q 0 ,I,F),最终状态F集合接受的语言是-

L(PDA)= {w | (q 0 ,w,I)⊢*(q,ε,x),q∈F}

对于任何输入堆栈字符串x

空栈可接受性

在此,当在读取整个字符串后PDA清空了其堆栈时,PDA会接受一个字符串。

对于PDA(Q,∑,S,δ,q 0 ,I,F),空堆栈接受的语言为-

L(PDA)= {w | (q 0 ,w,I)⊢*(q,ε,ε),q∈Q}

构造一个接受L = {0 n 1 n | n≥0}

掌上电脑

该语言接受L = {ε,01,0011,000111,………………………………..}

在此,在此示例中, “ a”“ b”的数量必须相同。

  • 最初,我们在空堆栈中放入一个特殊符号“ $”

  • 然后在状态q 2处,如果遇到输入0且top为Null,则将0压入堆栈。这可能会重复。并且如果遇到输入1且top为0,则将其弹出0。

  • 然后在状态q 3处,如果遇到输入1且top为0,则将其弹出0。这也可能会迭代。如果遇到输入1且top为0,则会弹出top元素。

  • 如果在栈顶遇到特殊符号“ $”,则会弹出特殊符号,最后进入接受状态q 4

构造一个PDA,接受L = {ww R | w =(a + b)*}

PDA L1

最初,我们在空堆栈中放入一个特殊符号“ $”。在状态q 2处,正在读取w 。在状态q 3中,匹配输入时弹出0或1。如果给出任何其他输入,则PDA将进入无效状态。当到达特殊符号“ $”时,我们进入接受状态q 4