上下文无关语言解析与下推自动机的深入探讨
1. 解析的基本概念
在语言识别中,之前讨论过使用机器模型判断字符串 $x$ 是否属于语言 $L$,机器给出 “是” 或 “否” 的答案。但有时我们需要更多信息,当答案为 “是” 时,还需要一个证明。当字符串 $x$ 由上下文无关文法 $G$ 生成时,我们可以构建一个下推自动机(PDA)来识别它。当 PDA 接受字符串 $x$ 时,意味着 $x \in L(G)$,此时若要证明接受 $x$ 是正确的,只需展示使用 $G$ 对 $x$ 的推导过程,这个计算给定字符串 $x$ 实际推导的过程就称为解析。
例如,对于某个上下文无关文法 $G$ 和其转移函数 $\delta$,考虑输入 $x = ()(())$。可以观察到,到目前为止看到的输入与当前栈的连接恰好是当前推导出的字符串,这直接源于相关定理证明中的断言。所以,当 PDA 接受任何 $x$ 时,它展示了 $x$ 的推导过程。
然而,这种解析是由非确定性机器完成的,这在理论上虽然有趣,但解析是一个非常实际的问题。解析是探索由文法生成的语言字符串语义的基本过程,就像在高中解析英语句子是为了分析句子的结构和意义一样。计算机科学家熟悉的许多应用都涉及解析,主要是人工语言,特别是计算机编程语言,通常使用上下文无关文法定义,典型应用是人工语言编译器的设计。
2. 确定性下推自动机与解析
对于有限自动机(FAs),我们从确定性机器开始讨论,因为它们简单且现实,并且非确定性有限自动机(NFAs)在识别语言类方面并不比确定性有限自动机(DFAs)更强大。但对于下推自动机(PDAs),我们从非确定性的开始,因为它们更强大,需要这种能力来识别所有上下文无关语言。 <
超级会员免费看
订阅专栏 解锁全文
624

被折叠的 条评论
为什么被折叠?



