- 自动机理论教程
- 自动机理论 - 首页
- 自动机理论 - 入门
- 自动机理论 - 历史
- 自动机理论 - 应用
- 自动机理论术语
- 自动机中字符串的基础知识
- 自动机的集合论
- 语言和文法
- 计算理论中的文法
- 由文法生成的语言
- 乔姆斯基文法分类
- 有限自动机
- 确定性有限自动机 (DFA)
- 非确定性有限自动机 (NFA)
- 从 NFA 到 DFA 的转换
- DFA 的最小化
- Moore 机与 Mealy 机
- DFA 的补集
- 正则表达式
- 自动机中的正则表达式
- 自动机中的 Arden 定理
- 将正则表达式转换为有限自动机
- 正则文法的泵引理
- 计算理论中的正则集
- 上下文无关文法
- 上下文无关文法 (CFG)
- 上下文无关文法中的二义性
- 上下文无关语言的闭包性质
- 简化上下文无关文法
- 乔姆斯基范式 (CNF)
- 格雷巴赫范式 (GNF)
- 上下文无关文法的泵引理
- 下推自动机
- 下推自动机 (PDA)
- 下推自动机的接受
- 根据 CFG 构造 PDA
- 下推自动机和语法分析
- 图灵机
- 图灵机 (TM) 基础
- 图灵机接受的语言
- 多磁带图灵机
- 多轨迹图灵机
- 非确定性图灵机
- 半无限带图灵机
- 线性界限自动机 (LBA)
- 可计算性和不可判定性
- 图灵语言的可判定性
- 不可判定语言
- 图灵机停机问题
- 计算理论中的 Rice 定理
- Post 对应问题 (PCP)
- 自动机理论资源
- 自动机理论 - 快速指南
- 自动机理论 - 资源
- 自动机理论 - 讨论
乔姆斯基范式
如果产生式具有以下形式,则 CFG 处于乔姆斯基范式:
- A → a
- A → BC
- S → ε
其中 A、B 和 C是非终结符,而a是终结符。
转换为乔姆斯基范式的算法:
步骤 1 - 如果起始符号S出现在右侧,则创建一个新的起始符号S’和一个新的产生式S’→ S。
步骤 2 - 删除空产生式。(使用前面讨论的空产生式删除算法)
步骤 3 - 删除单元产生式。(使用前面讨论的单元产生式删除算法)
步骤 4 - 将每个产生式A → B1…Bn(其中n > 2)替换为A → B1C,其中C → B2 …Bn。对右侧具有两个或多个符号的所有产生式重复此步骤。
步骤 5 - 如果任何产生式的右侧具有A → aB的形式(其中 a 是终结符,而A、B是非终结符),则将该产生式替换为A → XB和X → a。对所有具有A → aB形式的产生式重复此步骤。
问题
将以下 CFG 转换为 CNF
S → ASA | aB, A → B | S, B → b | ε
解答
(1) 由于S出现在 RHS,我们添加一个新状态S0,并将S0→S添加到产生式集合中,它变成:
S0→S, S→ ASA | aB, A → B | S, B → b | ∈
(2) 现在我们将删除空产生式:
B → ∈ 和 A → ∈
删除 B → ε 后,产生式集合变为:
S0→S, S→ ASA | aB | a, A → B | S | ∈, B → b
删除 A → ∈ 后,产生式集合变为:
S0→S, S→ ASA | aB | a | AS | SA | S, A → B | S, B → b
(3) 现在我们将删除单元产生式。
删除 S → S 后,产生式集合变为:
S0→S, S→ ASA | aB | a | AS | SA, A → B | S, B → b
删除 S0→ S 后,产生式集合变为:
S0→ ASA | aB | a | AS | SA, S→ ASA | aB | a | AS | SA
A → B | S, B → b
删除 A→ B 后,产生式集合变为:
S0 → ASA | aB | a | AS | SA, S→ ASA | aB | a | AS | SA
A → S | b
B → b
删除 A→ S 后,产生式集合变为:
S0 → ASA | aB | a | AS | SA, S→ ASA | aB | a | AS | SA
A → b |ASA | aB | a | AS | SA, B → b
(4) 现在我们将找出 RHS 中超过两个变量的情况
这里,S0→ ASA,S → ASA,A→ ASA 违反了 RHS 中两个以上非终结符的限制。
因此,我们将应用步骤 4 和步骤 5 以获得以下最终产生式集合,它处于 CNF:
S0→ AX | aB | a | AS | SA
S→ AX | aB | a | AS | SA
A → b |AX | aB | a | AS | SA
B → b
X → SA
(5) 我们必须更改产生式 S0→ aB,S→ aB,A→ aB
最终产生式集合变为:
S0→ AX | YB | a | AS | SA
S→ AX | YB | a | AS | SA
A → b A → b |AX | YB | a | AS | SA
B → b
X → SA
Y → a