3.2 非 CFL 语言
:material-circle-edit-outline: 约 255 个字 :material-clock-time-two-outline: 预计阅读时间 1 分钟
非 CFL 语言
CFL 的闭包(封闭性)
首先确定 CFL 的边界,我们可以确定 CFL 的闭包
特别的,我们可以确定,CFL 与正则语言的交集是 CFL
直接把两个机器并行就行了
交和补是不封闭的
[!PROOF]
[!EXAMPLE]
Pumping Theorem
[!NOTE] Lemma
废话,就是对于一个树,每个结点有 \(\phi\) 个子节点,那么最多有 \(\phi ^h\) 个叶子
[!NOTE] Proof
我们这选取了一个特定长度的字符串 \(\omega\)
如此能确定 T 存在一条路径长度会大于非终结符数量,所以确定这条路径上有两个结点对应同一个非终结符
然后根据语法树生成规则,我们就可以无限生成了:
与正则语言的泵定理类似,这个泵定理常用于证明某个语言不是 CFL
[!EXAMPLE] 证明某个语言不是 CFL
注意 \((abc)^n \ne a^nb^nc^n\)
[!EXAMPLE]
素数不可能被表示为等差数列
[!EXAMPLE]
CFL \(\cap\) regular 还是 CFL