计算理论:上下文无关文法的属性
Properties of Context-Free Grammar
The Pumping Lemma for CFL
考虑一个 CNF 文法
Proof.
根据
Basis.
Induction. 考虑最长路径为
Q.E.D.
Pumping Lemma: 令
- 对任意
,有
Proof.
考虑
考虑最长路径,设其长度为
则可以划分 parse tree 的 yield,令
因此可以构造新的 parse tree,如使用
同时由于选择的是最后
Q.E.D.
Pumping Lemma 可以用于证明某 language 不是 CFL
Closure Properties of CFL
Substitutions
考虑 alphabet
即
则有:若
Proof.
基本思路为根据
设
则可以为
是 与所有 的 union 是所有 的 union 包含 - 所有
的产生式 - 所有
的产生式,但将所有 terminal 用 代替
- 所有
则只需证明
(
(
- 在 parse tree 中删除某些子树,其 yield 为
由于
Q.E.D.
根据 substitution 的封闭性,可以得出 CFL 对于下列操作是封闭的
- union
- concatenation
- closure (
) and positive closure ( ) - homomorphism
Proof.
只需构造特定的 substitution 即可
- union:对于 CFL
, ,其中 - concatenation:对于 CFL
, ,其中 - closure and positive closure:考虑 CFL
,令 ,则 ,同理,若 ,则 - homomorphism:考虑
是定义在 的 CFL,而 是定义在 的 homomorphism,则对于任意 ,定义 ,则
Q.E.D.
Other closure properties
Reversal: 如果
Proof.
构造
对推导长度归纳即可得出
Q.E.D.
Intersection: CFL 对 intersection 是不封闭的,考虑
上述两个语言都是 CFL,可以为其构造出对应的文法,但是其 intersection
不是 CFL(pumping lemma 即可证明)
但是 CFL 和 正则语言的 intersection 仍是 CFL,即
对于 CFL
Proof.
只需要平行地运行 PDA 和 DFA 即可
令 PDA
则可构造 PDA
定义
注意当 PDA 在
根据推导步数的归纳可以得出
且
可以得出
Q.E.D.
同样可以得出对于 CFL
是 CFL 不一定是 CFL 不一定是 CFL
Proof.
,而 是正则- 若
总是 CFL,则考虑 ,这与上述结论矛盾 - 若
总是 CFL,则 也是 CFL,这与上述结论矛盾
Q.E.D.
Inverse Homomorphism: 证明思路类似证明正则语言对 inverse homomorphism 是封闭的。构造一个 PDA,每当读入一个输入
考虑 CFL
Proof.
假设
其中
由于
对于
buffer 为空,即
,此处的 。即当 buffer 为空, 读入下一个输入 并将 放入 bufferbuffer 不为空,则若
,则即
用 buffer 中第一个 symbol 模拟 的运行
则有
证明基于对推导步数的归纳即可。需要注意的是
故
Q.E.D.
Decision Properties of CFL
对于 CFL 的 decision properties,有一些是有确定的算法可以解决的
- 判断
是否在 CFL 中 - 判断 CFL
是否为空 - 判断 CFL
是否无限
而有一些没有算法可以解决,换言之这些问题是 undecidable 的
- 判断两个 CFL 是否相等
- 判断两个 CFL 是否 disjoint
Emptiness: 测试 CFL
CFL
Membership: 有一种算法利用 DP 的思想,若 string 的长度为
考虑 CFL
其中
则
从底向上,第
计算表中条目是一个从底向上的归纳的过程
Basis. 即最底下一行,
Induction. 假设需要计算
都从
则需要找到所有满足
的
CYK 算法的正确性从其归纳的计算过程中即可得出。
算法计算每个条目需要
Infiniteness: Infiniteness 的测试思想与正则语言相同,对于 pumping lemma 的常数
存在一个满足条件的 string 则