1.封闭性质
定理 3.5.1 上下文无关语言在并、连接和Kleene星号下是封闭的。
证明:
均可以通过已有的上下文无关文法构建出一个对应的新文法来证明。
假设两个上下文无关文法G1=(V1,Σ1,R1,S1)和G2=(V2,Σ2,R2,S2),并做一个假设,它们的非终结符不相交,即V1−Σ1∩V2−Σ2=∅
并: 构造下述文法,新增一个起始符S
G={V1∪V2∪{S},Σ1∪Σ2,R,S}
其中R=R1∪R2∪{S→S1,S→S2}
连接: 构造如下
G={V1∪V2∪{S},Σ1∪Σ2,R,S}
与并不同的是R=R1∪R2∪{S→S1S2}
Kleen星号: 构造L(G1)∗对应的文法
G={V1∪{S},Σ1,R1∪{S→e,S→SS1},S}
注意,与正则语言不同的是,上下文无关语言类在交和补下并不封闭!!!
定理 3.5.2 一个上下文无关语言与一个正则语言的交是一个上下文无关语言
可以用一台下推自动机PDA以及一台确定型有穷自动机DFA构造一台PDA来证明
假设PDA为M1=(K1,Σ,Γ1,Δ1,s1,F1),而NFA为M2=(K2,Σ,δ,s2,F2)
联合形成的PDA为M=(K,Σ,Γ,Δ,s,F),其中
KΓsF=K1×K2=Γ1=(s1,s2)=F1×F2
而对于状态转移的规定如下,对于M1中的每一个转移((q1,a,β),(p1,γ))∈δ1和M2中的每一个状态q2∈K2创建一个转移为(((q1,q2),a,β),((p1,δ(q2,a)),γ))加入到Δ中去。
采用笛卡尔积坐标的方式同时保留两对信息。
2.泵定理
上下文无关文法G的扇出是其规则右边的最大符号数,记作ϕ(G)
引理 3.5.1 G的任意一颗高度为h的语法分析树的结果的长度不超过ϕ(G)h
可以通过归纳法来证明。
定理 3.5.3 设G=(V,Σ,R,S)是一个上下文无关文法。那么,L(G)中任一长度大于ϕ(G)V−Σ的字符串w可以写成w=uvxyz使得v或y不是空串,并且对每一个n≥0,uvnxynz∈L(G)。
来看一个例子
例 3.5.2 L={anbncn:n≥0}不是上下文无关的。
可以令n>31ϕ(G)∣V−Σ∣,于是字符串长度满足要求。
w=anbncn可以表达成w=uvxyz且vy不为空串,分如下两种情况讨论:
- 假设vy中a、b、c三个符号都出现,则v,y中必有一个含有至少两种符号,那么uv2xy2z中字符的排列顺序就不满足语言的要求了,因为会有不同字符交替出现的子串。
- 假设vy中只出现了三种符号中的一种或者两种,那么uv2xy2z中的a、b、c三种符号的个数又不相同,同样产生矛盾。
定理 3.5.4 上下文无关语言在交和补下不是封闭的。