FSM
4/3/26About 3 min
FSM
- Finite State Machines -Deterministic Finite State Automata DFSA
- Finite-State machine conversion from NDFSA tO DFSA
- Finite-state machine limitations
- Push Down Automata and Context Free Grammars and their limitations
FSM
DFSA
| 核心概念 | 考点讲解 | 示例 |
|---|---|---|
| 形式定义 | Q: 状态集;: 输入字母表;: 初始状态;: 接受状态集。 | |
| 关键特性 | 转移函数:。确定性指对任一状态 和输入符号 ,下一个状态 都是唯一确定的。 | 识别语言 。只需要两个状态 (偶数个0) 和 (奇数个0)。 |
| 语言识别 | 。一个字 被接受,当且仅当自动机从 读完 后停在一个接受状态中。 |
NDFSA
| 核心概念 | 形式定义/解释 | 来源 |
|---|---|---|
| 转移函数 | 33333333。 | 给定当前状态和输入符号,输出是一个状态集合( 的幂集)而非单个状态,因此存在多条计算路径 34343434。 |
| 接受条件 | 如果存在至少一条计算路径以最终状态 结束,则 NDFSA 接受该字 35353535。 | 与 DFSA 相比,NDFSA 允许存在多条路径 36。 |
| 等价性 | NDFSA 和 DFSA 的集合是等价的 37。 | 对于任何 NDFSA ,都可以构造一个等价的 DFSA 使得 38。转换方法:DFSA 的每个状态代表 NDFSA 状态的一个子集(即 ) 39393939。 |
NDFSA -> DFSA
| 核心概念 | 考点讲解 | 示例/方法 |
|---|---|---|
| 等价性 | NDFSA 和 DFSA 具有相同的识别能力,它们都只能识别正则语言 (Regular Languages)。 | 转换的目的是为了便于计算机实现,因为 DFSA 的行为是确定的。 |
| 转换方法 | 子集构造法 (Subset Construction) | |
| 步骤 | 1. 新状态集 :DFSA 的每个状态对应 NDFSA 状态的一个子集( 是 的幂集 的子集)。2. 初始状态 :是 NDFSA 初始状态 构成的集合。3. 新转移函数 :对于 DFSA 的状态 和输入 , 定义为所有 NDFSA 状态 经过 转移到的所有状态的集合:。4. 接受状态 : 中的状态 必须包含至少一个 NDFSA 的接受状态 。 |
FSM limitation
| 局限性 | 考点讲解 | 经典反例 |
|---|---|---|
| 无法计数 | DFSA/NDFSA 只有有限个状态,这限制了其记忆能力。它无法记住任意长度、数量不确定的信息。 | 。自动机无法记住 的任意数量 ,以便稍后匹配相同数量的 。 |
| 无法识别 | FSM 只能识别正则语言。对于需要堆栈或更复杂内存结构才能识别的上下文无关语言 (CFL),FSM 无能为力。 | (回文串语言)。FSM 无法记住前半段 以便反向匹配 。 |
PDA
| 核心概念 | 考点讲解 | 示例 |
|---|---|---|
| CFG | 。用于描述上下文无关语言 (CFL)。是比正则语言更强大的语言类别。 | 。生成 。 |
| PDA 结构 | FSM + 栈 (Stack)。栈提供了一个无限的 LIFO (后进先出) 内存,用于存储和检索信息。 | |
| PDA 转移函数 | 。它不仅依赖于输入符号和当前状态,还依赖于栈顶符号。 | 识别 :当读取 时,将 压入栈(计数);当读取 时,弹出一个 (匹配)。 |
| PDA 局限性 | PDA 只能识别上下文无关语言 (CFL)。它无法处理需要随机存取或非 LIFO 内存的语言。 | 。PDA 无法同时匹配三种字母的数量关系。需要更强大的模型——图灵机来识别。 |
