区分TOC中的DPDA和NPDA?
与有限自动机(FA)类似,下推自动机(PDA)可以是确定性的或非确定性的。
确定性下推自动机(DPDA)永远没有下一步的选择 -
与确定性有限自动机(DFA)相比,它对每个状态、输入字符和堆栈字符的组合都有可能的输出。
我们需要小心处理每个状态和堆栈字符的组合。对于空符号∧或输入符号,只允许一个事务。或者根本没有事务。
示例
非确定性下推自动机(NPDA)可以包含以下指令,但DPDA不能包含这些指令。
例1 - (0, a, $,push(Y), 0); (0, a, $,pop, 1)
例2 - (0, ∧, $, pop, 3); (0, b, $, nop, 2)
示例
考虑偶数长度回文 - L = {wwR | w ∈ {a, b}+}
状态转换图如下:
这是一个NPDA的例子,因为从状态0开始,它会分支,或者加载另一个字母,或者尝试删除字母。这只能非确定性地完成。
DPDA需要知道何时开始从堆栈中删除字母。因此,NPDA可以识别偶数回文语言,但DPDA不能。
DPDA识别正则语言以及一些非正则语言,但并非所有上下文无关语言。
下图描述了DPDA和NPDA在识别正则语言和上下文无关文法方面的区别:
广告