加载中...
下推自动机是在有限自动机基础上增加了一个栈作为辅助存储的计算模型。栈提供了后进先出的无界记忆能力,使其恰好能识别上下文无关语言,是编译器语法分析的理论基础。

| 类型 | 计算模型 |
| 识别语言 | 上下文无关语言 |
| 核心结构 | 栈 |
| 对应文法 | 上下文无关文法 |
下推自动机(Pushdown Automaton,PDA)是一种带有栈存储的自动机模型。它在有限状态控制的基础上,配备一个可以压入和弹出符号的栈。每一步转移不仅取决于当前状态和输入符号,还取决于栈顶符号,并可对栈进行修改。栈提供的无界后进先出记忆,使下推自动机的识别能力超越有限自动机。
下推自动机识别的语言类恰好是上下文无关语言,与上下文无关文法一一对应。也就是说,一个语言能被某个下推自动机接受,当且仅当它能由某个上下文无关文法生成。凭借栈的记忆,它能处理需要计数与匹配的结构,例如括号配对语言,这是有限自动机无法完成的。
下推自动机是编译器语法分析阶段的理论模型。自顶向下和自底向上的语法分析算法,本质上都是在模拟一个下推自动机的运行:用栈保存尚未归约的符号或待展开的产生式。它还用于表达式求值、括号匹配检查以及描述具有嵌套结构的语言。
问:下推自动机和图灵机有何区别?答:下推自动机只有一个栈,访问受后进先出限制,识别上下文无关语言;图灵机拥有可任意读写的纸带,能力更强,可识别递归可枚举语言。
问:为什么栈能识别括号匹配而有限自动机不能?答:括号匹配需要记住任意深度的嵌套层数,有限状态无法保存无界计数,而栈的深度可以任意增长。

| 类型 | 计算模型 |
| 识别语言 | 上下文无关语言 |
| 核心结构 | 栈 |
| 对应文法 | 上下文无关文法 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧