【发布时间】:2015-05-16 16:36:48
【问题描述】:
给定
L1 = {w belongs to {a,b}* | has as many a as b}
定义一个 CFG G 使得 L(G)= L1
在我看来,这些作品应该是正确的答案
1) S → aSa
2) S → bSb
3) S → ε
我的理由是:
L1 包含像 {ab,aabb,aaabbb,...etc} 这样的字符串
现在我有一个疑问:如果我应用上述产品,简而言之:
S → aSa
我应用 1) 所以我得到 S → aSa → aaSaa 我选择 2) 我得到 S → aSa → aaSaa → aabSbaa 然后使用空字符串我得到最终字符串 S → aSa → aaSaa → aabSbaa → aabbaa
现在,也许我错了,但在字符串aabbaaa 的数量不等于 b 的数量
我们将不胜感激任何帮助
约阿希姆
【问题讨论】:
-
无论如何,考虑一下这个不匹配的输入:“abab”。因此,发布的作品不可能是正确的答案。快乐的理论化。
-
如果你认为我的帖子应该被标记为作业..我希望有人能向我解释我在哪里出错以及为什么..
-
每次制作后,
as 和bs 的数量应该相等。您当前的解决方案取决于选择正确的产品,但正如您已经注意到的那样,这不能得到保证。您必须确保每个产品都生成一个有效的单词。 -
考虑这个不匹配的输入:“abab”...那我应该怎么解决这个问题呢?
-
但是如果我开始应用 2) 规则,我会得到 abSba,然后通过 3) 我得到 abba,其中 a 和 b 的数量相等..我说的对吗?
标签: compiler-construction grammar