泵引理

  • 上下文无关语言应满足的一个必要条件
  • 可用于判定某些语言不是上下文无关语言

引理

有一个对应于 CNF 的语法分析树,且该树产物为 。若最长的路径长度为 ,则

Proof

基础:,显然 归纳:根使用的产生式一定是 形式,以 为根的子树的最大路径长度小于等于 ,则这两颗子树的产物长度至多为 ,因此整棵树的产物长度至多为

不含 的非空 CFL ,CFG 为 CNF,,设 ,对于任一长度不小于 的字符串 ,考察 的分析树。 设从根节点开始的一条最长路径标记为 ,若 ,则 ,但 ,因此该分析树高度至少为 ,因此 。 由鸽巢原理,设 ,其中 划分为 的子树产生, 产生。由于没有单位产生式,,因为 的子树高度不超过 所以 的长度不超过

Pumping 特性

对任意的

直观上,产生式需包含

因此会产生递归,第二个产生式可以递归 次,得到

泵引理

是 CFL,则存在正常数 ,使得任一长度不小于 的字符串 ,都可以分成 5 部分, 满足:

  • 对任意 ,有

Proof

,成立 否则,设 CFG 为一个 CNF,取 即可

可用于证明 不是 CFL:

  • 考虑任一
  • 找到一个满足以下条件的
  • 找到一个 ,使得

Example

若是 CFL,设 为泵引理得到的常数,考虑串 观察到 不能同时包含 0 和 2,因为 中没有 2,则 中包含 0 和 1,且至少有其中之一。由泵引理, 应该属于 ,但是 中包含 个 2 和不到 个的 0 或 1 若 中没有 0,同理

Example

, 若 含一种符号,则 至多含三种符号,若 含两种符号,则 含两种符号,总有

Example

,由于 ,则 在前 个 0 中,设 包含 个 0,则 开头。,若 ,则 ,因此 一定在第一段 1 后结束,不能重复。 若 跨越了第一段 0 和第一段 1,设 中包含 个 0 和 个 1,则 开头。 ,若 ,则 ,矛盾 其余情况类似。

封闭运算

替换

为语言的集合,

上的 CFL,对任何 为 CFL,则 为 CFL。

为 CFL,则 为 CFL 可用替换证明

交、补、差

  • ! CFL 间的交、补、差不一定是 CFL 反例: 为 CFL,但 不为 CFL

与正规语言的交

为 CFL, 为正规语言,则 为 CFL 课通过构造 PDA 证明

闭包

为 CFL,则 也为 CFL

连接

为 CFL,则 为 CFL

反转

为 CFL,则 为 CFL

同态

映射 ,若 为 CFL,则 为 CFL

Example

证明 不是 CFL 若是, 为 CFL,设 ,则

为 CFL,矛盾。

逆同态

为 CFL,则 为 CFL

CFL 的判定性质

是否为空

  • 计算生成符号集
  • 判定 是否为生成符号 时间复杂度为

是否包含某串

  • 将文法变换为 Chomsky 范式
  • 用 CYK 算法进行判定 CYK 算法时间复杂度为

CYK 算法

  • 为可以推导出 的变元的集合
  • 从下往上填表处理
  • 为产生式,则
  • 时, 当且仅当存在 ,有 为产生式

Example

判定 是否生成无限多个串 设 G 中非终结符的数量为 ,令 ,枚举所有长度满足 的串 并判定 是否属于 ,若存在这样的串,则 是无限的,否则是有限的。

若找到了这样的 ,则根据泵引理,,可以通过重复 来让串的长度无限伸长, 是无限的。 若 是无限的,设 中满足 的最短的串,则 ,若 ,则 ,与 为最短的串矛盾。因此总能找到 的串,从而被算法判定为无限的。