Answers:
我不太确定您要寻找哪种口味的“为什么”。下例显示了允许不确定性时功率增加的原因之一:
让 是回文集 在一些字母(至少两个符号)上,其中 是相反的 。用于此语言的NPDA可以继续将符号推入其堆栈,然后在某个时候猜测它已到达输入的中间并逐渐清空堆栈。请注意,接受条件纯粹是存在的-足以正确猜测要接受的单词。
确定性PDA必须以仅取决于当前前缀的某种方式来选择它所考虑的中间位置。假设就是这样的DPDA。对于任何,让 ; 让 是空话,并且 。这是回文序列,每个回文序列的下一个前缀,因此 必须处于接受状态 ,读取后堆栈为空 。根据鸽子洞的原理,一定有一些 这样 和 (状态数量是有限的,因此必须“重用”某些状态,因为存在无限数量的状态 s)。但是之后 无法区分 是回文,来自 ,事实并非如此。
FA确定性或非确定性地接受相同的语言(即常规语言)。
但是在PDA的情况下,如果我们限制其确定性地运行,它将不接受某些CFL(不具有前缀属性的 CFL(RL除外))。
为什么这样?
考虑一个没有前缀属性的CFL示例(lang的Prefix属性:没有字符串是lang中另一个字符串的适当前缀)。
L = wwr
例如。字符串00和0000。(00是一个适当的前缀0000,因此wwr没有首选属性)。
发生00时, DPDA将进入最终状态。现在,由于DPDA在接受性和连续性之间没有选择,因此接受00之后就不能接受0000。这是PDA需要不确定性的地方。
观察结果:对于FA,lang(RL)不带偏好。属性可以确定地接受(例如,以0开头的字符串)。这说明RL和CFL的前缀属性的影响不同。PDA的确定性和非确定性之间的差异产生了一个新的lang系列。DPDA接受。该语言称为DCFL。