[英]What is the language described by this CFG?
我们可以写出一些语言中最短的字符串来感受一下:
S -> aTb -> ab
S -> aTb -> aabb
S -> SS -> … -> abab
S -> SS -> … -> abaabb
S -> SS -> … -> aabbab
我们注意到,语法生成的唯一字符串将S
每个实例都转换为ab
或aabb
。 此外,我们可以仅使用S -> SS
以中间形式获得任意数量的S
。 因此,这是常规语言(ab + aabb)+
。
证明是通过对字符串长度 n 进行归纳。
基本情况:最短的字符串 ab 和 aabb 在语言(ab + aabb)+
,并由如上所示的语法生成。
归纳假设:语法生成的语言与长度为k
所有字符串的语言(ab + aabb)+
相匹配。
归纳步骤:我们必须证明由次高长度的语法生成的字符串在该语言中,而次高长度的语言中的字符串由该语法生成。 注意:语法只能生成偶数字符串,而语言(ab + aabb)+
只包含偶数字符串,所以真正的下一个最高步骤是大于k
的最小偶数。
我们知道长度为k
字符串的语言和语法匹配。 设 X 为长度为 k 的语言的所有字符串的集合,Y 为长度为 k - 2 的语言的所有字符串的集合。 然后,语法通过修改中的字符串的派生生成一组字符串 X' X 使用生产S -> SS
一次额外的时间,然后为刚刚引入的S
实例选择S -> aTb -> ab
。 该语法还通过修改 Y 中字符串的派生来生成一组字符串 Y' 以使用产生式S -> SS
一次额外的时间,然后为刚刚引入的S
实例选择S -> aTb -> aabb
。 这些相同的字符串匹配正则表达式,因为 X 和 Y 中的字符串匹配,而 X' 和 Y' 只是添加了 ab 或 aabb 的那些字符串,这是 Kleene 星允许的。
类似地,匹配正则表达式的长度为 k 和 k-2 的字符串可以在末尾添加 ab 或 aabb(感谢 Kleene 星)以获得所有匹配的长度为 k+2 的字符串。 但是这些也必须由语法生成,因为前缀是由语法生成的,我们有生产(上面概述)允许我们向我们的派生字符串引入额外的 ab 或 aabb。
换句话说,语言是所有字符串的集合,这些字符串是以任意顺序连接任意数量的字符串 ab 和 aabb 的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.