形式语言与自动机04章 Chomsky文法体系及语言之间的运算-1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实际上,G1是一个无关文法。也
是一个相关文法。 即:任意一个无关文法都可以改 造为等价的一个相关文法,所以, 任意一个无关语言也是一个相关 语言。
结论4-4 Chomsky的文法体系
对于文法G根据对产生式的不同限制,
Chomsky将文法分为四类: 文法G是3型文法,即右线性文法; 文法G是2型文法,即无关文法; 文法G是1型文法,即相关文法; 文法G是0型文法,文法对产生式没 有特殊限制;
如果对于任意P,均有|| ≦||成
立, 则称G为1型文法,或上下文有关文法 (CSG)。对应的L(G)叫作1型语言或者上 下文有关语言(CSL)。
如果对于任意P,均有||
≦||
且V成立, 则称G为2型文法,或上下文无关文 法(CFG)。对应的L(G)叫作2型语言 或者上下文无关语言(CFL)。
4.2
Chomsky的文法体系另一种描述 目前,国内普遍对Chomsky的文法体 系存在另外一种描述方式,该方式限 制了一般的空串产生式的使用。
对于短语结构文法G=(∑,V,S,P): G称为0型文法,或短语结构文法
(PSG)。对应的L(G)叫作0型语言或 者短语结构语言(PSL)、递归可枚举 集。
定义4-11
设文法G=(∑,V,S,P)
,如果S不出现 在任何产生式的右部(即S的仅仅负责推 导的开始),则
如果G是CSG(CFG,RG),则
G=(∑,V,S,P∪{S}) 仍然是CSG(CFG,RG);G产生 的语言仍然为CSL(CFL,RL)。
定理4-13
如果L是CSL(
现在任何产生式的右边; 则称文法G为上下文相关文法CSG(简称 相关文法)。
如果一个语言能由一个相关文法产生,
则称这个语言是上下文相关语言(简 称相关语言)。
根据以上的两个定义,可以得到
一个无关的文法不一定是相关的文法,
主要是空串产生式的情况。
某些文法不满足上述3类文法的要求; S→AB1 AB→0
如果对于任意P,均具有
形式Aw, AwB, 其中,A,BV, w∑+, 则称G为3型文法,也可称为正则文 法(RG)或正规文法。对应的L(G)叫作 3型语言,也可称为正则语言或正规 语言(RL)。
四类文法和对应的四类语言之间都有
包含关系。
定义:形如的产生式叫作空产生式,
一元运算:L1→β(L1);若对于Ψ的 任意语言L1和L2,α(L1,L2)也是Ψ 的语言,则称Ψ对于运算α是封闭的; 若对于Ψ的任意语言L1,β(L1)也是Ψ 的语言,则称Ψ对于运算β是封闭的。
定理4-17 每个i(i=0,1,2,3)型语言对联
合,连接和迭代运算是封闭的。 证明:
该文法不是右线性文法,不是无关文法,
也不是相关文法,只能属于短语结构文 法。
Chomsky将文法分为四类,关系为: 任意一个右线性文法本身是一个无关文
法;本身不一定是相关文法; 任意一个无关文法本身不一定是相关文 法;
设文法G=(∑,V,S,P),则判断G是哪
类文法的方法如下: 1、G是短语结构文法; 2、如果所有产生式都有左边部分的长度 小于等于右边部分长度,那么G是上下文 有关文法;允许有S→ε,且S不出现在任 何产生式的右边
4.1.1
定义4-1 右线性文法
对于文法G=(∑,V,S,P),若它的每
个产生式都是下列形式之一: A→xB或者A→y; 其中:A,B∈V,x∈∑*,y∈∑+; 则文法G是右线性文法(也称为正则文 法RG)。
如果一个语言L可以由右线性文法产
生,则该语言是右线性语言。
定义4-2 上下文无关文法
CFL ,RL),则
L∪{} 仍然是CSL ( CFL ,RL) 。
定理4-14
如果L是CSL(
CFL ,RL),则
L-{} 仍然是CSL ( CFL ,RL) 。
证明
即可。 需要注意的是:S不允许出现在产 生式的右边。
只需要增加或减少S
4.3 语言之间的运算及运算的封 闭性(略)
根据空串定理:
G是一个上下文无关文法,存在一般的空串产 生式A→ε,则存在另一个上下文无关文法G1 使得: ⑴L(G)=L(G1); ⑵若εL(G),则G1中没有任何空串产生式; ⑶若ε∈L(G),则G′中有一个空串产生式S’→ε, 且S’不出现在G1的其它任何产生式的右边; (S’是G1的开始符号)
第四章 Chomsky文法体系及语言之间的运算
本章介绍
Chomsky的文法体系 语言的运算和运算的封闭性(略) 正则集
4.1 Chomsky的文法体系 文法的分类及文法之间的关系 短语结构文法PSG=(∑,V,S,P), 产生式的形式是v→w, 其中:v∈(∑UV)+,且至少包含一个 非终结符; w∈(∑ U V)* 。
也可叫作产生式。 根据文法分类的定义,在RG, CFG, CSG中,都不能含有空产生式,所以任 何RL,CFL,CSL中都不包含空语句。
空语句在一个语言中的存在并不影
响该语言有穷描述的存在,因为除了 为生成空语句外,空产生式可以不 被用于语言中其他任何句子的推导中。 如果允许RG,CFG,CSG中含有空产 生式,也就允许CSL,CFL,RL中包含 空语句。
关语言; 一个上下文无关语言是不是一个上下文 相关语言呢?
从第二章可知:一个无关文法 ①没有任何空串产生式,或者 ②仅有一个空串产生式S→ε,且S不
出现在任何产生式的右边 则该文法本身就是一个相关文法;它 产生的无关语言也就是一个相关语言;
那么,如果一个无关文法中有一
般的空串产生式(如A→ε,A是 一个非终结符,且不是开始符 号), 它产生的无关语言是不是相关语 言呢?
产生复杂语言的方法之一是对简单的
语言进行语言的运算。
4.3.1 语言之间的基本运算
定义4-15 语言的运算的定义 若语言L1和L2是同一字母表∑上的两个语言, 定义 语言L1和L2的联合运算为: L1UL2={w|w∈L1或者w∈L2} 语言L1和L2的连接运算为: L1L2={w|w=w1w2,w1∈L1,w2∈L2}
P5={ S→S1S2 }U P1 U P2,若G1和 G2是上下文无关文法, 则G5也是上 下文无关文法;且S1=>*w1, S2=>*w2,S=>S1S2=>* w1w2,所 以 L(G5)=L(G1)L(G2);所以2型语言 对连接封闭。
若G1和G2是0型或者1型文法,文法
G5可能会有问题,
∑″, 令∑′={x′|x∈∑}, ∑″={x″|x∈∑},将 P1中的x用相应的x′代替,得到P′,将 P2中的x用相应的x″代替,得到P″, 构造G6=(∑,V U ∑′U ∑″,S, P6),其中P6为:
对于右线性文法,S→S1S2不适应,
构造G7=(∑,V,S1,P7),其中 P7为: {A→bB| A→bB在P1中}U{ A→bS2 |A→b在P1中}
3、如果如果所有产生式的左边部分
都是单个非终极符号,那么G是上下 文无关文法; 4、如果所有产生式的右边部分都是 以终极符号开始、含有至多一个非终 极符号、如果有非终极符号则出现在 最右边,那么G是正则文法。
4.1.2语言之间的关系
下面讨论语言之间的关系。 任意一个右线性语言文法本身是一个无
对于文法G,如果对于G中的任意产
生式ν→ω,而ν只是一个非终结符, 即 A→ω,A∈V,ω∈(∑ U V)*,则 称文法G为上下文无关文法CFG(简 称无关文法)。
如果一个语言能由一个无关文法产生,
则称这个语言是上下文无关语言(简 称无关语言)。
定义4-3 上下文相关文法
对于文法G,如果G的每个产生式形如 u→v,且0<|u|≤|v|; 但若ε∈L(G),则允许有S→ε,且S不出
串发生了串道,即S1产生的串可能将 S2产生的串作为下文,S2产生的串 可能将S1产生的串作为上文; { S→S1S2 } U P1′ U P2″U {x′→x|x∈∑}U{x″→x |x∈∑} 则 L(G6)=L(G1)L(G2);所以0型和1 型语言对连接封闭。
为解决这个问题,将∑复制为∑′和
语言的分类是根据产生该语言的文法的
分类进行的。 若一个语言L由某个i型文法产生,则它 是i型语言。i=0,1,2,3。
定义4-5 文法分类
用Ψi(语言类)的概念来定义所有的i
型语言;对于0≤i≤3 Ψ i ={L ∑*|L=L(G) ,G是i型文法}。
定理4-6
语言分类定理 Chomsky将语言分为四类,且有包含关 系(真子集关系): Ψ3СΨ2 Ψ1 Ψ0
语言L的迭代运算(或者闭包运算)
为L* {w|w=w1w2…wm, wi∈L,m≥0 } 即 L* =ULn 对n≥0
其中:
L10={ε} L11 =L1 L1n+1=ห้องสมุดไป่ตู้L1L1n
对n≥1
注意: 语言L1={an|n>0},L2={bn|n>0},则
L1L2={anbm|n,m>0}; L1L2≠ {anbn|n>0}。
封闭性:如果任意的、属于某一语言
类的语言在某一特定运算下所得到的 结果仍然是该类语言,则称该语言类 对此运算具有封闭性(closure property)。
有效封闭性:给定一个语言类的若干个语 言的描述。如果存在一个算法,它可以构 造出这些语言在给定运算下所获得的运算 结果的相应形式的语言描述,则称此语言 类对相应的运算是有效封闭的, 并称此语言类对相应的运算具有有效封闭 性(valid closure property)。
如果G1和G2是右线性文法,则G3不
是,构造文法G4=(∑,V,S,P4), 其中P4为: {S→w1|S1→w1在P1中}U {S→w2|S2→w2在P2中}U P1U P2; 则G4是右线性文法,且 L(G4)=L(G1)UL(G2)。
对于连接运算: 构造G5=(∑,V,S,P5),其中
语言的封闭性可以用于证明某些语言
属于某类语言,以及可以从简单的某 类语言构造复杂的某类语言。
语言之间的运算的封闭性 定义4-16 语言的对运算的封闭定义 给定字母表∑,Ψ是∑上的一类语言,语 言L1,L2СΨ,令α是语言上的二元运算:
4.3.2
(L1,L2)→α(L1,L2);β是语言上的
已知同一字母表∑
上的语言L1和L2, 产生L1的文法G1=(∑,V1,S1, P1),产生L2的文法G2=(∑,V2, S2,P2),假定V1∩V2=Ф,S! ∈V1,S!∈V2,设置 V=V1UV2U{S}。
对于联合运算
构造G3=(∑,V,S,P3),其中
P3={ S→S1} U{ S→S2}U P1 U P2, 对于i=0,1,2, 若G1和G2是i型文 法,则G3也是;从S开始,使用 S→S1,得到L(G1),或者使用S→S2, 得到L(G2),显然, L(G3)=L(G1)UL(G2),所以,对于i=0, 1,2,Ψi对于联合封闭。
(注意:若P1中有空串产生式,则要
先消除空串产生式) L(G7)=L(G1)L(G2);所以3型语言对 连接封闭。
对于迭代运算: 考虑文法 S→ε|S′ S′→S1|S1S′ 则S推导出ε和S1n(n≥1)。
构造G8=(∑,V1U{S,S′},S,P8), 其中P8为: { S→ε|S′} U {S′→S1|S1S′} U P1 若G1是上下文无关文法,则G8也是上下 文无关文法;且S=>*L(G1)*,所以2型语 言对迭代封闭。若
例如:文法G1为:S1→b,文法G2
为:S2→c,bS2→bb;则L(G1)={b}, L(G2)={c};L1L2={bc};而对于, S=>S1S2=>bS2=>bc;或 S=>S1S2=>bS2=>bb;即文法G5产 生的语言为{bc,bb},它不是语言L1和 L2的连接。
该问题产生的原因是S1和S2产生的