我正在学习形式语言和可计算性课程,并且在理解语法概念时遇到了一些麻烦。我的一个分配的问题是这样的:Formal Languages - Grammar
取Σ= {A,B},并且设N 一个(W)和正 b(W)表示字符串u在A和B的数量,分别。然后文法G与制作:
S -> SS
S -> λ
S -> aSb
S -> bSa
生成语言L = {瓦特:N 一个(W)= N b(W)}。
1)示例中的语言包含空字符串。修改给定的语法,使其生成L - {λ}。
我在想,我应该修改L的条件下,是这样的:
L = {黑白:ñ一个(W)= N b(W),N 一,n b> 0}
这样,我们指出该字符串永远不会为空。
2)修改语法的例子中,这样它会生成L个∪{一个Ñ b n + 1个:N> = 0}。
- 我不确定如何做到这一点。这是否意味着我在语法中增加了一个条件,如S - > aSbb?
任何关于这两个问题的解释将不胜感激。我仍然试图找出这些语法问题,所以我不确定我的答案。
语言是一组“可接受”或“有效”或“真实”的单词/短语/字符串。语法是可以产生单词/短语/字符串的东西。在问题1中,您正在修改语言'L',但这并不会改变'G'生成空字符串(这是您要求更改的内容)。在你对问题2的解决方案中,你的新语法会产生{w:n_a(w)<= n_b(w)},这是一个比问题更大的方法。因为问题很模糊(“修改语法”并不以任何方式限制你),所以你可以对语法做任何你喜欢的事情。包括完全重写它。 – 2016-02-05 17:25:37
这可能更适合[cs.stackexchange.com](http://cs.stackexchange.com/)。 –