学习Automata PPT的记录. 相关笔记会另开博客记录. 也可能不会开.
Pumping Lemma for CFL
- for every context-free language L
- There is an integer n, such that
- for every string of length
- There exists such that:
- For all ,
即: 对于足够长的字符串, 满足Pumping Lemma
证明:
Lemma1: 对于包含m个变量的, CNF语法, ,
则对于的字符串z, 他的生成树足够高.
换言之, A parse tree with yield z must have a path of length or more.
于是, 由于生成路径足够长, 路径上一定会有重复的变量. 令其为A.
则
相当于, 我们构造性地证明了 production
A -> vAx
的正确性. 因此可以不停地扩展之.
Example:
我们可以证明,
- 是CFL
- 而 不是CFL. 同理, 更多pair的语言也不是CFL.
- (CFL只能描述"头尾性质"的语言)
证明: 假设 是CFL. 那么满足Pumping Lemma.
对于分类讨论, 考虑它划分为的方式. 并发现每种case 都是不合法的.
证毕.
Properties of CFL
- Decision Properties
- Closure Properties
Decision Properties
- 很多RE相关的问题, 都不能在CFL上进行判断
- 如, 两个CFL是一样的吗?
- 两个CFL是disjoint的吗?
- 通过Turing machines 的理论, 来证明不存在这样的算法.
判断CFL是否是empty的:
即, 判断起始符号是否为useless variables.
判断w是否在 当中:
通过算法 CYK来完成, 采用DP算法,
- 对于, 构建变量
- 从长度开始DP, 从1到n. (DP过程根据CNF的production显然. )
判断CFL是否是infinitness的:
即, 判断是否有长度超过n的字符串. 如果有, 根据Pumping Lemma, 该语言是无限的.
Closure Properties
CFL’s are closed under
- union, concatenation, Kleene closure
- reversal, homomorphisms, inverse homomorphisms
But not under
- intersection or difference
证明:
- 考虑两个语言G, H, 并令他们的变量各不相同.
union:
- 构造新的CFG. 仅仅令 即可.
concatenation:
- 构造新的CFG. 仅仅令 即可.
Kleene closure
- 构造新的CFG. 仅仅令 即可.
reversal
- 翻转production. 在CNF下很容易, 非CNF也不难.
homomorphisms and inverse homomorphisms
- 相应地构造相关的CFG 即可.
对于intersection的反例:
- 和都是CFL
- 但是不是CFL. (可通过Pumping Lemma证明)
对于difference的证明:
我们有
于是,
- “任何在difference 下封闭的语言都在intersection下封闭”
- 因此, “任何不在intersection下封闭的语言都不在difference 下封闭”
对于intersection的更多性质:
- CFL与CFL 的intersection不一定是CFL. (反例在上面已经给出)
- CFL与RL 的intersection 一定是CFL. (证明: 注意到PDA和DFA的combination还是PDA)
关于homomorphisms 的更多讨论
- DFA之间的转换, gramma dont help us
- 但是, 我们可以通过PDA之间的转换, 来证明homomorphisms的正确性. (构造 + 递归)