我有2个问题要问,我也有一些想法。
1)X-Context free grammer(X-CFG),在每条规则的右边都有1个终端或变量。
2)Y-CFG在每条规则的右边都有2个终点或变量。
问题:
a)他们是否生成任何非常规语言?证明。
b)他们是否生成所有常规语言?证明。
数目:
a)我认为对于X-CFG,它们不能生成任何非常规,因为它只能生成有限数量的字符串,因此它们无法生成任何非常规语言。
b)有无数的常规语言,如^ *。我们也不能用CFG生成无限的字符串,所以我们可以说它不能生成所有常规语言。
我是对的吗?
我不知道问题b。
答案 0 :(得分:0)
考虑Y-CFG:
S → aA S → ab A → Sb
这不是满足您的约束并生成非常规语言的Y-CFG吗? a n b n 使得n> = 1
另请参阅this,其中指出:
每个常规语法都是无上下文的,但并非所有无上下文语法都是常规语法。并用一个例子来解释为什么要帮助掌握它。
所以如果我正确地理解了这个问题,我相信你的两个答案都是错误的。
更新
每个常规语法都是无上下文的。那么问题是我们可以使用2个变量定义所有CFG(t是终端,N是非终端):
S → SS S → t S → N S → tN S → Nt
因此,我们可以定义终止的东西,从多个起始字符串中生长出来的东西,在前面生长的东西以及在后面生长的东西。 CFG中的每一个案例都是如此。所以我会说是的,你可以生成所有常规语言。