形式语言与自动机_课件_陈有祺第08章 上下文无关语言的性质.ppt

形式语言与自动机_课件_陈有祺第08章 上下文无关语言的性质.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 上下文无关语言的性质 上下文无关语言的泵引理 上下文无关语言的封闭性质 上下文无关语言的判定算法 上下文无关语言的泵引理 引理8. 1 (上下文无关语言的泵引理) 对每个上下文无关语言L,都存在正整数k,使得对每个z∈L,只要|z|≥k,就可将z划分为5个子串z = uvwxy,这里|vx|≥1,|vwx|≤k,并且对于任何i≥0,都有uviwxiy∈L。 证明 设G是一个Chomsky范式文法,且L(G)=L-{ε}。因为我们考虑的是L中充分长的字符串,所以ε是否属于L是不重要的。由于Chomsky范式文法中产生式的右部都不超过两个符号,所以任何语法分析树都可以看成一棵二元树。例如,在Chomsky范式文法 S→AC|AB A→a B→b C→SB中,对于以aaaabbbb为边缘的语法分析树如图8.1所示。 上下文无关语言的泵引理 上下文无关语言的泵引理 在Chomsky范式文法中,对于较长字符串的语法分析树,其中必然存在较长的路径(树的最大层数 - 1)。为了确切说明着这一事实,将图8.1所示的语法分析树的所有叶结点,都复制到最底层上,得出如图8.2所示的一棵树。 在图8.2中,由S推导出的终结符号串中各符号都出现树的最底层上。根据二元树的性质可知,二元树的第i层上最多有2i-1个结点,那么,若|z|≥2n ,则z的语法分析树不能少于n+2层,即从根到叶至少有一条长度超过n的路径。 上下文无关语言的泵引理 上下文无关语言的泵引理 现假设G中有n个变元,取k=2n ,则当|z|≥k=2n 时,z的语法分析树中至少有一条长度超过n的路径,则在这条路径上的结点数多于n+1个。这些结点除叶子结点对应终结符号外,其余结点都对应着变元,所以在这条路径上出现的变元数多于n个(在图8.1中,从根结点S到最底层的a或b都是这样的路径)。由于G只有n个变元,所以一定有某个变元在这条路径上出现两次,我们从底向顶沿这条路径取同一个变元的前两次出现。在图8.3中,我们用圆圈标出的变元S就是这种出现(注意:不能取变元C,也不能取上层的两个S)。 上下文无关语言的泵引理 上下文无关语言的泵引理 一般来说,设X为在路径上出现两次的变元。将z划分为uvwxy这5个子串,其中w为最下层出现的X推导出来的终结符串,vwx是上层出现的X推导出来的终结符串。例如,在图8.3所示的树中,下层的S推导出的w=ab,上层的S推导出的vwx=aabb。这一情况由图8.4加以标出。 上下文无关语言的泵引理 上下文无关语言的泵引理 从图8.4可以看出,u = aa,v = a,w = ab,x = b,y = bb 。回到一般情形,设T为以上层出现的X为根的子树,t为以下层出现的X为根的子树。对应到图8.4,就是 上下文无关语言的泵引理 由于T和t都是以X为根的语法分析树的子树,故可在原语法分析树中用T代替t而构成一棵新的语法分析树,它的叶结点从左到右排列起来就是uv2wx2y 。这一局部代替结果如图8.5所示。 上下文无关语言的泵引理 显然,用T代替t的过程可以不断重复下去,从而得到以uviwxiy(i≥1)为边缘的语法分析树。反之,在以uvwxy为边缘的语法分析树中,用t代替T,可以得出以uwy为边缘的语法分析树。以在图8.4为例,这一代替结果如在图8.6所示。 由此可见,由z=uvwxy∈L,可以推出对于任意的i≥0,uviwxiy∈L 。另外,因为G是Chomsky范式文法,所以v,x不能全为ε,即|vx|≥1。最后,由于树T的根X是路径上从底向上变元的第一次重复出现,所以从这个X结点到叶结点最长路径的长度不超过n,那么T的叶结点个数不超过2n,即∣vwx∣≤2n =k 。至此引理证完。 上下文无关语言的泵引理 上下文无关语言的泵引理 引理8.2 设L是一个字符串的集合,假设L有下述性质: “对一切正整数k,存在z∈L,|z|≥k,将z划分为5个子串z = uvwxy,这里|vx|≥1,|vwx|≤k,并有某个i≥0,使得uviwxiy L”,则L不是CFL。 和正则语言一样,若想证明某个集合不是CFL,可以设想你和对手“打赌”,你的对手认为L是CFL,你认为不是。双方采取以下步骤进行争论: 你的对手选出一个正整数k。 你选出某个z∈L,且|z|≥k。 你的对手选出子串u,v,w,x,y,使z = uvwxy,且满足|vx|≥1,|vwx|≤k。 你选出某个i≥0。如果uviwxiy L,那么你就赢了,证明了L不是CFL。 上下文无关语言的泵引理 例 8.1 证明L1={ anbncn | n≥0 }不是CFL。 对任意正整数k,取z = akbkck ,显然|z|>k。对于|vx|≥1,|vwx|≤k,将z写成z = uvwxy

文档评论(0)

朋友你好 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档